[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не обновляется информация.
forza
Здравствуйте. У меня такая проблема. Почему не хочет обновлятьця информация(пароль) в базе данных? как был старым, так и остаётся.
Собственно код

<?php
if (!defined('SECURITY_KEY')) {
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}

if(empty($_SESSION['login']) && empty($_SESSION['password'])){
header("Location:?page=auth");
}

$title = 'Смена пароля';

$login = $_SESSION['login'];

include_once './libs/mysql.php';

//Nazhata li knopka
if($change_ok) {
$change_new = hashPass($change_new);
$change_new2 = hashPass($change_new2);
$change_old = hashPass($change_old);

if ($change_old !== $_SESSION['password']) {
$error[] = 'Неправильный старый пароль';
}

if ($change_new !== $change_new2) {
$error[] = 'Новый пароль не совпадает с подтвержденным';
}

if (is_array($error)) {
echo "<p class='error'> ";
foreach ($error as $err) {
echo $err.'<br />';
}
echo '</p>';
}
//Oshibok net? idem daljshe
else {
$q = ("
UPDATE users
SET password =
$change_new
WHERE login = '$login'"
);


if ($q) {
echo "succ <br>";
}
else {
echo "fail";
}
}
}


?>

<form action="" method="post" >
<
table border="0" width="400px">
<
tr>
<
td valign="top" width="47%">
Старый пароль *:
</
td>
<
td>
<
input type="password" name="value18" maxlength="20" />
</
td>
</
tr>

<
tr>
<
td valign="top" width="47%">
Новый пароль *:
</
td>
<
td>
<
input type="password" name="value19" maxlength="20" />
</
td>
</
tr>

<
tr>
<
td valign="top" width="47%">
Повторите новый пароль *:
</
td>
<
td>
<
input type="password" name="value20" maxlength="20" />
</
td>
</
tr>

</
table>
<
input type="submit" name="change_ok" value="Сменить" class="button" />
</
form>





Спустя 5 минут, 8 секунд (6.10.2010 - 11:10) Michael написал(а):
база - mysql ? тогда:
$q = "
UPDATE users
SET password =
$change_new
WHERE login = '$login'";
$res = mysql_query($q);
if ($res && (mysql_affected_rows() == 1)) {
// изменен
}
// ...

Спустя 5 минут, 45 секунд (6.10.2010 - 11:16) linker написал(а):
Только
$q = "UPDATE users "
. "SET password = '$change_new' "
. "WHERE login = '$login'";
$change_new в одинарные кавычки.

Спустя 9 минут, 15 секунд (6.10.2010 - 11:25) forza написал(а):
Michael , linker не помогло

Спустя 1 минута, 50 секунд (6.10.2010 - 11:27) forza написал(а):
$q = "
UPDATE users
SET password =
$change_new
WHERE login = '$login'";
$res = mysql_query($q);
if ($res && (mysql_affected_rows() == 1)) {
echo "succ";
}
else {
echo "fail";
}


Выводит Файл

Спустя 51 минута, 50 секунд (6.10.2010 - 12:19) linker написал(а):
$q = "...";
echo $q;
Увидишь текст запроса, поймешь в чем ошибка.

Спустя 11 минут, 20 секунд (6.10.2010 - 12:30) forza написал(а):
UPDATE users SET password = 'b44ce5d89fcbd838ef9dfd4132fdee5f20pMk' WHERE login = 'andrej'


А в столбике "андрей" ничего не изменилось. Андрей 1

UPDATE users SET password = 'peet' WHERE login='andrej'

Через SQL запрос, все работает

Спустя 28 минут, 35 секунд (6.10.2010 - 12:59) forza написал(а):
$q = "UPDATE users SET password = 'b44ce5d89fcbd838ef9dfd4132fdee5f20pMk' WHERE login = 'andrej'";


ввыдоит "ку" равное = UPDATE users SET password = 'b44ce5d89fcbd838ef9dfd4132fdee5f20pMk' WHERE login = 'andrej'


Но в базе данных ничего не изменилось. Теперь, если туда вставить SQL запрос (результат "ку")

UPDATE users SET password = 'b44ce5d89fcbd838ef9dfd4132fdee5f20pMk' WHERE login = 'andrej'


то все меняется и работает.

Спустя 2 минуты, 6 секунд (6.10.2010 - 13:01) arvitaly написал(а):
Вы случайно не один и тот же пароль вводите?

Спустя 1 минута, 57 секунд (6.10.2010 - 13:03) Xpund написал(а):
$q = ("
UPDATE users
SET password = '"
.$change_new."'
WHERE login = '
$login'"
);

Спустя 3 минуты, 9 секунд (6.10.2010 - 13:06) linker написал(а):
echo "Новый пароль : " . $change_new . "<br>Старый пароль : " . $change_old;
Посмотри, может ошибка именно в том, что старый пароль равен новому, тогда никакого апдейта не произойдет. И вообще не понятно откуда берутся $change_new, $change_old.

Спустя 5 минут, 39 секунд (6.10.2010 - 13:12) forza написал(а):
Старый и новый пароль не равны.

Спустя 10 минут, 45 секунд (6.10.2010 - 13:22) forza написал(а):
//Smena parolja
$change_ok = !empty($_REQUEST['change_ok']) ? $_REQUEST['change_ok'] : NULL;
$change_old = !empty($_REQUEST['value18']) ? trim($_REQUEST['value18']) : NULL;
$change_new = !empty($_REQUEST['value19']) ? trim($_REQUEST['value19']) : NULL;
$change_new2 = !empty($_REQUEST['value20']) ? trim($_REQUEST['value20']) : NULL;


Вот откуда

Спустя 2 минуты, 55 секунд (6.10.2010 - 13:25) inpost написал(а):
$login = "andrej";
$newpass = "abrabra";
$result = msql_query("SELECT * FROM `users` WHERE `login`='".$login."'");
$myrow = mysql_frech_assoc($result);
echo $myrow['login'].$myrow['password'];

$result = mysql_query("UPDATE `users` SET `password`='".$newpass."' WHERE `login`='".$login."'");
if($result==true)
{
echo "<br>Все прошло успешно<br>";
}
else
{
echo "ОШИБКА В НАЗВАНИИ ПОЛЕЙ";
}

$result = msql_query("SELECT * FROM `users` WHERE `login`='".$login."'");
$myrow = mysql_frech_assoc($result);
echo $myrow['login'].$myrow['password'];


Запусти на проверку! Все само найдется.

Спустя 2 минуты, 37 секунд (6.10.2010 - 13:28) linker написал(а):
$q = "UPDATE users "
. "SET password = '$change_new' "
. "WHERE login = '$login'";
$res = mysql_query($q) or die("Ошибка запроса");
if (mysql_affected_rows() > 0))
echo "succ";
else
echo "fail";

Спустя 1 минута, 52 секунды (6.10.2010 - 13:30) forza написал(а):
Самое интересное. Допустим ,ладно. у меня что то не работает с паролями, но Бог с ними, тогда я вставил
SET city = 'moscow'


и у меня поле city не изменилось.

$q = ("
UPDATE users
SET password = '"
.$change_new."'
WHERE login='"
.$_SESSION['login']."'"
);
echo $q."<br>";

if ($q) {
echo "succ <br>";
}
else {
echo "fail";
}


$q вернула "succ"

Спустя 2 минуты, 41 секунда (6.10.2010 - 13:32) inpost написал(а):
forza
Запусти мою проверку. Выведи результаты сюда.

Спустя 1 минута, 37 секунд (6.10.2010 - 13:34) arvitaly написал(а):
Ну правильно вы проверяете, пустая ли у вас переменная $q - а она не пустая

Спустя 5 минут, 35 секунд (6.10.2010 - 13:40) forza написал(а):
$q = "UPDATE users "
. "SET password = '$change_new' "
. "WHERE login = '$_SESSION[login]'";


с таким запросом все прошло!

Почему тогда с моим не проходило ?
$q = "UPDATE users SET password = '$change_new' WHERE login = '$login'";

Синтакстическая ошибка в запросе? Если да, то покажите где, а то у меня есть еще один файл, там тоже есть УПДАТЕ, но он работает хорошо.

Спустя 2 минуты, 9 секунд (6.10.2010 - 13:42) inpost написал(а):
forza
...мой умеешь читать коммент? Там написано, как правильно UPDATE делать, и апострофы правильно стоят, всё как надо.

Спустя 2 минуты, 43 секунды (6.10.2010 - 13:44) forza написал(а):
да да, прочитал ваш комент.


_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.