关于PHP的一些记录

命运给你一个比别人低的起点,是想告诉你,让你用你的一生去奋斗出一个绝地反击的故事

关于ini_set(“display_error”, false);和error_reporting(E_ALL);

1.在用php做网站开发的时候,为防止用户看到错误信息,一般性会在php.ini里设置:display_errors = Off;
2.在开发的时候,有时候需要打开错误信息。这时候,可以在php文件里设置:

1
2
ini_set("display_errors","On");
error_reporting(E_ALL);

不过有时候即使这样设置了,还是无法显示php里的语法错误。这是由于php文件的语法错误导致该文件根本没有被执行,所以不会显示错误信息。

3.error_reporting(“E_ALL”)ini_set(“display_errors”, “on”)的区别

后者的权限大于前者,后者是OFF的话,前者就算是E-ALL也没用。

4.一般在不想显示错误的时候会在php文件中加上

1
2
ini_set("display_error", false);
error_reporting(0);

5.关于各种错误报告

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// 关闭错误报告
error_reporting(0);

// 报告 runtime 错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// 报告所有错误
error_reporting(E_ALL);

// 等同 error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);

// 报告 E_NOTICE 之外的所有错误
error_reporting(E_ALL & ~E_NOTICE);
?>

addslashes()

1.addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。包括', ", \, NULL
该函数一般用于存储在数据库中的字符串以及数据库查询语句准备字符串。

2.默认地,PHP 对所有的 GET、POSTCOOKIE 数据自动运行 addslashes()。所以一般不需要对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

3.get_magic_quotes_gpc() 获取当前 magic_quotes_gpc 的配置选项设置

  • magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
  • magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0

4.stripslashes() 返回一个去除转义反斜线后的字符串

5.在数据库为MySQL时,通常还会有mysql_real_escape_string()函数。用于转义SQL语句中使用的字符串中的特殊字符。包括:\x00,\n,\r,\,',",\x1a

6.与预防数据库攻击相关的一般方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 如果不是数字则加引号
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}

$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

// 进行安全的 SQL
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = "SELECT * FROM users WHERE
user=$user AND password=$pwd";

mysql_query($sql);

mysql_close($con);
?>

intval()函数

intval()函数:用于获取变量的整数值。语法为:int intval ( mixed $var [, int $base = 10 ] )

1.intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval()不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

2.成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。
3.最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -21474836482147483647

4.64 位系统上,最大带符号的 integer 值是 9223372036854775807。

5.字符串有可能返回 0,虽然取决于字符串最左侧的字符。

0%