2017-02-11 52 views
1
驗證電子郵件爲特定的用戶名

所以,我試圖驗證根據數據庫的用戶名和電子郵件用戶在HTML表單中輸入是否正確使用PHP和MySQL

我有一個數據庫,稱爲檢驗和表所謂的信息有兩個字段: 姓名和電子郵件。

這是代碼

<html> 
<body> 

<form action="conn.php" method="post"> 
Name: <input type="text" name="name"><br> 
E-mail: <input type="text" name="email"><br> 
<input type="submit"> 
</form> 

</body> 
</html> 


    <?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname="testing"; 
$name=$_POST['name']; 
$mail=$_POST['email']; 
// Create connection 
$conn1 = new mysqli($servername, $username, $password, $dbname); 
$query='select email from info where name= "$name"'; 
$results = mysqli_query($conn1,$query); 
$row= mysqli_fetch_assoc($results); 
echo $row["email"]; 
$email=$row["email"]; 
if($mail==$email){ 
    echo " correct values"; 
} 
else 
    echo " incorrect"; 
//echo $name, $email; 
// Check connection 
//if ($conn1->connect_error) { 
// die("Connection failed: " . $conn1->connect_error); 
//} 
//echo "Connected successfully"; 
$conn1->close(); 
?> 

,但結果總是不正確。我在文本框中輸入的值與數據庫中的值匹配。

+0

第一:不要試圖插值用戶 - 直接輸入到SQL中查詢,使用佔位符('?'),否則就會開放SQL注入攻擊。如果您使用過佔位符,則查詢實際上已經起作用 - 因爲您的代碼支持您選擇文字'$ name'作爲名稱,而不是輸入的名稱。 –

回答

1

minnor問題是與單/雙quotes.Update此行

$query='select email from info where name= "$name"'; 

$query="select email from info where name= '$name'"; 

問候:)

0

你應該使用佔位符,代碼將是這樣的:

$query = 'SELECT emal FROM info WHERE name = ?'; 
$stmt = mysqli_stmt_prepare($conn1, $query); 
mysqli_stmt_bind_params($stmt, 's', $name); 
$results = mysqli_stmt_execute($stmt);` 

爲了獲得更好的可讀代碼,請閱讀面向對象的mysqli接口,或者更好地使用PDO。

0

或者您可以使用字符串連接像

更新此行

$query='select email from info where name= "$name"'; 

$query='select email from info where name= "'.$name.'" '; 

$query="select email from info where name= '".$name."' ";