【问题标题】:Another Undefined Index (this one's defined though)另一个未定义的索引(虽然这个已经定义)
【发布时间】:2010-06-19 14:28:54
【问题描述】:

好的,PHP 正在抛出这个错误(在日志中),这对应用程序非常不利。

PHP Notice:  Undefined index: sessid in methods.php on line 7

是的,我知道这个错误意味着什么,但我无法弄清楚为什么它显然是定义的并且说它是未定义的。这是methods.php中的相关代码

$sessid = mysql_real_escape_string($_REQUEST['sessid']);

现在,在您说“不,它未定义!!!”之前,这是对 methods.php 的 POST 请求(是的,我也知道 $_REQUEST “不可信”) .

method=r&room=general&sessid=d0sma94yw4r4cdckv2ufhb&qid=1276957562382

如您所见,sessid 显然已定义并被发送到methods.php。我只是想我也会在这里输入相关查询。

mysql_query('UPDATE active SET time=\''.$timestamp.'\' WHERE sessid=\''.$sessid.'\'');

是的,时间也定义为:

$time = time();

那么,这里有什么问题?

【问题讨论】:

  • 你可以试试$_GET["sessid"] 吗?您是否使用任何可能取消设置 $_REQUEST 的库或框架? var_dump($_REQUEST); 说什么?
  • var_dumparray(1) { ["sessid"]=> string(21) "d0sma94yw4r4cdckv2ufhb" }
  • 如果是 var_dump(),为什么 method,room & qid 键消失了?
  • 好吧,这有点奇怪,但我通过应用程序又做了一个var_dump,这次不仅仅是基于 URL 的,这是结果(@987654335 的明显未定义@变量).array(4) { ["method"]=> string(1) "r" ["room"]=> string(7) "general" ["sessid"]=> string(0) "" ["qid"]=> string(13) "1276959603731" }

标签: php mysql variables indexing


【解决方案1】:

除了拼写错误等,如果您的版本 >= 5.3.0,您可能需要检查 request_order(或 variables_order,如果 request_order 为空)ini-setting 的设置。如果在这两个中都没有设置“P”,则 $_POST 数组将不在 $_REQUEST 中(甚至没有设置它,“P”不在variables_order afaik 中)。见:http://www.php.net/manual/en/ini.core.php#ini.request-order

如果这两个没问题,我会说你在其他地方有一个逻辑错误,var_dump() 需要检查$_POST$_REQUEST 超全局变量。

【讨论】:

  • 我还请求和处理了其他变量,并且它们被正确处理。只是sessid
  • 您是否启用了register_globals,您是否在某处使用(并且可能取消设置)$sessid 变量?
  • register_globals 已关闭,$sessid 已通过验证,但这发生在它到达向methods.php 发送数据的页面之前。
  • 已解决。我在提交sessid 的表单中有错字,将方法设置为$_POST 有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
相关资源
最近更新 更多