【问题标题】:Undefined index inside a form表单内未定义的索引
【发布时间】:2017-10-16 16:07:03
【问题描述】:

我在表单上遇到未定义的索引错误,我尝试isset 变量,但没有,我已经全局化了所有我能找到的变量,但我找不到解决方案,我确定它是只是一些简单的事情。 但是我尝试过的一切都给了我一个 500 错误.. 问题在于'{$_GET['XID']}' 我试过'{(isset($_GET['XID']))}' 并得到一个500 错误,我试过'{(!isset($_GET['XID']))}' 我也得到一个500 错误..

我哪里出错了?

这是代码的sn-p,这是我得到的错误消息:

注意:未定义索引:C:\wamp64\www\messages.php 中的 XID 在第 1039 行调用堆栈:0.0108 551240 1. {main}() C:\wamp64\www\messages.php:0 0.2587 1146104 2 .mail_compose() C:\wamp64\www\messages.php:50 (虽然我很确定,但会在这个 sn-p 的第 8 行。)

片段:

function mail_compose()
{
    global $pl, $connection, $_SESSION, $q_ry, $_GET, $_POST, $cev, $thismess;
    echo "<center><table width = '75%' border = '0' cellspacing = '0' class = 'forum'>
                          <tr bgcolor = '#999999'><td colspan=2><center><b>Send a message</b></td></tr>
                          <form name = 'reply' method = 'post' action = 'messages.php?action=send'><tr>
                          <td width = '25%' bgcolor = '#E3E3E3'><b>Users ID:</b></td>
                          <td bgcolor=#E3E3E3><input type = 'text' name = 'to' size = '5' maxlength = '10' value = '{$_GET['XID']}'> 
                          <i><font size=2>(Example. 1)</font></i></td>
                          </tr><tr>
                          <td width=25% bgcolor=#E3E3E3><b>Subject:</b></td>
                          <td bgcolor=#E3E3E3><input type = 'text' name = 'subject' size = '50' maxlength = '50' value=''>
                          <i><font size=2>(Example. Hello)</font></i></td>
                          </tr><tr><td bgcolor = '#E3E3E3' colspan = '2' align = 'center'>
                          <a onClick=\"addwithEase(' :) ')\"><img src='images/smilies/smile.gif'></a>
                          <a onClick=\"addwithEase(' :P ')\"><img src='images/smilies/tounge.gif'></a>
                          <a onClick=\"addwithEase(' :( ')\"><img src='images/smilies/sad.gif'></a>
                          <a onClick=\"addwithEase(' :o ')\"><img src='images/smilies/shocked.gif'></a>
                          <a onClick=\"addwithEase(' :@ ')\"><img src='images/smilies/angry.gif'></a>
                          <a onClick=\"addwithEase(' o_O ')\"><img src='images/smilies/sarcy.gif'></a>
                          <a onClick=\"addwithEase(' :s ')\"><img src='images/smilies/confused.gif'></a>
                          <a onClick=\"addwithEase(' ;) ')\"><img src='images/smilies/wink.gif'></a>
                          <a onClick=\"addwithEase(' :* ')\"><img src='images/smilies/cool.gif'></a>
                          <a onClick=\"addwithEase(' :|o ')\"><img src='images/smilies/psyc.gif'></a>
                          <a onClick=\"addwithEase(' :| ')\"><img src='images/smilies/dissapointed.gif'></a>
                          <a onClick=\"addwithEase(' :D ')\"><img src='images/smilies/grin.gif'></a>
                          <a onClick=\"addwithEase(' xD ')\"><img src='images/smilies/histericle.gif'></a>
                          <a onClick=\"addwithEase(' :L ')\"><img src='images/smilies/laughing.gif'></a>
                          <a onClick=\"addwithEase(' xP ')\"><img src='images/smilies/histericletounge.gif'></a>
                          </td></tr>
                          <tr>
                          <td bgcolor = '#E3E3E3'><b>Message:</b></td>
                          <td width = '90%' bgcolor = '#E3E3E3'>
                          <textarea name = 'message' rows = '10' cols = '75%'></textarea></td>
                          </tr><tr bgcolor = '#E3E3E3'>
                          <td colspan = '2'><center><input type = 'submit' value = 'Send'></center></td>
                          </tr></form></table></center><script language=\"JavaScript\" type=\"text/javascript\">
                          function addwithEase(smileToAdd)
                          {
                           document.reply.message.value += smileToAdd;document.reply.message.focus();
                          }
                          </script>
                          <hr width = '75%'/>&gt; <a href='messages.php'>Back</a><hr width = '75%'/>";
}

【问题讨论】:

  • mysqli 有什么关系?您加载此页面时使用的 URL 是什么?
  • 检查 $_GET 中的撇号。如果我在编辑器中复制您的代码,它们会有所不同,因此 value = '{$GET[' 就是我得到的。此外,由于使用 echo 语句调用 $_GET,您可以直接执行 $_GET[XID]。看起来像是报价问题:php.net/manual/en/language.types.string.php
  • 谢谢,我刚上床睡觉,明天早上我会在电脑上试一试。URL 是reunited-city.com/messages.php?action=new 我认为signup.php 没有向数据库发布任何内容。 . 其实想起来不多真的是老实说
  • @bjmag94 下面的答案应该可以解决这个问题。我以为你问的是为什么索引未定义,而不是未定义时如何处理它。

标签: php undefined


【解决方案1】:

你不能将 if 语句放在字符串文字的中间。

在外面做测试。

$xid = ""; # This is the default
if (isset($_GET['XID'])) {
    $html_safe_xid = htmlspecialchars($_GET['XID']);
}
echo "<center> etc etc etc $html_safe_xid etc etc etc";

【讨论】:

【解决方案2】:

据我了解,问题在于将数据传递给 get 方法脚本。不幸的是,您没有指定如何传递给字符串函数,因此我假设例如? XID = 测试。如果是这种情况,您应该注意方法名称中的大小写 - 如果它是 '{$ _GET [' XID ']}' 并使用 xid = test 传递字符串,那么您将有未定义的索引:XID。正确的应该是? XID = 测试。要排除获取方法名称对大写、小写字母的敏感性,请为小写方法名称添加第二个 isset 条件,并获取在 echo 中显示的变量。

enter code here

$xid = '';

if(isset($_GET['XID']))
    $xid = $_GET['XID'];
elseif(isset($_GET['xid']))
    $xid = $_GET['xid'];

echo "<td bgcolor=#E3E3E3><input type = 'text' name = 'to' size = '5' maxlength = '10' value = '$xid'>";

【讨论】:

  • 谢谢,辛苦了,现在是时候修复所有查询了
  • 如果我的回答帮助解决了问题,请加分
  • 抱歉我还不能,因为我没有 15 声望,否则我会的,谢谢
猜你喜欢
  • 1970-01-01
  • 2015-09-29
  • 2014-02-15
  • 1970-01-01
  • 2021-10-06
  • 2016-07-01
  • 2013-10-21
  • 2010-10-19
  • 1970-01-01
相关资源
最近更新 更多