获取html标记和$ _POST []变量中名称属性不匹配的错误报告

时间:2015-01-28 16:19:35

标签: php post drop-down-menu

我之前已多次这样做了。但是现在无法弄清楚它为什么会发生。我的$ _POST ['用户']字段用于获取选择数据遗憾的是从下拉列表中没有工作。它仍然是未定义的。如果有人惹麻烦并找出我所犯的错误,那将会很棒

<?php
     if(isset($_POST['text']) && isset($_POST['user'])){
     $text=$_POST['text'];
     $selected=$_POST['user'];
     echo $selected;
     echo $text;
     }
?>

 <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"  >
 <input type='text' name='text'>
<select name="users" id="users"  name='user' />
   <option value="test" style="color:#ccc;">Select user</option>
   <option value="user1">1</option>
   <option value="user2">2</option>
   <option value="user3">3</option>   
</select> 
<input type='submit' value='submit' name='submit'>
</form>

编辑:

在select标签和$ _POST []中提交不同的name属性之后,它应该显示错误。但它没有显示任何内容。提交后从我的浏览器看到此图像

enter image description here

带有error_reporting的代码

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

     if(isset($_POST['text']) && isset($_POST['users'])){
     $text=$_POST['text'];
    $selected=$_POST['users'];
    echo $selected;
     echo $text;
     }
?>

 <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"  >
 <input type='text' name='text'>
<select  id="users"  name='user' />
   <option value="test" style="color:#ccc;">Select user</option>
   <option value="user1">1</option>
   <option value="user2">2</option>
   <option value="user3">3</option>   
</select> 
<input type='submit' value='submit' name='submit'>
</form>

2 个答案:

答案 0 :(得分:3)

首先,您正在重复name="users" id="users" name='user'中的“名称”属性。

删除name="users",因为您引用了$_POST['user']

  

非常感谢。我错了。但是有没有办法得到这种类型的错误报告.Php没有给出任何?

答:肯定有。在打开<?php标记后立即将error reporting添加到文件顶部 error_reporting(E_ALL); ini_set('display_errors', 1);会发出未定义索引的信号。

它没有给出任何错误,因为默认情况下您的服务器没有设置为抛出错误。

使用以下内容,然后使用其余代码。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。


另外,正如评论中所述:

  

htmlspecialchars()添加到POST数据以确保安全。


修改

它不会抛出错误的原因是,即使名称属性不存在,也是在POST变量中检查将触发错误的内容。例如$text=$_POST['text'];即可,但$text=$_POST['texts'];会触发错误。

条件陈述也起作用。

由于条件语句

中的users匹配POST
if(isset($_POST['text']) && isset($_POST['users']))

$selected=$_POST['users'];不会抛出错误。

如果条件陈述不同

if(isset($_POST['text']) && isset($_POST['user']))

然后如果使用isset($_POST['user'])$selected=$_POST['users'];而不是$selected=$_POST['user'];,则会抛出错误,因为它已被分配并尝试匹配条件语句。

答案 1 :(得分:1)

您使用不正确的索引获取下拉选择值。

使用$_POST['users']获取所选值