2011-10-16 39 views
0

比較我有一個表格,用戶填寫和操作頁面不言而喻基本上只是把一切post_variables到session_variables和將查詢電子郵件地址的數據庫可能匹配的電子郵件ADR用戶提交。如果發現匹配的行數等於一個或多個,我想引導用戶到一個頁面,告訴他們電子郵件已被使用,否則他們將直接到另一個PHP頁面,所有的信息將被寫入數據庫。PHP - 循環,用戶輸入對錶

出於某種原因,它不工作 - PHP(或MySQL)沒有找到任何匹配,即使有在同一個地址表中的行。

希望有人能爲我指出這一點。我在LAMP上使用php 5.0。

這裏是形式爲「行動」頁面上的代碼:

 <?PHP 
session_start(); 

$dbhost = 'somewhere.net'; 
$dbuser = 'someUser'; 
$dbpass = 'pass' 
$dbname = 'medrecruit'; 


$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (mysql_error($conn)); 
mysql_select_db($dbname) or die(mysql_error($conn)); 

if (isset($_POST['submit'])) { 
$_SESSION['name'] = mysql_real_escape_string($_POST['name']); 
$_SESSION['smacker'] = mysql_real_escape_string($_POST['smacker']); 
$_SESSION['password'] = mysql_real_escape_string($_POST['confpassword']); 
$_SESSION['surname'] = mysql_real_escape_string($_POST['surname']); 
$_SESSION['gender'] = $_POST['gender']; 
$_SESSION['age'] = mysql_real_escape_string($_POST['age']); 
$_SESSION['nationality'] = mysql_real_escape_string($_POST['nationality']); 
$_SESSION['email'] = mysql_real_escape_string($_POST['email']); 
$_SESSION['telnr'] = mysql_real_escape_string($_POST['telnr']); 
$_SESSION['special'] = mysql_real_escape_string($_POST['special']); 
$_SESSION['qf1'] = mysql_real_escape_string($_POST['qf1']); 
$_SESSION['qf2'] = mysql_real_escape_string($_POST['qf2']); 
$_SESSION['qf3'] = mysql_real_escape_string($_POST['qf3']); 
$_SESSION['qf4'] = mysql_real_escape_string($_POST['qf4']); 
$_SESSION['qf5'] = mysql_real_escape_string($_POST['qf5']); 
$_SESSION['qf6'] = mysql_real_escape_string($_POST['qf6']); 
$_SESSION['qf7'] = mysql_real_escape_string($_POST['qf7']); 
$_SESSION['qf8'] = mysql_real_escape_string($_POST['qf8']); 
$_SESSION['qf9'] = mysql_real_escape_string($_POST['qf9']); 
$_SESSION['qf10'] = mysql_real_escape_string($_POST['qf10']); 
$_SESSION['cv'] = mysql_real_escape_string($_POST['cv']); 
$_SESSION['activationkey'] = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand(); 

$newmail = mysql_real_escape_string($_POST['email']); 


$query = "SELECT * FROM employee WHERE email = '$newmail'"; 
    $result = mysql_query($query); 
    if(mysql_num_rows($result) >= 1){ 
    header("Location: noemail.html"); 
    } 
    header("Location: insert.php"); 

} 
?> 

回答

2

你周圍有錯誤的方式你的報價在這裏,作爲一個開始:

$query = 'SELECT * FROM employee WHERE email = ".$_POST["email"]."'; 

單引號( ')不是插值的。雙引號(')是。另外,你不應該直接在你的查詢中使用$_POST["email"] - 這是一個安全漏洞,可能會被濫用。我假設你知道這一點,因爲你已經在使用$newemail來保存轉義版本。試試這個:

$query = "SELECT * FROM employee WHERE email = '$newmail'"; 
+0

我更新了代碼,但仍然沒有工作。我認爲在提取結果並比較電子郵件地址的地方出了問題.. – Max

+0

看起來像這回到前面:'if(mysql_num_rows($ result)> = 1){header(「Location:noemail.html」); '如果有一個或多個結果,你會去'noemail.html'。 –

+0

我明白你的意思了,但它應該是這樣的。 nomail.html是告訴用戶他的地址已被使用的頁面。 – Max