[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с кодом
Yoda
Пишу регистрацию на своём сайте. На личной странице, он почему то доходит только до определённого куска кода. помогите разобраться
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 написал(а):
Хм... Вот код авторизации
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
На момент пока я не решу эту проблему я убрал шифрование. так что ты помог мне с моей будущей проблемой smile.gif Посмотри, пожалуйста, код авторизации. Я так понимаю я не регистрирую сессию со значением пароля так?

Спустя 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 и отформатируй нормально код, чтоб глаза не ломать. Вообще тут все надо переписывать.

Спустя 10 минут, 31 секунда (20.12.2011 - 17:07) inpost написал(а):
Сначала выведи то, что у тебя в сессионных переменных и сверься с тем, что в БД.
Потом сам запрос:
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'])

В общем тут все надо переделывать.


_____________
Идеальной защиты не существует...
Быстрый ответ:

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