2013-03-02 53 views
0

我正在爲基本的PHP學習目的創建一個虛擬應用程序,現在我的應用程序將用戶鎖定到一個帳戶,用戶可以在其中執行多項任務,例如搜索產品等。用戶可以執行的功能之一是編輯帳戶詳細信息,這是我遇到的一切問題。沒有錯誤顯示,但當我通過點擊'編輯帳戶'按鈕提交查詢一切simes工作,但是當我檢查數據庫我發現沒有什麼改變...PHP更新表

我也意識到安全問題withing的代碼,但ATM我要建立基本功能

userEditAccount.php:

<?php 


session_start(); 


    include('connect_mysql.php'); 



     if(isset($_POST['Edit Account'])) 
     { 

      $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"])); 



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


      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"> 



    </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> 

我還將包括的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['username'] == $dbusername; 
      header("Location: userhome.php"); 

     } 
     else{ 
      echo "Incorect password"; 
     } 

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

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


?> 

在我自己的看法中,問題在SESSION或者查詢的某個地方出現,但是我經歷了許多不同的資源,它不應該是一個問題....我可能會錯過一些非常基礎的或者一些LAME錯誤:D

+1

爲什麼你逃脫你的絃樂,然後去掉斜槓?無論如何,你不應該使用mysql_ *擴展名。改用PDO或Mysqli http://www.php.net/manual/en/mysqlinfo.api.choosing.php – Tchoupi 2013-03-02 19:45:36

+0

你的userEditAccount.php在哪裏?表單正在提交,但您沒有發佈。 – 2013-03-02 19:47:30

+0

如果您只是學習,請學習使用MySQLi或PDO擴展的預準備語句,而不是使用不贊成使用的MySQL擴展的不良做法 – 2013-03-02 19:49:21

回答

0

這很簡單。您可以使用if(isset($_POST['Edit Account'])),但你的提交按鈕沒有名稱: <input type="submit" value="Edit Account" class="button">

改變輸入到這一點:

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

,改變if(isset($_POST['Edit Account']))if(isset($_POST['edit_account']))

+0

我不知道是不是這種情況,因爲它提交給'userEditAccount.php',但只發布了'login.php'。 – 2013-03-02 19:49:48

+0

好斑點的thx我做了更改,但現在點擊按鈕後,我有這個錯誤信息**注意:未定義的索引:用戶名在C:\ xampp \ htdocs \ eshop \ userEditAccount.php在線22 您在您的錯誤SQL語法;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'username ='NewUser',password ='000',first_name ='Newname',last_name ='NewLast'''處使用正確的語法** – Tomazi 2013-03-02 19:57:27

+0

什麼是22號線? – MIIB 2013-03-02 20:01:57

0

哪裏是$編輯?

- 不要用mysql已過時,使用庫MySQLi或PDO

- 可以保證:

WHERE username='$edit' 

也許你必須與會話的$數據庫用戶名

Hovewer改變這種所有變量在一行中

foreach($_POST as $key => $var) $_POST[$key] = mysqli_real_escape_string($var); 

- 在輸入變量上添加驗證控件,和登錄會話檢查

+0

我用$ dbusername變量更改了$ edit,但仍然沒有任何結果。那麼你是正確的使用PDO或mysqli,但如果我沒有得到的基本功能第一沒有點使代碼安全 – Tomazi 2013-03-02 19:59:28

+0

更改此值=「編輯帳戶」在名稱=「edit_account」作爲MIIB有寫 – Sam 2013-03-02 20:01:39

+0

我有那麼現在我得到以下錯誤:**注意:未定義的索引:用戶名在第22行的C:\ xampp \ htdocs \ eshop \ userEditAccount.php中 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'username ='1111',password ='1111',first_name ='1111',last_name ='1111',email ='1'附近使用正確的語法** – Tomazi 2013-03-02 20:05:05