我之前已多次这样做了。但是现在无法弄清楚它为什么会发生。我的$ _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属性之后,它应该显示错误。但它没有显示任何内容。提交后从我的浏览器看到此图像
带有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>
答案 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']
获取所选值