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

get error report for name attribute mismatch in html tag and $_POST[] variable

我已经这样做了好几次了before.But 无法弄清楚为什么会发生这种情况 now.My $_POST['user'] 旨在获得 select 的字段不幸的是,下拉列表中的离子数据不存在 working.It 仍然存在 undefined.It 如果有人不厌其烦地指出我所犯的错误,那就太好了

<?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[] 中使用不同的名称属性提交后,它应该显示一个 error.But 它显示 nothing.see 我浏览器中的这张图片提交

代码为 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>

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

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

首先,你在name="users" id="users" name='user'中重复了"name"属性。

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

thanks a lot.My mistake though.But is there a way to get this type of error report.Php didn't give any?

A: 当然有。在打开的 <?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

旁注:错误报告只能在试运行中进行,绝不能在生产中进行。


此外,如评论中所述:

add htmlspecialchars() to POST datas for security.


编辑:

它不抛出错误的原因是即使名称属性不存在,也是您在 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']; 它将抛出错误,因为它正在被分配并试图匹配条件语句。