include/require 就相当于, 把conn.php的代码,复制粘贴,代替 include那一行.

注意: include/require 包含进来的文件必须要加<?php ?> 因为在包含时,首先理解文件内容是普通字符串, 碰到<?php ?> 标签时,才去解释

在win下,路径可以用正斜线,也可以反斜线,而在linux下,则只能用正斜线 /因此: 用正斜线 /

 

include 是包含的意思 在找不到包含文件时,会报warning, 然后试着往下运行.
require 是必须的意思 在找不到包含文件时,会报fatal error, 然后不再往下运行.

include/require(_once) ,即 _once的区别
加once后,则在包含时,系统会进行判断
如果已经包含,则不会再次包含.

include require的取舍: 比如,是系统配置,缺少了,网站不让运行,自然用require 如果,是某一段统计程序,少了对网站只是少统计人数罢了,不是必须要,可以用include

include/require  --> _once 则是效率上区别
加_once虽然系统帮你考虑了只加载一次,但系统的判断卖到效率降低. 因此,更应该在开发之初,就把目录结构整理好.尽量不要用_once的情况.

array_walk_recursive ,这是递归处理数组单元的函数
函数本身只有一个功能------递归的把数组每个单元走一遍
至于你怎么处理这个数组,自己写一个函数,
然后 array_walk_recursive会带着你写的函数把数组单元走一遍.

function abc(&$v,$k)

{     $v = addslashes($v);

}

array_walk_recursive(&$_GET,'abc');

print_r($_GET);  // 到此处,第二次转义,转多了.

注:此处另外定义了一个函数abc,为什么呢?
这是因为array_walk_recursive(&$_GET,'abc');函数第二个参数默认的传两个参数进来,这就是所谓的函数回调问题,请注意。

PHP中,有一个魔术引号的概念,如何打开?
答:在PHP.ini中,magic_quotes_gpc=On;重启apache即可

如何判断魔术引号没有开启?
答: 用magic_quotes_gpc()来判断

合理的判断及转义
if(!get_magic_quotes_gpc()) {  // 如果魔术引号没开
    function _addslashes(&$v,$k) {
        $v = addslashes($v);
    }
    array_walk_recursive(&$_GET,'_addslashes');
    array_walk_recursive(&$_POST,'_addslashes');
    array_walk_recursive(&$_COOKIE,'_addslashes');
}

我们在开发中, 为了程序的规范性,把报错级别,调的比较高 NOTICE级别的也报出来,有助于我们快速定位错误和代码规范
但是,在产品上线后,网站运营过程中,就不宜报这么多错. 1:这种错误给客户的印象不好 2:在报错时,把网站的绝对路径,如D:\www\1015都报出来了. 增大被攻击的风险
因此,在网站上线后,就应该让报错级别低,少报错甚至不报.

1: php.ini里修改error_reporting 选项

error_reporting = E_ALL & ~E_NOTICE ; 除提示外,显示所有的错误。。。  

例子:

error_reporting = E_ALL & ~E_NOTICE ; 显示所有的错误,除了提醒
error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; 仅显示编译时致命性错误
error_reporting=E_ERROR :只会报告致命性错误

php程序中,对error_reporting进行设置写法如下: error_reporting(E_ALL);


2: 可以在php页面里,用error_reporting()函数来修改

// 在开发中,报错级别高一点 // 在上线产品中,报错级别要低

define('DEBUG',true);  // 在开发时,声明一个DEBUG模式
if(defined('DEBUG')) { //检测到处于开发模式
    error_reporting(E_ALL);
} else {
    error_reporting(0);
}

echo $a+$b; // notice不报
echo 3/0;   // warning报出来
echo dsafdsa(); // fatal报出来

 

==========建库建表语句=====

create database tieba charset utf8;
use tieba;

create table thread (
tid int not null auto_increment primary key,
username varchar(20) not null default '',
title varchar(30) not null default '',
content text,
pubtime int unsigned not null default 0
)engine myisam charset utf8;

create table reply (
rid int not null auto_increment primary key,
tid int not null default 0,
username varchar(20) not null default '',
content text,
reptime int unsigned not null default 0
)engine myisam charset utf8;