2013-03-02 101 views
0

你好我在這裏有一些問題,我創建了一個腳本來更新用戶帳戶的詳細信息,但當填寫表單並提交按鈕點擊沒有錯誤出現,但同時沒有更改表表中的PHP更新行

這只是一個虛擬的應用程序,使一切就是保持基本

 <?php 


session_start(); 


    include('connect_mysql.php'); 



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

      $usernameNew = stripslashes(mysql_real_escape_string($_POST["username"])); 
      $passwordNew = stripslashes(mysql_real_escape_string($_POST["password"])); 
      $first_nameNew = stripslashes(mysql_real_escape_string($_POST["first_name"])); 
      $last_nameNew = stripslashes(mysql_real_escape_string($_POST["last_name"])); 
      $emailNew = stripslashes(mysql_real_escape_string($_POST["email"])); 



      $user_id = $_SESSION['user_id']; 
      $editQuery = mysql_query("UPDATE users SET username='$usernameNew', password='$passwordNew', first_name='$first_nameNew', last_name='$last_nameNew' , email='$emailNew' WHERE user_id='$user_id'"); 


      if(!$editQuery) 
      { 
       echo mysql_error($editQuery); 
       die($editQuery); 
      } 
     } 

?> 


<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 type="submit" value="Edit Account" class="button"> 
<input type="hidden" name="update" value="update"> 


    </form> 

</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">Text</div> 
</div> 

</body> 
</html> 

對不起出於某種原因,我忘了複製這部分faceslap

的login.php:

<?php 
session_start(); 

    require('connect_mysql.php'); 

    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 

     $username = $_POST["username"]; 
     $password = $_POST["password"]; 
     $username = stripslashes($username); 
     $password = stripslashes($password); 
     $username = mysql_real_escape_string($username); 
     $password = mysql_real_escape_string($password); 

     $query = mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$password'"); 
     $numrow = mysql_num_rows($query); 

    if($username && $password){ 



    $query = mysql_query("SELECT * FROM users WHERE username='$username'"); 
    $numrow = mysql_num_rows($query); 

    if($numrow !=0){ 

     while($row = mysql_fetch_assoc($query)){ 

      $dbusername = $row['username']; 
      $dbpassword = $row['password'];   
     } 

     if($username == $dbusername && $password == $dbpassword){ 

      $_SESSION['user_id'] = $user_id; 
      header("Location: userhome.php"); 

     } 
     else{ 
      echo "Incorect password"; 
     } 

    } 
    else{ 
     die("This user dosent exists"); 
    } 
} 
else{ 

    $reg = die("Please enter username and password"); 
} 
} 


?> 
+1

你的'PHP'代碼在哪裏? – 2013-03-02 06:06:33

+1

您還沒有發佈任何代碼的UPDATE命令 – acutesoftware 2013-03-02 06:06:38

+0

hmmmmmmmm .......... – 2013-03-02 06:07:38

回答

1

您沒有在文件的開頭叫session_start(),所以$username將是一個空字符串,並且其中的用戶名是空字符串更新命令將只更新行。

編輯:實際上,該代碼甚至不會運行,因爲您沒有調用session_start(),isset($_SESSION['update'])將評估爲false。

您是不是要編寫$_SESSION['update']?不應該是$_POST['update']?至少對於清晰度

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

最後但並非最不重要的,我個人將取代這個:

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

與此有關。我不知道它是否仍然如此,但是隨着時間的推移,並非所有瀏覽器都提交了提交按鈕的名稱/值。

+0

完成這一點,但仍然沒有運氣:/ – Tomazi 2013-03-02 06:16:12

+0

您能通過投入線模具調試試($ SQL)?我很好奇正在執行的SQL是什麼。 – Jodes 2013-03-02 06:17:20

+0

@Tomazi將'session_start()'放在所有頁面的頂部,並從'dologin->編輯數據'開始再次啓動流程。 – 2013-03-02 06:18:41

0

爵士從上面給出我認爲你在login.php中有錯誤代碼

$_SESSION['user_id'] = $user_id; 

你是不是分配價值$ USER_ID就是爲什麼它被設置空白值$ _SESSION [「user_ID的」] 。

<?php 
session_start(); 

    require('connect_mysql.php'); 

    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 

     $username = $_POST["username"]; 
     $password = $_POST["password"]; 
     $username = stripslashes($username); 
     $password = stripslashes($password); 
     $username = mysql_real_escape_string($username); 
     $password = mysql_real_escape_string($password); 

     $query = mysql_query("SELECT * FROM users WHERE Username='$username' AND Password='$password'"); 
     $numrow = mysql_num_rows($query); 

    if($username && $password){ 



    $query = mysql_query("SELECT * FROM users WHERE username='$username'"); 
    $numrow = mysql_num_rows($query); 

    if($numrow !=0){ 
     $user_id = 0; 
     while($row = mysql_fetch_assoc($query)){ 

      $dbusername = $row['username']; 
      $dbpassword = $row['password'];   
      $user_id = $row['user_id']; 
     } 

     if($username == $dbusername && $password == $dbpassword){ 

      $_SESSION['user_id'] = $user_id; 
      header("Location: userhome.php"); 

     } 
     else{ 
      echo "Incorect password"; 
     } 

    } 
    else{ 
     die("This user dosent exists"); 
    } 
} 
else{ 

    $reg = die("Please enter username and password"); 
} 
} 


?> 
+0

嗨thx爲你的建議我試過,但它dosent wwork – Tomazi 2013-03-02 18:26:28

+0

你可以回聲$ editQuery告訴我們打印什麼 – 2013-03-03 04:35:01

+0

你的回聲看起來像這樣「更新用戶SET用戶名='usernameNew',密碼='密碼新',first_name = 'first_nameNew',last_name ='last_nameNew',email ='emailNew'WHERE user_id =''「。您可以看到user_id是空白的,這說明查詢執行沒有錯誤。 – 2013-03-03 04:48:03