获取 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'];
它将抛出错误,因为它正在被分配并试图匹配条件语句。
我已经这样做了好几次了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'];
它将抛出错误,因为它正在被分配并试图匹配条件语句。