session_start();
include ("confl.php");
if (isset($_GET['id'])) {
$id =$_GET['id'];
} //id "хозяина" странички
else {
exit ("Вы зашли на страницу без параметра");
}
if (!preg_match("|^[\d]+$|", $id)) {
exit("Проверьте URL");
}
if (isset($_SESSION['login']) and isset($_SESSIOM['password'])) {
$login2 = $_SESSION['login'];
$password2 = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login2' AND password='$password2'");
$myrow2 = mysql_fetch_array($result2);
if (empty ($myrow2['id'])) {
exit ("Вход на страницу разрешён только зарегестрированным пользователям. Почему же не получается??"); //Вот сдесь код останавливается
}
}
else {
exit ("Вход на страницу разрешён только зарегестрированным пользователям. ");
}
$result = mysql_query("SELECT * FROM users WHERE id = '$id'");
$myrow = mysql_fetch_array($result);
if (empty($myrow['login'])) {
exit ("Пользователя не существует. Возможно он был удалён");
}
Спустя 35 секунд (20.12.2011 - 15:56) kovaldm написал(а):
До какого именно куска?
Тему щас закроют.
Тему щас закроют.
Спустя 8 минут, 56 секунд (20.12.2011 - 16:04) Yoda написал(а):
exit ("Вход на страницу разрешён только зарегестрированным пользователям. Почему же не получается??"); //Вот сдесь код останавливаетсяЯ обозначил комментарием где останавливается
Спустя 47 секунд (20.12.2011 - 16:05) killer8080 написал(а):
Yoda
добавь в начале
добавь в начале
error_reporting(E_ALL);увидишь где ошибка
Спустя 3 минуты, 11 секунд (20.12.2011 - 16:08) Yoda написал(а):
Ошибки не выдаёт. Просто доходит до этого условия и дальше не выполняет скрипт, а вот почему код дальше не идёт я разобраться не могу
Спустя 13 минут, 11 секунд (20.12.2011 - 16:22) TranceIT написал(а):
$myrow2['id'] пустая, вот и срабатывает exit
Спустя 2 минуты, 48 секунд (20.12.2011 - 16:24) Yoda написал(а):
Это понятно. Как это можно исправить?
Спустя 2 минуты, 16 секунд (20.12.2011 - 16:27) TranceIT написал(а):
Проверить запрос. Или такого логина и пароля действительно не существует, или пароль в базе зашифрован, а вы в незашифрованом виде его подставляете.
Спустя 6 минут, 12 секунд (20.12.2011 - 16:33) Yoda написал(а):
Хм... Вот код авторизации
Я так понимаю у меня $_SESSION['password'] вообще не существует? Или тут скорее подойдёт $_SESSION['pass'] ?
if($_POST['button']==true){
$login=$_POST['login'];
$password=$_POST['password'];
$pass=($password); //Вставить мд5
$query="SELECT login,password,id FROM users";
$result=mysql_query($query) or die (mysql_error());
$res=mysql_fetch_array($result);
if ($res[0]==$login){
if($res[1]==$pass){
$_SESSION['login']=$res['login'];
$_SESSION['id']=$res['id'];
echo "Вы вошли на сайт, как ".$_SESSION['login'];
}
else
{
echo "Пароли не совпадают";
}
}
else
{
echo "Не совпадение логина";
}
}
Я так понимаю у меня $_SESSION['password'] вообще не существует? Или тут скорее подойдёт $_SESSION['pass'] ?
Спустя 4 минуты, 24 секунды (20.12.2011 - 16:37) TranceIT написал(а):
Если в $pass у вам md5 пароля, то и тут надо md5 подставлять.
$result2 = mysql_query("SELECT id FROM users WHERE login='" . $login2 . "' AND password='" . md5($password2) . "'");
Спустя 4 минуты, 6 секунд (20.12.2011 - 16:41) johniek_comp написал(а):
убери exit() везде, если условие сработает то дальше код не пойдет и страница станет. замени на echo() и вообще тут надо код переписать, зачем применял exit если не знаешь как он себя ведёт? бери готовое решение и парь мозг.
Спустя 1 минута, 4 секунды (20.12.2011 - 16:42) Yoda написал(а):
TranceIT
На момент пока я не решу эту проблему я убрал шифрование. так что ты помог мне с моей будущей проблемой
Посмотри, пожалуйста, код авторизации. Я так понимаю я не регистрирую сессию со значением пароля так?
На момент пока я не решу эту проблему я убрал шифрование. так что ты помог мне с моей будущей проблемой

Спустя 1 минута, 27 секунд (20.12.2011 - 16:44) Yoda написал(а):
Цитата |
убери exit() везде, если условие сработает то дальше код не пойдет и страница станет. замени на echo() и вообще тут надо код переписать, зачем применял exit если не знаешь как он себя ведёт? бери готовое решение и парь мозг. |
Ну если код не будет работать то зачем ему работать
после ошибки? Для этого я и останавливаю скрипт
Спустя 12 минут, 43 секунды (20.12.2011 - 16:57) killer8080 написал(а):
Yoda
перед тем как делать mysql_fetch_array (кстати тут логичней mysql_fetch_assoc), нужно проверять наличие результата с помощью mysql_num_rows.
PS и отформатируй нормально код, чтоб глаза не ломать. Вообще тут все надо переписывать.
перед тем как делать mysql_fetch_array (кстати тут логичней mysql_fetch_assoc), нужно проверять наличие результата с помощью mysql_num_rows.
PS и отформатируй нормально код, чтоб глаза не ломать. Вообще тут все надо переписывать.
Спустя 10 минут, 31 секунда (20.12.2011 - 17:07) inpost написал(а):
Сначала выведи то, что у тебя в сессионных переменных и сверься с тем, что в БД.
Потом сам запрос:
mysql_query("") or die(mysql_error());
Потом сам запрос:
mysql_query("") or die(mysql_error());
Спустя 3 минуты, 26 секунд (20.12.2011 - 17:11) killer8080 написал(а):
inpost
там с логикой проблемы, один этот запрос чего стоит
там с логикой проблемы, один этот запрос чего стоит
$query="SELECT login,password,id FROM users";
Спустя 20 часов, 31 минута, 41 секунда (21.12.2011 - 13:42) Yoda написал(а):
А что не так в этом запросе?
Спустя 5 минут, 31 секунда (21.12.2011 - 13:48) m4a1fox написал(а):
Yoda
Цитата |
А что не так в этом запросе? |
Скорее я думаю, killer8080 говорил про синтаксис. ИМХО так правильнее
$query="SELECT `login`, `password`, `id` FROM `users`" or die(mysql_error());
Спустя 3 часа, 10 минут, 27 секунд (21.12.2011 - 16:58) killer8080 написал(а):
Цитата (Yoda @ 21.12.2011 - 12:42) |
А что не так в этом запросе? |
Что не так? Вглядись внимательно в свой код.
if($_POST['button']==true){
$login=$_POST['login'];
$password=$_POST['password'];
$pass=($password); //Вставить мд5
$query="SELECT login,password,id FROM users";
$result=mysql_query($query) or die (mysql_error());
$res=mysql_fetch_array($result);
if ($res[0]==$login){
if($res[1]==$pass){
$_SESSION['login']=$res['login'];
$_SESSION['id']=$res['id'];
echo "Вы вошли на сайт, как ".$_SESSION['login'];
}
else
{
echo "Пароли не совпадают";
}
}
else
{
echo "Не совпадение логина";
}
}
Этим запросом ты получаешь полный вывод всех юзеров в таблице, затем хватаешь оттуда самую первую запись, и сравниваешь логин и пароль. Каким образом оно может работать?
Логин и пароль нужно вводить в условие sql запроса.
Второй момент, бессмысленно делать сравнение так
if($_POST['button']==true)
достаточно будет так
if($_POST['button'])
В общем тут все надо переделывать.
_____________
Идеальной защиты не существует...