2016-05-06 61 views
-4

我有這個問題,我有一個註冊表單,我正在使用PHP和MySQL。問題是,即使所有數據都有效,它也不會將信息輸入到數據庫中。我知道數據庫已連接,因爲我可以在我的網站的登錄部分使用它。我認爲這是電子郵件和用戶名交叉檢查數據庫的問題,但我不確定。花括號的位置還是更復雜?我的php沒有進入sql數據庫的值,我的代碼有什麼問題?

<?php 
    include_once('db.php'); 

    $name = mysql_real_escape_string($_POST["name"]); 
    $username = mysql_real_escape_string(($_POST["username"])); 
    $password = mysql_real_escape_string(md5 ($_POST["password"])); 
    $repeatpassword = mysql_real_escape_string($_POST['repeatpassword']); 
    $email = mysql_real_escape_string($_POST["email"]); 
    $confirmemail = mysql_real_escape_string($_POST['confirmemail']); 

    // the below if statement is for when the user does NOT have JS enabled in   their browser 
    if(empty($name) || empty($username) || empty($password) || empty($email)){ 
    echo "(*) indicate that the fields are mandatory."; 
    exit(); 
    } 

    if($email == $confirmemail){ 
    exit(); 
    }else{ 
    echo "Your Email address does not match."; 
    } 

    if($email == $repeatpassword){ 
    exit(); 
    }else{ 
    echo "Your Passwords do not match."; 
    exit(); 
} 

    $res = mysql_query("SELECT username FROM users WHERE username='$username'"); 
    $row = mysql_fetch_row($res); 
    $res1 = mysql_query("SELECT email FROM users WHERE email='$email'"); 
    $row1 = mysql_fetch_row($res1); 

    if($row > 0){ 
    echo nl2br("The username $username is already in use"); 
    }else{ 

     if($row1 > 0){ 
      echo nl2br("the email address $email is already in use"); 
     }else{ 

     $sql = "INSERT INTO users VALUES('','$name', '$username', '$password', '$email')"; 

     if(mysql_query($sql)){ 
      echo "Inserted Successfully"; 
     }else{ 
     echo "Insertion Failed"; 
     } 
    } 
} 

?> 
+0

錯誤的查詢,你沒有指定列名 – Poria

+0

你不必指定列名,儘管它非常推薦。 –

+0

[Little Bobby](http://bobby-tables.com/)說[你的腳本存在SQL注入攻擊的風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent -sql噴射在-PHP)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

回答

0
if($email == $confirmemail) { 
    exit(); 
} 
else { 
    echo "Your Email address does not match."; 
} 

所以,你在做什麼在上面的代碼是「如果電子郵件和確認電子郵件是相同的,停止腳本執行其他打印出‘您的電子郵件地址不匹配。’並繼續執行「。

if ($email == $repeatpassword) { 
    exit(); 
} 
else { 
    echo "Your Passwords do not match."; 
    exit(); 
} 

在這裏,你是說,如果「電子郵件和repeatpassword是相同的(???),停止腳本執行其他打印出‘您的密碼不匹配。’並停止腳本執行「。

因此,由於這個邏輯顯然你永遠不會達到將數據插入數據庫的代碼。

+0

omg,從來沒有注意到,謝謝,因爲找到問題而陷入困境,失去了它的視線,哈哈,謝謝。 –