Изменение пароля пользователя в PHP и mySQL - PullRequest
2 голосов
/ 17 января 2012

Нашел ответ !!

Нашел ответ после долгого перерыва, глядя на него!

просто менялся

$querynewpass = "UPDATE tz_members SET `pass`='".$_POST['$passwordnew1']."' WHERE usr='{$_SESSION['usr']}'";

до:

$querynewpass = "UPDATE tz_members SET `pass`='".md5($_POST['passwordnew1'])."' WHERE usr='{$_SESSION['usr']}'";

просто простой md5, который я пропустил!

Проблема:

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

if($_POST['submit']=='Change')
{
    // Checking whether the Password Change form has been submitted

    $err = array();
    // Will hold our errors


    if(!$_POST['password1'] || !$_POST['passwordnew1'])
        $err[] = 'All the fields must be filled in!';

    if(!count($err))
    {
        $_POST['password1'] = mysql_real_escape_string($_POST['password1']);
        $_POST['passwordnew1'] = mysql_real_escape_string($_POST['passwordnew1']);

        // Escaping all input data

        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM tz_members WHERE usr='{$_SESSION['usr']}' AND pass='".md5($_POST['password1'])."'"));

        if($row['usr'])
        {
            // If everything is OK change password

            $querynewpass = "UPDATE user SET `password`='".$_POST['$passwordnew1']."' WHERE id='".$_SESSION['usr']."'";
                        $resultnewpass = mysql_query($querynewpass) or die(mysql_error()); 

        }
        else $err[]='Wrong Password To Start With!';
    }

    if($err)
    $_SESSION['msg']['passwordchange-err'] = implode('<br />',$err);
    // Save the error messages in the session

    header("Location: index.php");
    exit;
}

но появляется сообщение об ошибке «Таблица« databasename.user »не существует» у меня есть логин и форма регистрации, которые работают с использованием этого метода без ошибок!

UPDATE: у меня есть база данных, в которой есть таблица с именем tz_members, а столбцами являются id, pass, user, regIP и dt

Мой MySQL запрос сейчас:

$querynewpass = "UPDATE tz_members SET `pass`='".$_POST['$passwordnew1']."' WHERE usr='{$_SESSION['usr']}'";

ОБНОВЛЕНО СНОВА добавив код формы для вас, чтобы увидеть:

    <!-- Pass Change Form -->
            <form action="" method="post">      
            <?php

                    if($_SESSION['msg']['passwordchange-err'])
                    {
                        echo '<div class="err">'.$_SESSION['msg']['passwordchange-err'].'</div>';
                        unset($_SESSION['msg']['passwordchange-err']);
                    }

                    if($_SESSION['msg']['passwordchange-success'])
                    {
                        echo '<div class="success">'.$_SESSION['msg']['passwordchange-success'].'</div>';
                        unset($_SESSION['msg']['passwordchange-success']);
                    }
                ?>

                <label class="grey" for="password1">Current Password:</label>
                <input class="field" type="password" name="password1" id="password1" value="" size="23" />
                <label class="grey" for="password">New Password:</label>
                <input class="field" type="password" name="passwordnew1" id="passwordnew1" size="23" />
                <input type="submit" name="submit" value="Change" class="bt_register" />
            </form>

Ответы [ 4 ]

3 голосов
/ 17 января 2012

Вы используете две разные таблицы (и столбцы) в двух запросах, которые, по-видимому, связаны с одной и той же таблицей.

Проверьте схему и настройте второй запрос соответствующим образом.

второй запрос, вероятно, должен выглядеть примерно так:

$querynewpass = "UPDATE tz_members SET `pass`='".md5($_POST['passwordnew1'])."' WHERE usr='{$_SESSION['usr']}'";
1 голос
/ 17 января 2012

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

0 голосов
/ 05 мая 2016

Попробуйте этот код:

$SQL = "UPDATE `table-name` SET `password` = '".$newpassword."' WHERE `tablename`.`ID` = '".$_SESSION["database ID"];."';";
0 голосов
/ 02 февраля 2013

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

Единственной найденной ошибкой, которая заняла у меня несколько минут для отладки с помощью приведенного выше кода, было следующее:

$querynewpass = mysql_query("UPDATE tz_members SET `pass`='".md5($_POST['passwordnew1'])."' WHERE usr='{$_SESSION['usr']}'");

- добавление тега mysql_query () после добавления кода прекрасно работаетспасибо за обмен.

...