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;
浙公网安备 33010602011771号