2013-03-02 4 views
0

Я создаю фиктивное приложение для основных целей обучения PHP. Теперь мое приложение регистрирует пользователя в учетной записи, где пользователь может делать несколько вещей, таких как поисковые продукты и т. Д. Одна из функций, которую пользователь может сделать, - это Измените данные учетной записи, и здесь все пойдет не так. Отображаемых ошибок нет, но когда я отправляю запрос, нажмите кнопку «Изменить учетную запись», чтобы все симы работали, но когда я проверю базу данных, я узнаю, что ничего не изменилось ...PHP update table

Я также осведомлен о проблемах безопасности жгутов коды, но атм я хочу установить базовую функциональность

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"); 
} 
} 


?> 

В моем собственном решении проблема лежит где-то на СЕССИИ или, возможно, в запросе, но я прошел через множество разных ресурсов, и это не должно быть проблемой ... Возможно, мне не хватает чего-то очень фундаментального или ошибки LAME: D

+1

Почему вы избегаете своих строк, а затем удаляете косые черты? В любом случае вы не должны использовать расширение mysql_ *. Используйте PDO или Mysqli вместо http://www.php.net/manual/en/mysqlinfo.api.choosing.php – Tchoupi

+0

Где ваш 'userEditAccount.php'? Форма отправляется туда, но вы ее не публиковали. –

+0

Если вы только учитесь, научитесь использовать подготовленные инструкции с расширениями MySQLi или PDO, а не изучать неверные методы с устаревшим расширением MySQL –

ответ

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 »был отправлен. –

+0

Хорошо замеченный thx я внес изменения, но теперь у меня есть это сообщение об ошибке после нажатия кнопки ** Примечание: Неопределенный индекс: имя пользователя в C: \ xampp \ htdocs \ eshop \ userEditAccount.php в строке 22 У вас есть ошибка в вашем Синтаксис SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'username =' NewUser ', password =' ​​000 ', first_name =' Newname ', last_name =' NewLast ',' в строке 1 ** – Tomazi

+0

Что строка 22? – MIIB

0

Где $ редактировать?

WHERE username='$edit' 

Может быть, вы должны изменить это с $ dbusername сессии

Hovewer:

-Не использование MySQL является устаревшим, используйте MySQLi или PDO

, Вы можете обеспечить все вары в одной строке

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

-Добавить проверку правильности ввода входных данных, и проверка сеанса входа в систему

+0

Я изменил $ edit с переменной $ dbusername и все равно ничего. Хорошо, что вы правы в использовании PDO или mysqli, но если я не получу базовую функциональность, вначале нет смысла делать код безопасным. – Tomazi

+0

Измените это значение = «Редактировать учетную запись» в name = «edit_account», так как MIIB имеют запись – Sam

+0

У меня есть сделайте это, и я получаю следующую ошибку: ** Примечание: Неопределенный индекс: имя пользователя в C: \ xampp \ htdocs \ eshop \ userEditAccount.php в строке 22 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'username =' 1111 ', password =' ​​1111 ', first_name =' 1111 ', last_name =' 1111 ', email =' 1 'в строке 1 ** – Tomazi