PHP中stripslashes和addslashes的使用
向mysql写入数据时,如:mysql_query("update tableName set `title`='goaler's blog'");
这个时候,PHP将会报错,ASP中处理时也一样。
因为数据库对单引号过敏。
ASP中需要进行replace("'","''",str);
而PHP中则可以直接使用addslashes。
ASP问题这里暂不考虑,本文要说的是PHP相关的stripslashes和addslashes。
PHP考虑到其安全性,引入了magic_quotes_gpc = On/Off 这个参数,可以在不做任何处理的情况下就直接将含有单引号的数据插入数据库中。如果magic_quotes_gpc = Off,需要考虑单引号的问题了,不能一味地信任其运行环境。
当magic_quotes_gpc = On时,使用addslashes()处理后的数据在数据库中将以\'形式保存,如果此时直接输出的话,就会发现比自己原先输入的内容多了个(反斜杠)\,这时就需要用到stripslashes()了,它能把addslashes()处理时自动加上去的(反斜杠)\去掉。这跟区别于str_replace("\", "",$str)不同。
当magic_quotes_gpc = Off时,使用addslashes()处理后的数据在数据库中将以'形式保存,不存在上面说的有\的问题,addslashes()起到插入数据不出错的作用,如果此时直接输出的话,数据正常。不需要再用stripslashes()。
addslashes()和stripslashes()正好是相反的,addslashes()加个(反斜杠)\,stripslashes()去个(反斜杠)\。
当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()
当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。
既然有了分析,做程序时要怎么办呢?根据以上两种情况,可得:
不管magic_quotes_gpc是On还是Off,咱添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。
如何判断On还是Off呢?用get_magic_quotes_gpc()。
相关文档:
1、到微软官方去下载新的驱动,下载地址如下:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9
官方文档有描述:
Refer to the documentation that is installed with the driver for a description of the new features in this ......
apache安装,mysql安装,php5直接解压,均放在D:\www下。
目录结构为:
D:\www\apache2
D:\www\mysql
D:\www\php5
将php5\php.ini-dist复制为php.ini,把需要用到的组件将前面的;去掉。
如
extension=php_mysql.dll
extension=php_gd2.dll
在apache2的conf/httpd.conf文件中加
LoadFile D:/www/php5/php5ts.dll
......
/*************十进制大整数相乘****************/
/*********
* $A,$B均为字符串
*/
function multipication ($A,$B){
$sResult = "";
  ......
PHP访问MySQL数据库函数简介
1. 进行数据库连接
连接数据库服务器,就是客户端向己运行的数据库服务器发出连接请求,
成功以后就可以对数据库进行相应操作,由于用户的权限不同,所能进
行的操作也不一样。PHP提供了一系列MySQL ......
1.定位,明确方向。
2.定位后就去尝试。不要再谈能不能做。
以上是好友给我的建议,很中肯。
第一点,我需要确定自己今后发展的方向,不能再像现在这样什么都去学,结果什么都一无所成。
第二点,制定计划后就应该马上着手去执行,遇到挫折时不要急着说,我熬夜了多久多久,还是没学会啊,而是静心分析,然后对症下药, ......