PHP的$PHP_SELF使用问题

在做留言分页时用了这个函数,当前为首页时IE的地址栏显示如下(目前在本地个人的微机测试):http://localhost/guestbook/guestbook.php... 在做留言分页时用了这个函数,当前为首页时IE的地址栏显示如下(目前在本地个人的微机测试):
http://localhost/guestbook/guestbook.php?offset=0
但在IE的地址栏中将offset=0改为offset=sdf(任意什么字符),按“转到“按钮时就会在页面上提示如下信息:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in d:\usr\www\html\guestbook\guestbook.php on line 120
并且留言内容不能显示!!这属于哪类问题?
这种情况在地址栏中输入特殊代码时网站是否会被攻击??
如何解决此类???感谢!!
除了屏蔽程序输出的错误的方法之外,能否在地址栏输入[虽然有这种习惯的人不多,但主要是防有人捣乱]不合要求的参数时,就转到首页[其它页也行]???
展开
 我来答
人称赫哥
推荐于2017-10-07 · TA获得超过500个赞
知道小有建树答主
回答量:476
采纳率:0%
帮助的人:589万
展开全部
$PHP_SELF 表示当前的php文件
这是php的几个系统的变量 比如你的a.php文件在 /www/g/f/
那么如果你只是 echo $PHP_SELF 那么就会得到 /www/g/f/a.php
另外php这样系统函数还有不少 比如 $REMOTE_ADDR 表示获取客户端的ip
这些东西在 phpinfo()中都可以看到
注意这里这些字母都是大写的
你说的下面那个问题是由于那个offset变量的值影响到了 内部的sql语句
打个比方说 里面的代码是这样写的
$sql="select * from table"
if($offset) $sql=$sql."order by ".$offset; //如果offset有值那么就按照$offset的字段名排序
当offset为0时 用默认的排序
这里比如你的表中有一个name字段 你在超链接中可以这样下 ?offset=name
但是当人为的输入了 offset=asd的时候 满足$offset 不为空的条件 所以真个sql就变成了 select * from table order by asd
因为asd 字段在数据库中没有 所以这个时候就会出现sql执行的错误提示
当然这种提示会暴露出一些错误 这方便在调试的时候检查代码
但是也带来了一定的安全隐患 所以php代码在执行的时候你可以选择两种处理错误的的方式
一是:在函数前加上@符号可以完全屏蔽程序输出的错误
二是:使用or die 比如很常见的 在mysql的连接函数
mysql_connect("localhost","root","") or die("无法连接到数据库服务器")
所以你上面的问题就是只要你找到那个mysql_fetch_row(...)改为@mysql_fetch_row(...) 或者在后面加上 or die("所提供的查询结果不是一个有效的mysql返回结果")
我也是一个php爱好者 大家共同学习共同进步
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式