我正在尝试使用PHP!isset和一个函数来检查从HTML表单提交的任何字段是否为空,如果是,则kill(退出)脚本。只有我目前奇怪的代码跳过我的!issets并继续。 +对任何可以解决这个问题的人来说。 :)
// Get fields from HTML form
$Name = $_POST["Name"];
$Email = $_POST["Email"];
$Subject = $_POST["Subject"];
$Message = $_POST["Message"];
// Check to make sure no fields are empty
// If any fields are empty dumps script to fieldsmissing()
// If all fields are filled, continued to write actual email
if (!isset($Name)) {fieldsmissing(); };
if (!isset($Email)) {fieldsmissing(); };
if (!isset($Subject)) {fieldsmissing(); };
if (!isset($Message)) {fieldsmissing(); };
function fieldsmissing () {
exit;
}
答案 0 :(得分:2)
isset只是检查变量是否设置而不是null,而不是它是否为空。尝试类似:
if (!$Name) {fieldsmissing(); }
if (!$Email) {fieldsmissing(); }
if (!$Subject) {fieldsmissing(); }
if (!$Message) {fieldsmissing(); }
答案 1 :(得分:1)
function fieldsmissing () { // to declare before calling it
exit;
}
// Get fields from HTML form
if (!isset($_POST["Name"])) {fieldsmissing(); };
if (!isset($_POST["Email"])) {fieldsmissing(); };
if (!isset($_POST["Subject"])) {fieldsmissing(); };
if (!isset($_POST["Message"])) {fieldsmissing(); };
$Name = $_POST["Name"];
$Email = $_POST["Email"];
$Subject = $_POST["Subject"];
$Message = $_POST["Message"];
// then use $Name etc...
答案 2 :(得分:0)
php5 -r '$x="";if(isset($x)){print "isset\n";}'
返回:
isset
对于空字符串,isset为true。
empty()
可能更有用。 php.net/empty
答案 3 :(得分:0)
$Name = $_POST["Name"];
,则 $_POST["Name"]
会发出警告。
你应该这样做:
$Name = ( isset( $_POST["Name"] ) ? $_POST["Name"] : '' );
if ( empty( $Name ) )
{
fieldsmissing();
}
HTH
答案 4 :(得分:0)
请勿使用isset
检查字段是否已填写,因为它会在空字符串上返回true
!
而是使用empty()
函数。
if (!isset($_POST['Name']) || empty($_POST['Name'])) {fieldsmissing(); }
此外,您不必在;
之后使用}
。