关于PHP的$PHP_SELF的问题

语句<ahref=$PHP_SELF?page=0&$queryString>分页函数的语句,页面可以正常跳转,但是会提示相应错误PHPNotice:Undefinedi... 语句<a href=$PHP_SELF?page=0&$queryString>
分页函数的语句,页面可以正常跳转,但是会提示相应错误
PHP Notice: Undefined index: page in D:\my web\index.php on line 101 PHP Notice: Undefined variable: PHP_SELF in D:\my web\index.php on line 88 就是说PHP_SELF 和 page 都被认为没有定义,如何解决 急!
展开
 我来答
阳光上的桥
2007-07-02 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65815
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
有时候$PHP_SELF确实没有定义,这个与INI设置有关,用下面的语句肯定能解决问题:

<?php
echo <<<END

<a href="$_SERVER['PHP_SELF']?page=0&$queryString">

END;
?>
Jupytor
2007-07-05 · TA获得超过431个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:156万
展开全部
我也遇到过相同的问题

在文件的第一行加入这样一句就可以了,

<?error_reporting(7);?>

如果想看到错误提示的话可以改成

<?error_reporting(2047);?>

如果不想看到所有错误提示的话可以改成

<?error_reporting(0);?>

但建意还是改成7最合适
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
darhli
2007-07-03 · TA获得超过1123个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:0
展开全部
以上说的是更改服务器的方法,也可以在php第一行加以下代码,同样可以屏蔽本页的notice
<?
error_reporting(E_ALL ^ E_NOTICE);

///
///
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lovemaggie20
2007-07-03 · TA获得超过137个赞
知道答主
回答量:95
采纳率:0%
帮助的人:66.6万
展开全部
这个并不是错误,是通知,一般都把notice屏蔽掉的,这东西开着又没用
打开php.ini文件,找到error_reporting 这项,前面没有分号的那个,
改成error_reporting = E_ALL & ~E_NOTICE,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mfboy
2007-07-16 · 超过37用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:0
展开全部
在前面加上

$PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

这个是 Discuz! 里面定义 $PHP_SELF 里面的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人称赫哥
2007-07-03 · 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爱好者 大家共同学习共同进步
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式