2014-04-27 43 views
0

爲什麼我的isset和/或空函數不工作?每次我單擊html表單上的提交按鈕時,即使表單爲空,它也會插入到數據庫中。有人可以提供給我一個徹底的解釋,我做錯了什麼,我該如何解決它?Isset和空函數不起作用

<?php 
$host = "localhost"; 
$user = "root"; 
$db_password = ""; 
$database = "listings_db"; 

$link = mysqli_connect($host, $user, $db_password, $database) or die("Error " . mysqli_error($link)); 

     if (isset 
    ($_POST['user_firstname'], 
     $_POST['user_lastname'], 
     $_POST['user_email'], 
     $_POST['user_password'], 
    $_POST['user_type'])) 
{ 
$firstname = $_POST['user_firstname']; 
$lastname = $_POST['user_lastname']; 
$email = $_POST['user_email']; 
$password = $_POST['user_password']; 
$type = $_POST['user_type']; 

$errors = array(); 
if(empty($firstname) 
|| empty($lastname) 
|| empty($email) 
|| empty($email) 
|| empty($password) 
|| empty($type)) 
{$errors [] = '*All fields are required!';}  
else { 
if(filter_var($email, FILTER_VALIDATE_EMAIL) === false) {$errors[] = '*Please enter a valid email address!' ;} 

if(strlen($firstname) > 25) {$errors[] = '*The email address you entered contains too many characters!';} 
if(strlen($lastname) > 25) {$errors[] = '*The first name you entered contains too many characters!';} 
if(strlen($email) > 40) {$errors[] = '*The last name you entered contains too many characters!';} 
if(strlen($password) > 40) {$errors[] = '*The password you entered contains too many characters!';} 
if(strlen($type) != true){$errors[] = '*Please select an account type!';} 
    } 

$firstname = $_POST['user_firstname']; 
$lastname = $_POST['user_lastname']; 
$email = $_POST['user_email']; 
$password = md5($_POST['user_password']); 
$type = $_POST['user_type']; 

$firstname = mysqli_real_escape_string($link, $firstname); 
$lastname = mysqli_real_escape_string($link, $lastname); 
$email = mysqli_real_escape_string($link, $email); 
$password = mysqli_real_escape_string($link, $password); 
$type = mysqli_real_escape_string($link, $type); 


$query = mysqli_query($link, "INSERT INTO users (user_id, user_firstname, user_lastname, user_email, user_password) VALUES ('', '$firstname', '$lastname', '$email', '$password')"); 
} 
?> 

編輯:下面是形式:

<form action="" method="post"> 
<p>First Name: <br><input type="text" name="user_firstname" size="25" maxlength="25"/></p> 
<p>Last Name: <br><input type="text" name="user_lastname" size="25" maxlength="25"/></p> 
<p>Email Address: <br><input type="email" id="email" name="user_email" size="25" maxlength="40"/><p> 
<p>Create a Password: <br><input type="password" name="user_password" size="25" maxlength="40"/></p> 
<p>Account Type: <br> <select name="user_type"> 
<option value="seller" selected>Seller</option> 
<option value="Buyer">Buyer </option> 
</select> 


+1

張貼您的表格代碼也 –

+0

沒什麼,它是空白的。 – d13t

回答

1

That's因爲你的表單字段總是被提交。無論他們是否充滿任何內容,或不。

因此,您不需要檢查它們是否已設置,因爲它們將始終設置。你需要檢查,如果他們不是空的。要做到這一點,你可以使用空PHP構建:

if (!empty($_POST['user_firstname']) 
    && !empty($_POST['user_lastname']) 
    && !empty($_POST['user_email']) 
    && !empty($_POST['user_password']) 
    && !empty($_POST['user_type'])) 
{ 
    // TODO 
} 
0

打印您的$ _POST數組第一,並與你的表單元素名進行匹配屬性在數據庫中插入之前。