2013-03-02 105 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