设为首页 收藏本站
查看: 342|回复: 0

[经验分享] php基础知识(1)-魔术引用

[复制链接]

尚未签到

发表于 2017-3-28 15:22:49 | 显示全部楼层 |阅读模式
php基础知识-魔术引用
示例代码下载页http://xieye.iteye.com/blog/1336095(在附件)
魔术引用是指:服务器对一些字符做自动转换,以方便程序员的做法。
来源:最开始,php的设计者为了方便程序员将表单数据添加到数据库,在配置文件中加了一个设置,当选项打开时,魔术引用启用,当选项关闭时,魔术引用不启用。
php.ini大约441行
magic_quotes_gpc = Off
注释是; Magic quotes for incoming GET/POST/Cookie data.
注释表明为on时会对进入服务器的get/post/cookie数据做自动转换。
1)addslashes函数
介绍魔术引用之前,先介绍addslashes函数
该函数返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。
默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
例子 1. addslashes() 示例
http://localhost/command/peixun/magicquote/1.php

<?php
$str = "Is your name O'reilly?";
// 输出:Is your name O\'reilly?
echo addslashes($str);


2)测试配置选项magic_quotes_gpc
首先确保magic_quotes_gpc = On,如果是off或0,则需要修改,并重启apache服务器。
http://localhost/command/peixun/magicquote/2.php

<?php
require_once('Public/CommandLine.php');
$isget = ($_SERVER['REQUEST_METHOD'] == 'GET') ? 1 : 0;
if ($isget) {
$html = <<<longs
<html>   
<body>
<form method="post">
请输入字符:<input type="text" name="name1" value=''>
</form>
</body>
</html>   
longs;
echo $html;
} else {
echo $_POST['name1'];
}

然后修改magic_quotes_gpc = Off,并重启apache服务器,再次测试程序。
最后要说明的是,这些都是学习概念用的,实际的大部分应用中,都将魔术引用关闭,手动的进行转换。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-356689-1-1.html 上篇帖子: without sudo;install imagemagick and php extension 下篇帖子: php调用MSSQL存储过程的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表