1

我正在尝试使用 PHP !isset 和一个函数来检查从 HTML 表单提交的任何字段是否为空,如果是,则终止(退出)脚本。只有我目前奇怪的代码会直接跳过我的 !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;
}
4

5 回答 5

2

isset 仅检查变量是否已设置且不为空,而不检查它是否为空。尝试类似:

if (!$Name) {fieldsmissing(); }
if (!$Email) {fieldsmissing(); }
if (!$Subject) {fieldsmissing(); }
if (!$Message) {fieldsmissing(); }
于 2013-10-27T18:17:21.107 回答
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...
于 2013-10-27T18:18:05.200 回答
0
php5 -r '$x="";if(isset($x)){print "isset\n";}'

返回:

isset

isset 为空字符串提供真值。

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

于 2013-10-27T18:18:12.247 回答
0

$Name = $_POST["Name"];$_POST["Name"]如果表格中不可用,将导致警告。

您可能应该这样做:

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

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

高温高压

于 2013-10-27T18:22:40.680 回答
0

不要isset用来检查是否已填写,因为它将返回true空字符串!

而是使用empty()函数。

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

此外,您不必使用;after }

于 2013-10-27T18:24:13.590 回答