2013-03-01 2 views
0

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

Актуальные проблемы:

OK поэтому мои приложения в Ложах через пользователь, имеет возможность редактирования его/ее учетной записи, если это необходимо. Так что я пошел вперед и создал PHP-скрипт, который soopose, чтобы иметь дело с этим, НО ЭТО НЕ. Когда я нажимаю кнопку редактирования учетной записи, ошибки не появляются, но в то же время, когда я проверяю базу данных 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> 

Кроме того:

Я пытался возиться с кодом посмотрел на сайте, но не везении кода я написал для этого сценария в моих глазах лучшее решение, и тот, который делает меня чувствительным.

Итак, у меня не было другого выбора, кроме как обратиться к этому веб-сайту, чтобы найти ответы, может ли кто-нибудь увидеть, что происходит со всей этой штукой ...?

Изображение страницы Edit Account: 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

+0

'WHERE username = $ password' неверно - он должен сравниваться с' $ username', а не '$ password'. – Barmar

+0

, пожалуйста, добавьте класс 'connect_mysql.php' для исследования. –

ответ

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 неверны. Это приведет к обновлению записей, соответствующих условиям.

В качестве побочного сигнала запрос уязвим с помощью SQL Injection, если значение (s) переменных было получено извне. Пожалуйста, ознакомьтесь с приведенной ниже статьей, чтобы узнать, как ее предотвратить. Используя PreparedStatements, вы можете избавиться от использования одинарных кавычек вокруг значений.

+0

, давайте послушаем комментарий комментатора: 'Я не злюсь. Я просто хочу знать, почему. hehe –

+0

Thx для вашего ответа я попробовал ваше предложение и все еще теперь ошибки и теперь Update – Tomazi

Смежные вопросы