2013-10-27 154 views
1

的问题我正在尝试使用PHP!isset和函数来检查从HTML表单提交的任何字段是否为空,并且如果是这样,请kill(退出)脚本。只有我目前奇怪的代码跳过我的!issets并继续。 +的任何人谁可以解决这个问题。 :)使用PHP!isset和函数

// 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; 
} 

回答

2

isset只是检查是否设置了变量而不是空值,而不是空值。尝试是这样的:

if (!$Name) {fieldsmissing(); } 
if (!$Email) {fieldsmissing(); } 
if (!$Subject) {fieldsmissing(); } 
if (!$Message) {fieldsmissing(); } 
+0

+1对于完美的答案有负面评价。这个答案实际上解释了比投票更多的答案 – Onimusha

+0

@ElonThan我的错误。我已经纠正了答案。 – AlliterativeAlice

+0

@Alliterative爱丽丝感谢您的帮助!皮埃尔的功能在称之为想法之前也是有效的。一旦我有代表,我会给你们+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... 
0
php5 -r '$x="";if(isset($x)){print "isset\n";}' 

回报:

isset 

isset为空字符串给出正确的。

empty()可以更有用。 php.net/empty

0

$Name = $_POST["Name"];如果$_POST["Name"]不在表单中可用,将会发出警告。

你或许应该这样做,而不是:

$Name = (isset($_POST["Name"]) ? $_POST["Name"] : '');

if (empty($Name)) { fieldsmissing(); }

HTH

0

不要使用isset检查是否提起装满,因为它会在空字符串返回true

改为使用empty()函数。

if (!isset($_POST['Name']) || empty($_POST['Name'])) {fieldsmissing(); } 

而且,你不必}后使用;