2013-03-01 156 views
0

概述: 我創建一個虛擬網站用於學習的目的,因此它的功能主義者是基本和安全的不在議程atm。PHP更新用戶帳戶的詳細信息沒有顯示錯誤,但帳戶詳細信息未更新

實際的問題:在誰擁有如果需要編輯他/她的帳戶的選項的用戶

行,所以我的應用程序包廂。所以我已經提前創建了PHP腳本來處理這個問題,但它不是。當我點擊編輯帳戶按鈕時,沒有錯誤彈出,但同時當我檢查MySQL數據庫沒有發生變化。

EditAccountForm.php文件:

<?php 

    include('connect_mysql.php'); 


if(isset($_POST['editAccount'])){ 

    $Newusername = $_GET['username']; 
    $Newpassword = $_POST['password']; 
    $Newfirstname = $_POST['first_name']; 
    $Newlastname = $_POST['last_name']; 
    $Newemail = $_POST['email']; 


    if($Newusername != $username) 
    { 
     $q1 = ("UPDATE users SET username=$Newusername WHERE username=$username"); 
    } 
    else if(!mysql_query($q1)){ 

     echo "MySQL ERROR: " . mysql_error() . "" . $sql; 
    } 
    /////////////////////////////////////////////////////////////// 

    if($Newpassword != $password) 
    { 
     $q2 = ("UPDATE users SET password=$Newpassword WHERE password=$password"); 
    } 
    else if(!mysql_query($q2)){ 

     echo "MySQL ERROR: " . mysql_error() . "" . $sq2; 
    } 
    /////////////////////////////////////////////////////////// 

    if($Newfirstname != $firstname) 
    { 
     $q3 = ("UPDATE users SET first_name=$Newfirstname WHERE first_name=$firstname"); 
    } 
    else if(!mysql_query($q3)){ 

     echo "MySQL ERROR: " . mysql_error() . "" . $sq3; 
    } 
    /////////////////////////////////////////////////////////////// 

    if($Newlastname != $lastname) 
    { 
     $q4 = ("UPDATE users SET last_name=$Newlastname WHERE last_name=$lastname"); 
    } 
    else if(!mysql_query($q4)){ 

     echo "MySQL ERROR: " . mysql_error() . "" . $sq4; 
    } 
    /////////////////////////////////////////////////////////////// 

    if($Newemail != $email) 
    { 
     $q5 = ("UPDATE users SET username=$Newemail WHERE email=$email"); 
    } 
    else if(!mysql_query($q5)){ 

     echo "MySQL ERROR: " . mysql_error() . "" . $sq5; 
    } 



} 

?> 

userEditAccount.php:

<html> 
<head> 

<title>Edit Account</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 

    <div id="wrapper"> 
     <header><h1>E-Shop</h1></header> 


     <article> 
     <h1>Welcome</h1> 

      <h1>Edit Account</h1> 

     <div id="login"> 

       <ul id="login"> 

       <form method="post" name="editAccount" action="userEditAccount.php" > 
        <fieldset> 
         <legend>Fill in the form</legend> 

         <label>Select Username : <input type="text" name="username" /></label> 
         <label>Password : <input type="password" name="password" /></label> 
         <label>Enter First Name : <input type="text" name="first_name" /></label> 
         <label>Enter Last Name : <input type="text" name="last_name" /></label> 
         <label>Enter E-mail Address: <input type="text" name="email" /></label> 
        </fieldset> 
         <br /> 

         <input name="Editsubmited" type="submit" submit="submit" value="Edit Account" class="button"> 

       </form> 

       <? 

        echo $newrecord; 
       ?> 


       </div> 
      <form action="userhome.php" method="post"> 
      <div id="login"> 
       <ul id="login"> 
        <li> 
         <input type="submit" value="back" onclick="index.php" class="button"> 
        </li> 
       </ul> 
      </div>  



     </article> 
<aside> 
</aside> 

<div id="footer">This is my site i Made coppyrights 2013 Tomazi</div> 
</div> 

</body> 
</html> 

此外:

我試圖與代碼撥弄看着網頁,但沒有運氣的代碼我已經爲我的眼中的劇本寫下了最好的解決方案,也是讓我感覺到的解決方案。

所以我沒有其他選擇,只能轉到本網站尋找答案,任何人都可能看到哪裏會出現錯誤的整個事情......?

圖片編輯帳戶頁面: enter image description here

至於問Conect_mysql.php:

<?php 

    $db_hoast = "127.0.0.1"; 
    $db_username = "root"; 
    $db_password = ""; 
    $db_name = "eshop"; 

    $con = mysql_connect("$db_hoast","$db_username","$db_password"); 
     if(!$con) 
     { 
      die("Could not connect to DATABASE"); 
     } 
    $db = mysql_select_db("$db_name"); 
     if(!$db) 
     { 
      die("No database"); 
     } 

?> 
+0

如果你正在開始一個新的項目,不要使用分機/ MySQL的。它已被棄用。而是使用PDO或mysqli。您的腳本容易受到SQL注入的影響。 – Mike 2013-03-01 02:24:51

+0

'WHERE username = $ password'是錯誤的 - 它應該與'$ username'比較,而不是'$ password'。 – Barmar 2013-03-01 02:25:42

+0

請添加您的'connect_mysql.php'類來調查。 – 2013-03-01 02:28:40

回答

3

的問題與您UPDATE陳述的價值觀是未用單引號。它們是字符串文字,應該被包裝。

$q1 = "UPDATE users SET username='$Newusername' WHERE username='$username'"; 

,以顯示錯誤,

if($Newfirstname != $firstname) 
{ 
    $q1 = "UPDATE users SET username='$Newusername' WHERE username='$username'"; 
    $result = mysql_query($q1); 
    if (!$result) 
    { 
     die('Invalid query: ' . mysql_error()); 
    } 
} 

而且你的邏輯UPDATES是錯誤的。這會導致您更新與條件匹配的記錄。

作爲旁註,如果變量的值(s)來自外部,則該查詢容易受到SQL Injection的影響。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

+0

讓我們聽聽downvoter的評論':)'我沒有生氣。我只想知道爲什麼。嘿嘿 – 2013-03-01 02:35:29

+0

Thx您的回覆我嘗試了您的建議,現在仍然是錯誤,現在更新 – Tomazi 2013-03-01 02:40:07

相關問題