<?php
session_start();
// Проверка нажатия клавиши "Войти"
if (!isset($_POST[‘enter’]))
{
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name=‘enter’ value="Войти">
</form></center>
<?php
}
else
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
// Если кнопка нажата и если поля логина и пароля не пустые
if ((!empty($email)) or (!empty($pass)))
{
$pass = md5($pass);
require_once("connect.php");
// формируем SQL-запрос
$sql = "SELECT email,pass FROM USERS WHERE email='".$email."' and pass='".$pass."'";
// делаем запрос
$result = mysql_query ($sql);
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION[‘autorized’]=true;
$_SESSION[‘email’]=$safe_name;
$_SESSION[‘role’]=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
}
else
{
echo "<center><h4>Не введены данные</h4><br><a href=login.php>Назад</a></center>";
}
}
?>
Спустя 44 минуты, 38 секунд (13.07.2011 - 07:13) YVSIK написал(а):
у меня вот такая штука получилась, сравни
она работает уже и очень похожа на вашу посмотри тут
в вашем скрипе сразу два else подряд
что и не верно не соответствует логике
переправте первое else на ifelse
она работает уже и очень похожа на вашу посмотри тут
в вашем скрипе сразу два else подряд
что и не верно не соответствует логике
переправте первое else на ifelse
Спустя 7 минут, 50 секунд (13.07.2011 - 07:21) Druids написал(а):
Цитата (YVSIK @ 13.07.2011 - 04:13) |
у меня вот такая штука получилась, сравни она работает уже и очень похожа на вашу посмотри тут |
Спасибо, сейчас ваш скрипт попробую переделать под себя. =)
Но вот хотелось бы в своём найти ошибку =) уже всё вроде пересмотрел, а ошибку так и не нашёл =(
Можешь рассказать принцип вот этой сроки, а то у меня с мускулом ещё пока проблемно.
$result = mysql_query("SELECT id FROM `reg_li_ag` WHERE `loginl` = '$loginl'"
." AND `parol` = '$parol'", $db)
Интересует почему select id?
И в примере моего скрипта, может будет тоже id?
Спустя 8 минут, 19 секунд (13.07.2011 - 07:29) YVSIK написал(а):
знаешь самоя главная ошибка это написание самого стиля
скрипта , вот смотри всё в одной строчке начинается
и не видать где начало а где конец того или иного условия
я да и все так начинают писать А потом приведу и нормальному виду
вот это и сбивает с толку ,
потом как всегда уже не наступит никогда
скрипта , вот смотри всё в одной строчке начинается
и не видать где начало а где конец того или иного условия
я да и все так начинают писать А потом приведу и нормальному виду
вот это и сбивает с толку ,
потом как всегда уже не наступит никогда
Спустя 9 минут, 24 секунды (13.07.2011 - 07:39) Druids написал(а):
Привел к читабельному виду. ifelse думаю не нужен =) каждый else относится к своему if. Или я напутал?
Спустя 4 минуты, 46 секунд (13.07.2011 - 07:44) YVSIK написал(а):
Цитата |
Интересует почему select id? И в примере моего скрипта, может будет тоже id? |
ну у меня такая тогда была логика ID он-же один для одного пользователя
другого ID уже не будет
далее просто перечислил по каким полям в этом ID искать
и запускать сессию
Спустя 2 минуты, 26 секунд (13.07.2011 - 07:46) YVSIK написал(а):
смотри сам что написал два отдельных скрипа
ты просто разорвал один вот и условия не проходят
вот как помогают этот новый стиь сам терь видить должен
у тя новый скрипт начинаеться условия else
ты просто разорвал один вот и условия не проходят
вот как помогают этот новый стиь сам терь видить должен
у тя новый скрипт начинаеться условия else
Спустя 3 минуты, 42 секунды (13.07.2011 - 07:50) Druids написал(а):
Не могу понять, де разорвал, только что все условия проверил. все if и else. всё верно =)
Спустя 26 секунд (13.07.2011 - 07:50) YVSIK написал(а):
терь правило в одном if должен быть только один else
только один !!
только один !!
Спустя 1 минута, 41 секунда (13.07.2011 - 07:52) YVSIK написал(а):
Цитата |
Не могу понять, де разорвал, только что все условия проверил. все if и else. всё верно =) |
теперь они стали полностью независимы
получилось что в каждом свое условие
потому и нет желаемого результата
Цитата |
а то у меня с мускулом ещё пока проблемно. |
в подпись глянь пригодится для мускула
Спустя 5 минут, 58 секунд (13.07.2011 - 07:58) Druids написал(а):
Цитата (YVSIK @ 13.07.2011 - 04:50) |
терь правило в одном if должен быть только один else только один !! |
Одному if должен принадлежать только 1 else =)
Не получается сообразить где я напутал. можешь переписать как будет верно?
Спустя 5 минут, 27 секунд (13.07.2011 - 08:03) YVSIK написал(а):
<?php
}
else
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
вот твоё начало скрипта ??? с чего он начинаетьс ???? с чего ????
вот так переделай
<?php session_start(); ?>
тут код формы или ещё какойнить далЬше второй скрипт
<?php
if (!isset($_POST[‘enter’]))
{
else
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
Спустя 30 минут, 41 секунда (13.07.2011 - 08:34) Druids написал(а):
Тогда может условие всё переделать под и будет так?
<?php
session_start();
// Проверка нажатия клавиши "Войти"
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name=‘enter’ value="Войти">
</form></center>
<?php
if (isset($_POST[‘enter’]) and ((!empty($email)) or (!empty($pass))))
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
$pass = md5($pass);
require_once("connect.php");
// формируем SQL-запрос
$sql = "SELECT id FROM USERS WHERE email='".$email."' and pass='".$pass."'";
// делаем запрос
$result = mysql_query ($sql);
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION[‘autorized’]=true;
$_SESSION[‘email’]=$safe_name;
$_SESSION[‘role’]=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
}
else
{
echo "Проверьте Логин и пароль";
}
?>
Спустя 5 минут, 2 секунды (13.07.2011 - 08:39) Druids написал(а):
Но это в конец не верно получается =(
Спустя 6 минут, 4 секунды (13.07.2011 - 08:45) quickxyan написал(а):
сначала идет проверка переменной на пустоту, а потом если условие проходит ты ей что-то присваиваешь - не очень правильный подход.
if (isset($_POST['enter']) and ((!empty($_POST['email'])) or (!empty($_POST['pass']))))
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
Спустя 2 минуты, 13 секунд (13.07.2011 - 08:47) Админ написал(а):
Цитата |
‘enter’ |
это что за кавычки такие интересные
Цитата |
if (isset($_POST[‘enter’]) and ((!empty($email)) or (!empty($pass)))) |
а переменные то откуда берутся
Спустя 13 секунд (13.07.2011 - 08:47) YVSIK написал(а):
$result = mysql_query ($sql);
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION[‘autorized’]=true;
$_SESSION[‘email’]=$safe_name;
$_SESSION[‘role’]=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
знаешь ту полная логика ваша отсутствует
попробуйте сказать словам что тут написано
и прогворите что теперь я написал
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
die что оно значит ?
может eche
Спустя 2 минуты, 15 секунд (13.07.2011 - 08:50) Админ написал(а):
YVSIK
не путай человека - сам вообще набрал бы в гугле что значит die
не путай человека - сам вообще набрал бы в гугле что значит die
Спустя 3 минуты, 49 секунд (13.07.2011 - 08:53) Админ написал(а):
а так по делу если - не будет этот скрипт никогда работать ибо валидация проходит после того как страница сгенерирована - а это господа только аяксом можно сделать
Спустя 4 минуты, 3 секунды (13.07.2011 - 08:58) Druids написал(а):
Последний вариант скрипта вот такой: Ошибку выдаёт что "Логин или пароль не верны, а в базе и логин и пасс есть"
2 Админ, как тогда сделать норм скрипт? я уже мозг себе вынес =(
<?php
session_start();
// Проверка нажатия клавиши "Войти"
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name=‘enter’ value="Войти">
</form></center>
<?php
if (isset($_POST[‘enter’]))
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
if ((!empty($email)) or (!empty($pass)))
{
$pass = md5($pass);
require_once("connect.php");
// формируем SQL-запрос
$sql = "SELECT email, pass FROM USERS WHERE email='".$email."' and pass='".$pass."'";
// делаем запрос
$result = mysql_query ($sql);
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION[‘autorized’]=true;
$_SESSION[‘email’]=$safe_name;
$_SESSION[‘role’]=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
}
}
?>
2 Админ, как тогда сделать норм скрипт? я уже мозг себе вынес =(
Спустя 7 минут, 13 секунд (13.07.2011 - 09:05) Админ написал(а):
Цитата |
как тогда сделать норм скрипт? |
руками наверно.
У тебя в одном файле форма и тут же ниже проверка - но пойми простую вещь php формирует страницу - а как скрипт может чё то там проверить если он уже отработал. хотя хрен его знает - я таких экспериментов не ставил.
<?php
session_start();
// Проверка нажатия клавиши "Войти"
if (isset($_POST[‘enter’]))
{
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
if ((!empty($email)) or (!empty($pass)))
{
$pass = md5($pass);
require_once("connect.php");
// формируем SQL-запрос
$sql = "SELECT email, pass FROM USERS WHERE email='".$email."' and pass='".$pass."'";
// делаем запрос
$result = mysql_query ($sql);
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION[‘autorized’]=true;
$_SESSION[‘email’]=$safe_name;
$_SESSION[‘role’]=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
}
}
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="этот файл" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name="enter" value="Войти">
</form></center>
дальше лень и кавычки исправь на человечьи
Спустя 1 минута, 19 секунд (13.07.2011 - 09:06) quickxyan написал(а):
ну вот таки стоит эти кавычки поменять!
if (isset($_POST['enter']))
$_SESSION['autorized']=true;
$_SESSION['email']=$safe_name;
$_SESSION['role']=$line[2];
Спустя 18 минут, 38 секунд (13.07.2011 - 09:25) Druids написал(а):
Исправил ковычки, поставил вариант Админа, но отказывается воспринимать из базы данных логин и пароль =(
может моя ошибка, где-то здесь?
может моя ошибка, где-то здесь?
$sql = "SELECT email, pass FROM USERS WHERE email='".$email."' and pass='".$pass."'";
// делаем запрос
$result = mysql_query ($sql);
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
Спустя 5 минут, 23 секунды (13.07.2011 - 09:30) quickxyan написал(а):
я бы сделал так(догадываюсь, что делает mysql_fetch_row, но точно не знаю)
if (!mysql_num_rows($result))
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_assoc($result);
$_SESSION['autorized']=true;
$_SESSION['email']=$line['email']; //тут поле с БД
$_SESSION['role']=$line['role']; //тут тоже
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
Спустя 25 минут, 8 секунд (13.07.2011 - 09:55) YVSIK написал(а):
Druids попробуй так
возьми мой скрипт и примени
и ещё любой скрипт начинается с малого
поробуй его минимизировать
чтоб только логика потом исправишь внесешь все необходимое
возьми мой скрипт и примени
и ещё любой скрипт начинается с малого
поробуй его минимизировать
чтоб только логика потом исправишь внесешь все необходимое
Спустя 2 минуты, 26 секунд (13.07.2011 - 09:58) Druids написал(а):
Сейчас я переписываю своё.
Вот смотрите.
берем с самого начала.
Начинаем с сессии (session_start() далее делаем проверку если нажата кнопка и правилен пароль с мылом, далее делаем сверку с базой а после этого уже авторизуемся?
А в самом конце уже вставляем форму
Вот смотрите.
берем с самого начала.
Начинаем с сессии (session_start() далее делаем проверку если нажата кнопка и правилен пароль с мылом, далее делаем сверку с базой а после этого уже авторизуемся?
А в самом конце уже вставляем форму
Спустя 6 минут, 45 секунд (13.07.2011 - 10:04) YVSIK написал(а):
так щас найду тему свою как я дошел до этого скрипа своего
вотт http://phpforum.ru/index.php?showtopic=40622&st=0
вотт http://phpforum.ru/index.php?showtopic=40622&st=0
Спустя 57 минут (13.07.2011 - 11:01) DeeKeiD написал(а):
Попробуй так
Свернутый текст
<?php
session_start();
if(isset($_POST['enter']))
{
/* Пинимаем данные из формы */
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
/* Проверяем на заполнение */
if(empty($pass) || empty($email))
{
die('Заполните все поля');
}
else
{
/* Проверяем на существование пользователя */
$result = "SELECT `email`, `pass` FROM `USERS` WHERE `email` = '".$email."' AND `pass` = '".$pass."'";
if (mysql_num_rows($result) < 1)
{
die ("Не верный логин или пароль <a href='index.php'> На главную </a>");
}
else
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION[‘autorized’]=true;
$_SESSION[‘email’]=$safe_name;
$_SESSION[‘role’]=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
}
}
else
{
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="этот файл" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name="enter" value="Войти">
</form>
</center>
<?php
}
?>
Спустя 4 часа, 48 минут, 58 секунд (13.07.2011 - 15:50) Druids написал(а):
Ошибка вот в этом кусочке кода. Матерится вот так... Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in W:\home\localhost\www\123\login.php on line 18
Как подправить код?
Весь код
Как подправить код?
/* Проверяем на существование пользователя */
$result="SELECT email, pass FROM USERS WHERE email='".$email."', pass='".$pass."'";
if (mysql_num_rows($result))
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION['autorized']=true;
$_SESSION['email']=$email;
$_SESSION['role']=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
else
{
echo 'Логин или пароль не верны!';
}
Весь код
<?php
session_start();
if(isset($_POST['enter']))
{
/* Пинимаем данные из формы */
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
/* Проверяем на заполнение */
if(empty($pass) || empty($email))
{
echo 'Заполните все поля';
}
else
{
/* Проверяем на существование пользователя */
$result="SELECT email, pass FROM USERS WHERE email='".$email."', pass='".$pass."'";
if (mysql_num_rows($result))
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION['autorized']=true;
$_SESSION['email']=$email;
$_SESSION['role']=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
else
{
echo 'Логин или пароль не верны!';
}
}
}
else
{
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name="enter" value="Войти">
</form>
</center>
<?php
}
?>
Спустя 9 минут, 57 секунд (13.07.2011 - 16:00) Invis1ble написал(а):
$result = mysql_query(
"SELECT `email`, `pass`
FROM `USERS`
WHERE `email` = '".mysql_real_escape_string($email) . "' AND
`pass` = '" . mysql_real_escape_string($pass) . "'"
) or die(mysql_error());
Спустя 2 минуты, 29 секунд (13.07.2011 - 16:03) Druids написал(а):
Теперь вот такая ошибка в тех же строках.
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in W:\home\localhost\www\123\login.php on line 17
Access denied for user 'ODBC'@'localhost' (using password: NO)
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in W:\home\localhost\www\123\login.php on line 17
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in W:\home\localhost\www\123\login.php on line 17
Access denied for user 'ODBC'@'localhost' (using password: NO)
Спустя 1 минута, 14 секунд (13.07.2011 - 16:04) Админ написал(а):
ну дак тебе ж всё написали - нету у тебя с базой соединения
Спустя 55 секунд (13.07.2011 - 16:05) Invis1ble написал(а):
Druids
все верно, где mysql_connect() ? где mysql_select_db() ?
все верно, где mysql_connect() ? где mysql_select_db() ?
Спустя 1 минута, 45 секунд (13.07.2011 - 16:07) Druids написал(а):
Цитата (Invis1ble @ 13.07.2011 - 13:05) |
Druids все верно, где mysql_connect() ? где mysql_select_db() ? |
забыл пропиать =)
Прописал, теперь
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' pass='934d980be49bbe4694aae578cd90cf86'' at line 1
Спустя 2 минуты, 14 секунд (13.07.2011 - 16:09) Invis1ble написал(а):
Druids
посмотри еще раз мой пост, я его подредактировал
посмотри еще раз мой пост, я его подредактировал
Спустя 1 минута, 36 секунд (13.07.2011 - 16:11) YVSIK написал(а):
У вас есть ошибка в синтаксисе SQL; проверить документацию по используемой версии MySQL на предмет корректного синтаксиса около 'проходят = '934d980be49bbe4694aae578cd90cf86''в строке 1
вот полный перевод гуглом
вот полный перевод гуглом
Спустя 4 минуты, 4 секунды (13.07.2011 - 16:15) Druids написал(а):
Да английский я и без переводчика знаю =)
Теперь всё таже трабла, что и с самого начала.
Он выводит теперь постоянно, что логин и пароль не верны.
Но если if (mysql_num_rows($result)) меняем на if (!mysql_num_rows($result)), то авторизуются абсолютно все =)
Как такое правится? ответ руками я уже слышал =)
Теперь всё таже трабла, что и с самого начала.
<?php
session_start();
if(isset($_POST['enter']))
{
require_once("connect.php");
/* Пинимаем данные из формы */
$pass = trim($_POST['pass']);
$email = trim($_POST['email']);
/* Проверяем на заполнение */
if(empty($pass) || empty($email))
{
echo 'Заполните все поля';
}
else
{
/* Проверяем на существование пользователя */
$pass=md5($pass);
$result = mysql_query(
"SELECT `email`, `pass`
FROM `USERS`
WHERE `email` = '".mysql_real_escape_string($email) . "' AND
`pass` = '" . mysql_real_escape_string($pass) . "'"
) or die(mysql_error());
if (mysql_num_rows($result))
{
// записываем переменные в сессию
$line = mysql_fetch_row($result);
$_SESSION['autorized']=true;
$_SESSION['email']=$email;
$_SESSION['role']=$line[2];
// выводим ссылку для входа в админку (можно сделать перенаправление)
echo "<center><h4>Авторизация прошла успешно</h4><br><a href=index.php>Вернуться на главную</a><br><br><a href=’admin.php’>Войти в админку</a></center>";
}
else
{
echo 'Логин или пароль не верны!';
}
}
}
else
{
?>
<center>
<h4>АВТОРИЗАЦИЯ</h4><br>
<form action="" method="post">
<h4>Имя:</h4>
<input type="text" name="email" value=""><br><br>
<h4>Password:</h4>
<input type="password" name="pass"><br><br>
<input type="submit" name="enter" value="Войти">
</form>
</center>
<?php
}
?>
Он выводит теперь постоянно, что логин и пароль не верны.
Но если if (mysql_num_rows($result)) меняем на if (!mysql_num_rows($result)), то авторизуются абсолютно все =)
Как такое правится? ответ руками я уже слышал =)
Спустя 2 минуты, 57 секунд (13.07.2011 - 16:18) Админ написал(а):
Цитата |
FROM `USERS` |
первое что коробит - ты зачем название таблицы большими написал
Спустя 1 минута, 2 секунды (13.07.2011 - 16:19) Druids написал(а):
Цитата (Админ @ 13.07.2011 - 13:18) | ||
первое что коробит - ты зачем название таблицы большими написал |
Да у меня и сама таблица большими буквами написана. в phpmyadmin, т.е. синтаксис верен. в названии ошибки нет.
http://clip2net.com/clip/m56917/1310563169-clip-31kb.png - на всякий случай скрин таблички.
Спустя 2 минуты, 21 секунда (13.07.2011 - 16:21) YVSIK написал(а):
так когда в базу прописываешь ты пароль также
хешируешь ? $pass=md5($pass);
может там нет такого пароля или он не совпадает ?)))))))
гГг=== согласно скина у тя в базе ведь нет ничего
хешируешь ? $pass=md5($pass);
может там нет такого пароля или он не совпадает ?)))))))
гГг=== согласно скина у тя в базе ведь нет ничего
Спустя 1 минута, 53 секунды (13.07.2011 - 16:23) Winston написал(а):
Это лишнее
Цитата (Druids @ 13.07.2011 - 16:15) |
`pass` = '" . mysql_real_escape_string($pass) . "'" |
Достаточно
`pass` = '" .$pass. "'"
А если так написать
Цитата |
if (mysql_num_rows($result) > 0) |
Спустя 13 секунд (13.07.2011 - 16:23) Druids написал(а):
Цитата (YVSIK @ 13.07.2011 - 13:21) |
так когда в базу прописываешь ты пароль также хешируешь ? $pass=md5($pass); может там нет такого пароля или он не совпадает ?))))))) гГг=== согласно скина у тя в базе ведь нет ничего |
тоже, и пароль есть.
на скрине только поля таблички и название. А содержимое в другой вкладке =)
Спустя 2 минуты, 36 секунд (13.07.2011 - 16:26) Druids написал(а):
Цитата (PHPprogramer @ 13.07.2011 - 13:23) | ||||
Это лишнее
Достаточно `pass` = '" .$pass. "'" А если так написать
|
Логин и пароль не верны
Спустя 1 минута, 20 секунд (13.07.2011 - 16:27) Winston написал(а):
Попробуй вообще без mysql_real_escape_string написать в запросе
Спустя 1 минута, 6 секунд PHPprogramer написал(а):
И пропиши вот так на всякий случай
И сравни с тем, что в базе
Спустя 1 минута, 6 секунд PHPprogramer написал(а):
И пропиши вот так на всякий случай
echo $pass = md5(trim($_POST['pass']));
echo $email = trim($_POST['email']);
И сравни с тем, что в базе
Спустя 5 минут, 21 секунда (13.07.2011 - 16:32) Druids написал(а):
PHPprogramer
тоже самое. проверил что выводит.
Тоже самое что и в базе.
тоже самое. проверил что выводит.
Тоже самое что и в базе.
Спустя 1 минута, 7 секунд (13.07.2011 - 16:33) Админ написал(а):
Цитата |
Да у меня и сама таблица большими буквами написана. в phpmyadmin, т.е. синтаксис верен. в названии ошибки нет. |
зато в настройках phpmyadmin есть такая интересная переменная как lower_case_table_names
Спустя 2 минуты, 59 секунд (13.07.2011 - 16:36) YVSIK написал(а):
$pass=md5($pass);
$result = mysql_query(
"SELECT `email`, `pass`
FROM `USERS`
WHERE `email` = '".mysql_real_escape_string($email) . "' AND
`pass` = '" . mysql_real_escape_string($pass) . "'"
) or die(mysql_error());
тут все дело в кавычках вы их перепутали задом на перед
щас подравлю
Спустя 41 секунда (13.07.2011 - 16:37) Druids написал(а):
Цитата (Админ @ 13.07.2011 - 13:33) | ||
зато в настройках phpmyadmin есть такая интересная переменная как lower_case_table_names |
толку 0. перепробовал Users, USERS, users - результат всегда 1 и тот-же
Спустя 1 минута, 11 секунд (13.07.2011 - 16:38) YVSIK написал(а):
теперь всё
надо лишь найти отличия
$pass=md5($pass);
$result = mysql_query(
"SELECT `email`, `pass`
FROM `USERS`
WHERE `email` =" '.mysql_real_escape_string($email) . '" AND
`pass` = "' . mysql_real_escape_string($pass) . '"
) or die(mysql_error());
надо лишь найти отличия
Спустя 39 секунд (13.07.2011 - 16:39) Winston написал(а):
Может у вас включены магические кавычки ?
Спустя 42 секунды PHPprogramer написал(а):
YVSIK
Спустя 42 секунды PHPprogramer написал(а):
YVSIK
Цитата (YVSIK @ 13.07.2011 - 16:36) |
тут все дело в кавычках вы их перепутали задом на перед |
Это к вам
Спустя 1 минута (13.07.2011 - 16:40) Админ написал(а):
покажи connect.php - а то я смотрю в базе кодировка ср1251
Спустя 1 минута, 42 секунды (13.07.2011 - 16:42) YVSIK написал(а):
да каккие магические кавычки то
вы местами поменяли эти "c '
сам попутал сдаюсь
вы местами поменяли эти "c '
сам попутал сдаюсь
Спустя 59 секунд (13.07.2011 - 16:43) Druids написал(а):
<?php
$sqlhost="localhost";
$sqluser="root";
$sqlpass="";
$db="WorldVote";
//Подключение к MySQL
mysql_connect ($sqlhost, $sqluser, $sqlpass) or die ("MySQL не доустпен ".mysql_error());
//Подключение к БД
mysql_select_db ($db) or die ("Нет соединения с БД ".mysql_error());
?>
Коннект рабочий, проверял на скрипте регистрации
Спустя 19 секунд (13.07.2011 - 16:43) Winston написал(а):
Цитата (YVSIK @ 13.07.2011 - 16:42) |
вы местами поменяли эти "c ' |
Вы не правильно написали.
Спустя 1 минута, 31 секунда (13.07.2011 - 16:44) Админ написал(а):
=" '.mysql_real_escape_string($email) . '" AND
`pass` = "' . mysql_real_escape_string($pass) . '"
ржу ни магу
Спустя 9 секунд (13.07.2011 - 16:45) Winston написал(а):
Возможно база в одной кодировке, а скрипт отдает в другой
Я дописал кодировке в конце кода, поменяйте utf8 на ту которая у вас, если что
<?php
$sqlhost="localhost";
$sqluser="root";
$sqlpass="";
$db="WorldVote";
//Подключение к MySQL
mysql_connect ($sqlhost, $sqluser, $sqlpass) or die ("MySQL не доустпен ".mysql_error());
//Подключение к БД
mysql_select_db ($db) or die ("Нет соединения с БД ".mysql_error());
mysql_query('SET NAMES utf8');
?>
Я дописал кодировке в конце кода, поменяйте utf8 на ту которая у вас, если что
Спустя 2 минуты, 23 секунды (13.07.2011 - 16:47) YVSIK написал(а):
$db="WorldVote";
а база как зоветься к которой вы цепляетесь ???
FROM `USERS`
Спустя 1 минута, 6 секунд (13.07.2011 - 16:48) Druids написал(а):
Цитата (YVSIK @ 13.07.2011 - 13:47) |
$db="WorldVote"; а база как зоветься к которой вы цепляетесь ??? |
Ну а как думаешь? =)
WorldVote - я же скринчик кидал =)
Мне кажется или таблица от базы отличается?
Таблица USERS, База WorldVote
Спустя 18 секунд (13.07.2011 - 16:48) Invis1ble написал(а):
пароль в запросе где хешируется? что-то не понятно....
покажи скрин содержимого из phpmyadmin и дамп запроса сделай.
покажи скрин содержимого из phpmyadmin и дамп запроса сделай.
$pass=md5($pass); // вот этого в коде я не увидел
$q = "SELECT `email`, `pass`
FROM `USERS`
WHERE `email` = '".mysql_real_escape_string($email) . "' AND
`pass` = '" . $pass . "'";
echo '<pre>'; print_r($q); echo '</pre>'; // смотрим, какой запрос получился и сравниваем со скриншотом таблицы
$result = mysql_query($q) or die(mysql_error());
Спустя 34 секунды (13.07.2011 - 16:49) Winston написал(а):
Кодировка сайта, какая у тебя, и базы ?
Спустя 35 секунд (13.07.2011 - 16:50) YVSIK написал(а):
FROM `USERS`
а зоветься она как ???
в запросе ты к другой цепляешся к другой
а зоветься она как ???
в запросе ты к другой цепляешся к другой
Спустя 41 секунда (13.07.2011 - 16:50) Winston написал(а):
Спустя 1 минута, 5 секунд (13.07.2011 - 16:51) Druids написал(а):
Цитата (PHPprogramer @ 13.07.2011 - 13:49) |
Кодировка сайта, какая у тебя, и базы ? |
как вы и говорили сменил на cp1251_general_ci
Спустя 1 минута, 13 секунд (13.07.2011 - 16:53) Invis1ble написал(а):
Цитата |
Здесь |
да, провтыкал тогда экранирование естественно лишнее
Спустя 45 секунд (13.07.2011 - 16:53) Druids написал(а):
Цитата (Invis1ble @ 13.07.2011 - 13:48) |
пароль в запросе где хешируется? что-то не понятно.... покажи скрин содержимого из phpmyadmin и дамп запроса сделай. $pass=md5($pass); // вот этого в коде я не увидел |
SELECT `email`, `pass`
FROM `USERS`
WHERE `email` = 'druids91@mail.ru' AND
`pass` = '934d980be49bbe4694aae578cd90cf86'
Спустя 7 секунд (13.07.2011 - 16:53) Winston написал(а):
База у тебя в windows-1251 ?
Цитата (Druids @ 13.07.2011 - 16:51) |
как вы и говорили сменил на cp1251_general_ci |
Тогда в файле коннекта пропиши
mysql_query('SET NAMES cp1251');
Спустя 37 секунд (13.07.2011 - 16:54) Админ написал(а):
не ну сделай так в самом начале
include 'connect.php';
$res = mysql_query ("SELECT * FROM `USERS`");
while = ($row = mysql_fetch_assoc ($res))
{
echo $row ['pass'].'<br />';
}
Спустя 2 минуты, 16 секунд (13.07.2011 - 16:56) Invis1ble написал(а):
нужно прописать SET NAMES, как написал PHPProgramer, а также сам файл со скриптом желательно чтоб cp1251 тоже был
кстати, после смены кодировки БД, при том, что она наполенена данными в другой кодировке бывают бока, насколько я слышал
кстати, после смены кодировки БД, при том, что она наполенена данными в другой кодировке бывают бока, насколько я слышал
Спустя 2 минуты, 16 секунд (13.07.2011 - 16:59) Druids написал(а):
Invis1ble
PHPprogramer
Кодировку указал, как говорите, но проблема остаётся =(
Ругается на 4ю строку - while = ($row = mysql_fetch_assoc ($res))
Parse error: syntax error, unexpected '=', expecting '(' in W:\home\localhost\www\123\login.php on line 4
PHPprogramer
Кодировку указал, как говорите, но проблема остаётся =(
include 'connect.php';
$res = mysql_query ("SELECT * FROM `USERS`");
while = ($row = mysql_fetch_assoc ($res))
{
echo $row ['pass'].'<br />';
}
Ругается на 4ю строку - while = ($row = mysql_fetch_assoc ($res))
Parse error: syntax error, unexpected '=', expecting '(' in W:\home\localhost\www\123\login.php on line 4
Спустя 48 секунд (13.07.2011 - 16:59) Invis1ble написал(а):
= лишнее, очепятка
Спустя 19 секунд (13.07.2011 - 17:00) Админ написал(а):
while ($row = mysql_fetch_assoc ($res)) знак равно убери - блин тут редактор неудобный
Спустя 34 секунды (13.07.2011 - 17:00) Druids написал(а):
934d980be49bbe46
934d980be49bbe46
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at W:\home\localhost\www\123\login.php:6) in W:\home\localhost\www\123\login.php on line 8
934d980be49bbe46
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at W:\home\localhost\www\123\login.php:6) in W:\home\localhost\www\123\login.php on line 8
Спустя 31 секунда (13.07.2011 - 17:01) Invis1ble написал(а):
и покажи все таки 2 скрина, 1 - со структурой, 2-ой - с данными
Спустя 36 секунд (13.07.2011 - 17:01) Админ написал(а):
тогда я вообще ничего не понимаю
Спустя 42 секунды (13.07.2011 - 17:02) Druids написал(а):
Спустя 2 минуты, 24 секунды (13.07.2011 - 17:04) Invis1ble написал(а):
хеш пароля в БД 16-битный, видимо обрезанный, либо зашифрованный по другому алгоритму
в этом вся проблема
в этом вся проблема
Спустя 28 секунд (13.07.2011 - 17:05) Winston написал(а):
Скопируйте хеш пароля с базы и сравните его в скрипте
if($pass == 'a2d5f6.....')
echo 'OK';
else
echo 'bad';
Спустя 40 секунд (13.07.2011 - 17:06) Invis1ble написал(а):
PHPprogramer
да что там сравнивать, и так видно
да что там сравнивать, и так видно
Спустя 2 минуты, 36 секунд (13.07.2011 - 17:08) Админ написал(а):
ну ёлки палки - такая банальщина
Спустя 7 секунд (13.07.2011 - 17:08) Druids написал(а):
тогда вопрос, как её поправить? =-)
Спустя 5 минут, 46 секунд (13.07.2011 - 17:14) Invis1ble написал(а):
короче это md5-хеш обрезанный пополам
$q = "SELECT `email`, `pass`
FROM `USERS`
WHERE `email` = '" . mysql_real_escape_string($email) . "' AND
`pass` = '" . substr(md5($pass), 0, 16) . "'";
echo '<pre>'; print_r($q); echo '</pre>'; // смотрим, какой запрос получился и сравниваем со скриншотом таблицы
$result = mysql_query($q) or die(mysql_error());
Спустя 22 секунды (13.07.2011 - 17:14) Админ написал(а):
длину у поля pass сделай 32
Спустя 8 секунд (13.07.2011 - 17:15) Winston написал(а):
Во разфлудились мы здесь, аж форум ложится
Спустя 2 минуты, 3 секунды (13.07.2011 - 17:17) YVSIK написал(а):
Цитата |
так когда в базу прописываешь ты пароль также хешируешь ? $pass=md5($pass); |
????
Спустя 21 секунда (13.07.2011 - 17:17) Winston написал(а):
Цитата (Invis1ble @ 13.07.2011 - 17:04) |
хеш пароля в БД 16-битный |
А если попробовать отредактировать одну запись в таблице и посмотреть какой там хеш. Мне кажется, что он будет длиннее, т.к. PMA отображает не все содержимое этого поля ?
Спустя 2 минуты, 1 секунда (13.07.2011 - 17:19) Invis1ble написал(а):
нет, он же писал, что выводит скрипт Админа
и поле на скрине varchar(16)
и поле на скрине varchar(16)
Спустя 2 минуты, 15 секунд (13.07.2011 - 17:21) Druids написал(а):
Такс. подтер в базе записи. Начал регить их заново, слетела регистрация, не регит, 5 минут назад всё было ок. щас найду где косяк, и попробую с пасом разобраться
Спустя 1 минута, 39 секунд (13.07.2011 - 17:23) Winston написал(а):
И поставь для поля pass varchar(32)
Спустя 17 минут, 31 секунда (13.07.2011 - 17:40) Druids написал(а):
УРА, теперь всё работает. с меня каждому + в карму;)