2012-08-15 75 views
3

我有一個用戶提交的註冊表單,數據是使用isset($ _ POST)發送的,以查看是否有任何內容被放入表單輸入框。如果沒有,則將其發送給其他人,然後將其發送到將用戶返回到註冊表單以完成一些缺失表單的功能。由於某些原因,它不能正常工作。isset在表單上無法正常工作

這裏是我的檢查代碼-------

function returnBack(){ 

    header("Location:register.php"); 
    exit; 

} 

if(isset($_POST['myusername'])) 
{ 
    $myusername = $_POST['myusername']; 
} 
else 
{ 
    returnBack(); 
} 
if(isset($_POST['mypassword'])) { 
    $mypassword=$_POST['mypassword']; 

} 
else{ 

    returnBack(); 
} 
if(isset($_POST['myemail'])) { 

    $myemail=$_POST['myemail']; 
} 
else{ 

    returnBack(); 
} 
if(isset($_POST['myname'])) { 

    $myname=$_POST['myname']; 
} 
else{ 

    returnBack(); 
} 
if(isset($_POST['mylastname'])){ 

    $mylastname=$_POST['mylastname']; 

} 
else{ 

    returnBack(); 
} 
/////////////////////////////////////////////////////////////*******CONNECT TO SERVER ******************************************************************/ 
try { 
    # MySQL with PDO_MYSQL 
    $DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password); 
    $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

} 
catch(PDOException $e) { 
    echo "I'm sorry, I'm afraid I can't do that."; 
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND); 
} 
////////////////////////////////////////////////////////////***********INSERT REGISTER DATA INTO DB ***************************************************************/ 
//$encrypt_password = md5($mypassword); 

$insertdata = $DBH->prepare("INSERT INTO members (username, password, email, firstname, lastname) VALUES ('$myusername','$mypassword','$myemail','$myname','$mylastname')"); 
$insertdata->execute(); 
echo "success"; 

$DBH = null; 

這裏是表格部分---------------------- --------

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<form name="register" method="post" action="insertnewmem.php"> 
<td> 
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
<tr> 
<td colspan="3"><strong>Registration Form </strong></td> 
</tr> 
<tr> 
<td width="78">Username</td> 
<td width="6">:</td> 
<td width="294"><input name="myusername" type="text" id="myusername" ></td> 
</tr> 
<tr> 
<td>Password</td> 
<td>:</td> 
<td><input name="mypassword" type="text" id="mypassword"></td> 
</tr> 
<tr> 
<td>Email</td> 
<td>:</td> 
<td><input name="myemail" type="text" id="myemail"></td> 
</tr> 
<tr> 
<td>First Name</td> 
<td>:</td> 
<td><input name="myname" type="text" id="myname"></td> 
</tr> 
<tr> 
<td>Last Name</td> 
<td>:</td> 
<td><input name="mylastname" type="text" id="mylastname"></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td>&nbsp;</td> 
<td><input type="submit" name="Submit" value="Register"></td> 
</tr> 
</table> 
</td> 
</form> 
</tr> 
</table> 

UPDATED ---------------------------------- ------------

對不起,它跳過了函數returnBack(),只是插入到db,即使表格沒有正確填充。

+2

「不正常工作」是什麼意思?它錯誤嗎?給你一個空白頁面?沒做什麼?做點什麼,但不是你期望的? – andrewsi 2012-08-15 21:15:40

+0

什麼工作不正常?它只是不重定向,還是沒有獲取POST數據...? – 2012-08-15 21:17:30

+0

對不起------它忽略了(isset)並跳過了函數 – 2012-08-15 21:19:01

回答

7

嘗試!empty()而不是isset()。只有當存在除null,false,0或空字符串之外的其他值時,纔會評估爲true。您可能有空字符串被提交。

+0

謝謝你工作完美! – 2012-08-15 21:21:07

+0

@DavidBiga沒問題。如果解決方案爲您工作,請將答案標記爲正確。 – Ray 2012-08-15 21:24:13

4

其他人發佈了答案,但讓我解釋爲什麼。 isset()檢查是否設置了該值,而不是該值是什麼,但只是如果它有一個值。當您提交表單時,您將傳遞一個空字符串作爲每個輸入的值。

通常我檢查這個使用:

if(isset($_POST['variable']) && $_POST['variable'] !== "") 

,第一部分可以確保變量存在(這樣第二個條件不會引發錯誤),第二個條件可以確保該字符串不爲空。

+0

哦,非常感謝!我現在明白了@ Ray的工作和更少的代碼:) – 2012-08-15 21:23:18

+0

Yah當然..我不知道如果變量不存在(@ _POST ['變量']從未設置),@ Ray的函數將工作,這就是爲什麼我通常在檢查變量值之前檢查isset(),但它可能已經內置了? – trevorkavanaugh 2012-08-15 21:28:01

+0

@trevorkavanaugh empty()首先檢查是否設置了變量。 – Ray 2012-08-16 03:52:41