|
|
|
|
<?php
include 'bd.php';
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['login']) && ! empty($_POST['login'])) $login = $_POST['login'];
if (isset($_POST['password']) && ! empty($_POST['password'])) $password = $_POST['password'];
if (isset($_POST['b_day']) && ! empty($_POST['b_day'])) $b_day = $_POST['b_day'];
if (isset($_POST['b_month']) && ! empty($_POST['b_month'])) $b_month = $_POST['b_month'];
if (isset($_POST['b_year']) && ! empty($_POST['b_year'])) $b_year = $_POST['b_year'];
if (isset($_POST['gender']) && ! empty($_POST['gender'])) $gender = $_POST['gender'];
if (isset($_POST['height']) && ! empty($_POST['height'])) $height = $_POST['height'];
if (isset($_POST['family']) && ! empty($_POST['family'])) $family = $_POST['family'];
if (isset($_POST['children']) && ! empty($_POST['children'])) $children = $_POST['children'];
if (isset($_POST['education']) && ! empty($_POST['education'])) $education = $_POST['education'];
if (isset($_POST['country']) && ! empty($_POST['country'])) $country = $_POST['country'];
if (isset($_POST['city_ru']) && ! empty($_POST['city_ru'])) $city_ru = $_POST['city_ru'];
if (isset($_POST['city_en']) && ! empty($_POST['city_en'])) $city_en = $_POST['city_en'];
if (isset($_POST['confession']) && ! empty($_POST['confession'])) $confession = $_POST['confession'];
if (isset($_POST['church']) && ! empty($_POST['church'])) $church = $_POST['church'];
if (isset($_POST['about_ru']) && ! empty($_POST['about_ru'])) $about_ru = $_POST['about_ru'];
if (isset($_POST['about_en']) && ! empty($_POST['about_en'])) $about_en = $_POST['about_en'];
?>
<?php
if (isset($login, $password, $b_day, $b_month, $b_year,
$gender, $height, $family, $children, $education, $country,
$city_ru, $city_en, $confession, $church, $about_ru,
$about_en))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result = mysql_query ("UPDATE users SET login='$login',
password='$password', b_day='$b_day', b_month='$b_month',
b_year='$b_year', gender='$gender', height='$height',
family='$family', children='$children',
education='$education', country='$country',
city_ru='$city_ru', city_en='$city_en',
confession='$confession', church='$church',
about_ru='$about_ru', about_en='$about_en' WHERE id='$id'");
if ($result == 'true') {echo "<p>Ваши данные обновлены!</p>";}
else {echo "<p>Ваши данные не обновлены!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию, поэтому информация не может быть добавлена</p>";
}
?>
|
По завершению - выходит надпись"Ваши данные обновлены!", но тем не менее в базе сохраняются прежние данные.
В чем может быть дело? | |
|
|
|
|
|
|
|
для: franko
(01.02.2011 в 12:33)
| | Для начала.
> if ($result == 'true') {echo "<p>Ваши данные обновлены!</p>";}
Тут сравнение со строкой 'true', а надо бы сравнивать с истиной true, | |
|
|
|
|
|
|
|
для: franko
(01.02.2011 в 12:33)
| | Проверьте количество реально обновившихся строк в базе данных при помощи функции mysql_affected_rows(). Их 1 или 0? | |
|
|
|
|
|
|
|
для: cheops
(01.02.2011 в 13:52)
| |
<?php
include 'bd.php';// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['login']) && ! empty($_POST['login'])) $login = $_POST['login'];
if (isset($_POST['password']) && ! empty($_POST['password'])) $password = $_POST['password'];
if (isset($_POST['b_day']) && ! empty($_POST['b_day'])) $b_day = $_POST['b_day'];
if (isset($_POST['b_month']) && ! empty($_POST['b_month'])) $b_month = $_POST['b_month'];
if (isset($_POST['b_year']) && ! empty($_POST['b_year'])) $b_year = $_POST['b_year'];
if (isset($_POST['gender']) && ! empty($_POST['gender'])) $gender = $_POST['gender'];
if (isset($_POST['height']) && ! empty($_POST['height'])) $height = $_POST['height'];
if (isset($_POST['family']) && ! empty($_POST['family'])) $family = $_POST['family'];
if (isset($_POST['children']) && ! empty($_POST['children'])) $children = $_POST['children'];
if (isset($_POST['education']) && ! empty($_POST['education'])) $education = $_POST['education'];
if (isset($_POST['country']) && ! empty($_POST['country'])) $country = $_POST['country'];
if (isset($_POST['city_ru']) && ! empty($_POST['city_ru'])) $city_ru = $_POST['city_ru'];
if (isset($_POST['city_en']) && ! empty($_POST['city_en'])) $city_en = $_POST['city_en'];
if (isset($_POST['confession']) && ! empty($_POST['confession'])) $confession = $_POST['confession'];
if (isset($_POST['church']) && ! empty($_POST['church'])) $church = $_POST['church'];
if (isset($_POST['about_ru']) && ! empty($_POST['about_ru'])) $about_ru = $_POST['about_ru'];
if (isset($_POST['about_en']) && ! empty($_POST['about_en'])) $about_en = $_POST['about_en'];
if (isset($login, $password, $b_day, $b_month, $b_year,
$gender, $height, $family, $children, $education, $country,
$city_ru, $city_en, $confession, $church, $about_ru,
$about_en))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result = mysql_query ("UPDATE users SET login='$login',
password='$password', b_day='$b_day', b_month='$b_month',
b_year='$b_year', gender='$gender', height='$height',
family='$family', children='$children',
education='$education', country='$country',
city_ru='$city_ru', city_en='$city_en',
confession='$confession', church='$church',
about_ru='$about_ru', about_en='$about_en' WHERE id='$id'");
printf ("UPDATE: %d\n", mysql_affected_rows());
if ($result == 'true') {echo "<p>Ваши данные обновлены!</p>";}
else {echo "<p>Ваши данные не обновлены!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию, поэтому информация не может быть добавлена</p>";
}
?>
|
UPDATE: 0
Ваши данные обновлены! | |
|
|
|
|
|
|
|
для: franko
(01.02.2011 в 15:33)
| | Запрос выполняется, но подходящих строк для обновления нет. Проверьте значение id в WHERE-запроса (выведите весь SQL-запрос при помощи echo) - есть ли в базе данных запись с таким значением (возможно это значение равно 0 или имеет какое-то другое недействительное значение). | |
|
|
|
|
|
|
|
для: cheops
(01.02.2011 в 15:47)
| |
<?php
session_start();
include 'bd.php';
// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'",$db);
$myrow2 = mysql_fetch_array($result2);
if (empty($myrow2['id']))
{
//Если не действительны, то закрываем доступ
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
}
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
$old_login = $_SESSION['login']; //Старый логин нам пригодиться
$id = $_SESSION['id'];//идентификатор пользователя тоже нужен
////////////////////////
////////ИЗМЕНЕНИЕ ЛОГИНА
////////////////////////
if (isset($_POST['login']))//Если существует логин
{
$login = $_POST['login'];
$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);//удаляем все лишнее
if ($login == '') { exit("Вы не ввели логин");} //Если логин пустой, то останавливаем сценарий
if (strlen($login) < 3 or strlen($login) > 15) {//проверяем дину
exit ("Логин должен состоять не менее чем из 3 символов и
не более чем из 15.");
//останавливаем выполнение сценариев
}
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
//останавливаем выполнение сценариев
}
$result4 = mysql_query("UPDATE users SET login='$login' WHERE login='$old_login'",$db);//обновляем в базе логин пользователя
if ($result4=='TRUE') {
//если выполнено верно, то обновляем все сообщения, которые отправлены ему
mysql_query("UPDATE messages SET author='$login' WHERE author='$old_login'",$db);
$_SESSION['login'] = $login;
//Обновляем логин в сессии
if (isset($_COOKIE['login'])) {
setcookie("login", $login, time()+9999999);
//Обновляем логин в куках
}
echo "<html><head><meta http-equiv='Refresh' content='5; URL=page.php?id=".$_SESSION['id']."'>
</head>
<body>Ваш логин изменен! Вы будете перемещены через 5 сек.
Если не хотите ждать, то <a href='page.php?id=".
$_SESSION['id']."'>нажмите сюда.</a></body></html>";}
//отправляем пользователя назад
}
////////////////////////
////////ИЗМЕНЕНИЕ ПАРОЛЯ
////////////////////////
else if (isset($_POST['password']))
//Если существует пароль
{
$password = $_POST['password'];
$password = stripslashes($password);$password = htmlspecialchars($password);$password = trim($password);
//удаляем все лишнее
if ($password == '') { exit("Вы не ввели пароль");}
//если пароль не введен, то выдаем ошибку
if (strlen($password) < 3 or strlen($password) > 15) {
//проверка на количество символов
exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");
//останавливаем выполнение сценариев
}
$password = md5($password);//шифруем пароль
$password = strrev($password);
// для надежности добавим реверс
$password = $password."b3p6f";
//можно добавить несколько своих символов по вкусу,
// например, вписав "b3p6f". Если этот пароль будут
//взламывать методом подбора у себя на сервере этой же
//md5,то явно ничего хорошего не выйдет. Но советую ставить
//другие символы, можно в начале строки или в середине.
//При этом необходимо увеличить длину поля password в базе.
//Зашифрованный пароль может получится гораздо большего
//размера.
$result4 = mysql_query("UPDATE users SET password='$password' WHERE login='$old_login'",$db);//обновляем пароль
if ($result4=='TRUE') {//если верно, то обновляем его в сессии
$_SESSION['password'] = $password;
if (isset($_COOKIE['password'])) {
setcookie("password",$_POST['password'], time()+9999999);//Обновляем пароль в куках, если они есть
}
echo "<html><head><meta http-equiv='Refresh' content='5;
URL=page.php?id=".$_SESSION['id']."'></head><body>Ваш
пароль изменен! Вы будете перемещены через 5 сек. Если не
хотите ждать, то <a href='page.php?id=".$_SESSION['id'].
"'>нажмите сюда.</a></body></html>";}
//отправляем обратно на его страницу
}
?>
<?php
if (isset($_POST['b_day']) && ! empty($_POST['b_day'])) $b_day = $_POST['b_day'];
if (isset($_POST['b_month']) && ! empty($_POST['b_month'])) $b_month = $_POST['b_month'];
if (isset($_POST['b_year']) && ! empty($_POST['b_year'])) $b_year = $_POST['b_year'];
if (isset($_POST['gender']) && ! empty($_POST['gender'])) $gender = $_POST['gender'];
if (isset($_POST['height']) && ! empty($_POST['height'])) $height = $_POST['height'];
if (isset($_POST['family']) && ! empty($_POST['family'])) $family = $_POST['family'];
if (isset($_POST['children']) && ! empty($_POST['children'])) $children = $_POST['children'];
if (isset($_POST['education']) && ! empty($_POST['education'])) $education = $_POST['education'];
if (isset($_POST['country']) && ! empty($_POST['country'])) $country = $_POST['country'];
if (isset($_POST['city_ru']) && ! empty($_POST['city_ru'])) $city_ru = $_POST['city_ru'];
if (isset($_POST['city_en']) && ! empty($_POST['city_en'])) $city_en = $_POST['city_en'];
if (isset($_POST['confession']) && ! empty($_POST['confession'])) $confession = $_POST['confession'];
if (isset($_POST['church']) && ! empty($_POST['church'])) $church = $_POST['church'];
if (isset($_POST['about_ru']) && ! empty($_POST['about_ru'])) $about_ru = $_POST['about_ru'];
if (isset($_POST['about_en']) && ! empty($_POST['about_en'])) $about_en = $_POST['about_en'];
if (isset($b_day, $b_month, $b_year, $gender, $height,
$family, $children, $education, $country, $city_ru,
$city_en, $confession, $church, $about_ru, $about_en))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result = mysql_query ("UPDATE users SET b_day='$b_day',
b_month='$b_month', b_year='$b_year', gender='$gender',
height='$height', family='$family', children='$children',
education='$education', country='$country',
city_ru='$city_ru', city_en='$city_en',
confession='$confession', church='$church',
about_ru='$about_ru', about_en='$about_en'
WHERE WHERE login='$login'");
printf ("UPDATE: %d\n", mysql_affected_rows());
if ($result == 'true') {echo "<p>Ваши данные обновлены!</p>";}
else {echo "<p>Ваши данные не обновлены!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию, поэтому информация не может быть добавлена</p>";
}
?>
|
просьба покритиковать | |
|
|
|
|
|
|
|
для: franko
(01.02.2011 в 17:44)
| | В UPDATE-запросе идет два раза WHERE WHERE
PS Лучше такие объемные листинги прикреплять к сообщению в виде файла. | |
|
|
|
|
 3.2 Кб |
|
|
для: cheops
(01.02.2011 в 17:54)
| | делаю
if (isset($_POST['b_day']) && ! empty($_POST['b_day'])) $b_day = $_POST['b_day'];
if (isset($_POST['b_month']) && ! empty($_POST['b_month'])) $b_month = $_POST['b_month'];
if (isset($_POST['b_year']) && ! empty($_POST['b_year'])) $b_year = $_POST['b_year'];
|
if (isset($b_day, $b_month, $b_year, $gender,
$height, $family, $children, $education, $country,
$city_ru, $city_en, $confession, $church, $about_ru,
$about_en))
|
$result = mysql_query ("UPDATE users SET
b_day='$b_day', b_month='$b_month', b_year='$b_year',
gender='$gender', height='$height', family='$family',
children='$children', education='$education',
country='$country', city_ru='$city_ru', city_en='$city_en',
confession='$confession', church='$church',
about_ru='$about_ru', about_en='$about_en'
WHERE login='$login'");
|
все обновляется. кроме b_day и b_year. в Базе запись ноль.
Вывожу:
Это b_day - \\\'31\\\'
Это b_month - 12
Это b_year - \\\'1999\\\'
у всех тип varchar.
поменял тип на int
Но все равно
Это b_day - \\\'31\\\'
Это b_month - 12
Это b_year - \\\'1999\\\'
Где ошибка? | |
|
|
|
|
|
|
|
для: franko
(01.02.2011 в 18:19)
| | кто-нибудь знает? | |
|
|
|
|
|
|
|
для: franko
(01.02.2011 в 17:44)
| | У вас проверка практически отсутствует, а значит от:
if (isset($_POST['b_day']) && ....
по:
if (isset($b_day, $b_month ....
можно сократить до трех строк.
$login = htmlspecialchars($login);
А если я захочу в логине использовать символы <>, например <user>, а вы сами увеличиваете длину его. Зачем? | |
|
|
|
|