2013-10-22 20 views
-1

這裏是我的整個索引頁面的代碼,其中包括一個註冊和一個登錄。由於某種原因,註冊部分工作正常,並且正確插入。然而,登錄部分不起作用,因爲每當我在SELECT * FROM上調用$ queryrun(mysql_query($ query))時,它都不起作用。爲什麼我的SELECT * FROM不能工作?

<?php 

require('includes/dbconnect.php'); 

$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$email = $_POST['email']; 
$password = $_POST['password']; 
$password = md5($password); 

$logemail = $_POST['logemail']; 
$logpassword = $_POST['logpassword']; 
$logpassword = md5($logpassword); 

// Register Script 

if (isset($firstname) && !empty($firstname) && !empty($lastname) && !empty($email) && !empty($password)) { 
$query = "INSERT INTO users VALUES('', '$firstname', '$lastname', '$email', '', 'm', '9', '$password', 'bio'"; 
    $queryrun = mysql_query($query); 
} else { 
echo 'Please fill out all of the form fields'; 
} 

// Login Script 

if (!empty($logemail) && !empty($logpassword)){ 
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password'"; 


$queryrun = mysql_query($query); 

while ($row = mysql_fetch_assoc($queryrun)) { 
    $logemail = $row['logemail']; 

} 
echo $logemail; 
$numrows = mysql_num_rows($query); 
if ($numrows > 0){ 
    echo 'User exists'; 
} else { 
    echo 'User does not exist'; 
} 

} else { 

} 

?> 

<html> 
<head> 
<title></title> 

</head> 
<body> 

<form action="index.php" method="POST"> 

Firstname: <input type="text" name="firstname" /><br /> 
Lastname: <input type="text" name="lastname" /><Br /> 
Email: <input type="text" name="email" /><br /> 
Password: <input type="password" name="password" /><br /> 
<input type="submit" value="Submit" /> 

</form> 

<br /><hr /> 

<br /> 
Login:<br /> 
<form action="index.php" method="POST"> 
Email:<input type="text" name="logemail" /><br /> 
Password: <input type="password" name="logpassword" /><br /> 
<input type="submit" value="Log in" /><br /> 
</form> 

</body> 
</html> 

到數據庫的連接是好的,因爲寄存器部分代碼的工作,它只是登錄代碼返回什麼,並說,用戶不會注意到存在,當用戶實際上確實存在

+6

[請不要用'mysql_ *在新代碼'功能(http://bit.ly/phpmsql) 。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[紅框](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 **您也可以[SQL注入](http://stackoverflow.com/q/60174)** –

+1

將密碼存儲在數據庫中並不是一種好的安全措施。相反,您應該計算密碼的散列並存儲散列。 – AllInOne

+0

是否有意在您的登錄查詢中使用'$ logemail'和'$ logpassword'? –

回答

1

您的形式字段是$logemail而您的mysql語句使用$email

得到這個工作看起來像你想:

$query = "SELECT * FROM users WHERE email = '$logemail' AND password = '$logpassword'"; 

但約翰孔德提到有顯著的安全問題。

1

您使用的是什麼版本的PHP?這個擴展從PHP 5.5.0開始已被棄用,你應該使用mysqli或PDO。

if (!empty($logemail) && !empty($logpassword)){ 
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password'"; 

你檢查$ logemail和$ logpassword但把$ email和$密碼查詢字符串...也可以使用{}在字符串PHP變量。它有助於保持字符串連接從越來越混亂,你可以在字符串中使用關聯數組

echo "This is my string and this is the number {$number}. this is the value in my array: {$arrayvar["something"]}."; 
相關問題