如何解决PHP empty错误消息
| 我刚刚开始学习,并整理了以下表格。我的困惑是,当我使用空验证用户是否选择或输入了任何信息时,代码会在下面生成错误。 我注意到我是否有以下代码行if(empty($gender)) {
$errormessage[2] = \"Please select your gender\";
}
如
if(empty($_POST[\"gender\"])) {
$errormessage[2] = \"Please select your gender\";
}
和
if(empty($gender)) {
$errormessage[2] = \"Please select your gender\";
}
如
if(empty($_POST[\"gender\"])) {
$errormessage[2] = \"Please select your gender\";
}
我没有看到错误消息。我认为由于性别和媒体表单元素分别是单选按钮和复选框的代码行$ _POST而生成了错误消息。但是,如果我想在顶部初始化所有变量,那么最好的方法是什么?
/* <?php
if(isset($_POST[\"submit\"])) {
$fname = $_POST[\"fname\"];
$lname = $_POST[\"lname\"];
$gender = $_POST[\"gender\"];
$age = $_POST[\"age\"];
$address = $_POST[\"address\"];
$media = $_POST[\'media\'];
$errormessage = array();
if(empty($fname)) {
$errormessage[0] = \"Please enter your first name\";
}
if(empty($lname)) {
$errormessage[1] = \"Please enter your last name\";
}
if(empty($gender)) {
$errormessage[2] = \"Please select your gender\";
}
if(empty($age)) {
$errormessage[3] = \"Please select your age\";
}
if(empty($address)) {
$errormessage[4] = \"Please enter your address\";
}
if(empty($media)) {
$errormessage = \"Please select the type of media\";
}
}
?>
<html>
<head>
<title>Sample Registration</title>
</head>
<body>
<h2>Sample registration</h4>
<form name=\"registration\" method=\"post\" action=\"registration.php\">
<div>
First Name: <br />
<input type=\"text\" name=\"fname\" value=\"\">
</div>
<div>
Last Name: <br />
<input type=\"text\" name=\"lname\" value=\"\">
</div>
<div>
Gender: <br />
male<input type=\"radio\" name=\"gender\" value=\"male\">
female<input type=\"radio\" name=\"gender\" value=\"female\">
</div>
<div>
Age: <br />
<select name=\"age\">
<option value=\"\">Please select your age</option>
<option value=\"18-25\">18-25</option>
<option value=\"26-33\">26-33</option>
</select>
</div>
<div>
Address: <br />
<textarea name=\"address\" cols=\"10\" rows=\"10\"></textarea>
</div>
<div>
Sign-me up: <br />
<input type=\"checkbox\" name=\"media[\'newsletter\']\" value=\"newsletter\"> newsletter
<input type=\"checkbox\" name=\"media[\'specials\']\" value=\"specials\"> specials
<input type=\"checkbox\" name=\"media[\'events\']\" value=\"events\"> events
<div>
<input type=\"submit\" name=\"submit\" value=\"submit\">
</div>
</form>
</body>
</html>
*/
/* 错误信息 */
! ) Notice: Undefined index: gender in C:\\Program Files\\EasyPHP-5.3.5.0\\www\\registration.php on line 7
Call Stack
# Time Memory Function Location
1 0.0004 341792 {main}( ) ..\\registration.php:0
Dump $_SERVER
$_SERVER[\'REMOTE_ADDR\'] =
string \'127.0.0.1\' (length=9)
$_SERVER[\'REQUEST_METHOD\'] =
string \'POST\' (length=4)
$_SERVER[\'REQUEST_URI\'] =
string \'/registration.php\' (length=17)
Variables in local scope (#1)
$address =
Undefined
$age =
Undefined
$errormessage =
Undefined
$errormsg =
Undefined
$fname =
string \'\' (length=0)
$gender =
Undefined
$lname =
string \'\' (length=0)
$media =
Undefined
( ! ) Notice: Undefined index: media in C:\\Program Files\\EasyPHP-5.3.5.0\\www\\registration.php on line 10
Call Stack
# Time Memory Function Location
1 0.0004 341792 {main}( ) ..\\registration.php:0
Variables in local scope (#1)
$address =
string \'\' (length=0)
$age =
string \'\' (length=0)
$errormessage =
Undefined
$errormsg =
Undefined
$fname =
string \'\' (length=0)
$gender =
null
$lname =
string \'\' (length=0)
$media =
Undefined
解决方法
在访问它们之前,您需要检查HTTP POST请求中是否实际设置了those6ѭ和
$_POST[\'media\']
变量;初始化每个$_POST
var的更好解决方案可能是这样的:
$fname = isset( $_POST[\'fname\'] ) ? $_POST[\'fname\'] : \'\';
上面的三元分配等效于对您感兴趣的每个$_POST
变量运行以下逻辑表达式:
if( isset( $_POST[\'fname\'] ) ) {
$fname = $_POST[\'fname\'];
} else {
$fname = \'\';
}
如果您实现了这两种方法,那么在if13ѭ上运行empty()
时,您不会收到通知;此外,如果未设置$_POST[\'gender\']
,则empty()
仍会按照您期望的方式运行。它有点冗长,但是要重写示例,您可以尝试:
if( isset( $_POST[\"submit\"] ) ) {
$fname = isset( $_POST[\'fname\'] ) ? $_POST[\"fname\"] : \'\';
$lname = isset( $_POST[\'lname\'] ) ? $_POST[\"lname\"] : \'\';
$gender = isset( $_POST[\'gender\'] ) ? $_POST[\"gender\"] : \'\';
$age = isset( $_POST[\'age\'] ) ? $_POST[\"age\"] : \'\';
$address = isset( $_POST[\'address\'] ) ? $_POST[\"address\"] : \'\';
$media = isset( $_POST[\'media\'] ) ? $_POST[\'media\'] : \'\';
$errormessage = array();
if( empty( $fname ) )
$errormessage[] = \"Please enter your first name\";
if( empty( $lname ) )
$errormessage[] = \"Please enter your last name\";
if( empty( $gender ) )
$errormessage[] = \"Please select your gender\";
if( empty( $age ) )
$errormessage[] = \"Please select your age\";
if( empty( $address ) )
$errormessage[] = \"Please enter your address\";
if( empty( $media ) )
$errormessage[] = \"Please select the type of media\";
}
当然,如果要在SQL上下文中使用数据,则需要清除数据,但这至少可以使您避免遇到的错误。
如果您有很多这样的变量-或经常重复执行此任务-您可以考虑将其汇总为一个函数!
,尝试使用!isset()
代替empty()
。
附带说明一下,如果不存在$_POST
值,则分配变量的方式将创建warning
条通知。如果您想删除这些通知,请使用@Ryan的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。