Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проблема с мускулом


Автор: R.M. 8.9.2005, 14:04
Есть таблица в базе, в этой таблице 1 строка в ней 2 поля login и password
В поле login значение admin
В поле password значение 123

Есть запрос

Код

$sql = "SELECT login, password FROM admin WHERE login = '".mysql_escape_string($_POST['login'])."' AND password = '".(mysql_escape_string($password))."' LIMIT 1";

$res = mysql_query($sql);
if ($res) 
{
if (mysql_num_rows($res) <= 0) 
{
echo "Вы ошиблись при вводе логина/пароля<br>";
} else {
$_SESSION['admin'] = 1;
header("Location:admin.php");
}
} else {
echo mysql_error();
}


Всё впорядке, но когда в базе я меняю пароль и ввожу новый пароль в форме он пишет "Вы ошиблись при вводе логина/пароля", меняю на 123 всё ок

Автор: Mal Hack 8.9.2005, 15:58
Модератор: пожалуйста, создавайте темы В СПЕЦИАЛЬНОМ РАЗДЕЛЕ !!!

1. mysql_real_escape_string
2. не = , а BINARY =, куда точно БИНАРИ писать - не помню.
3. Пароль надо хэшированным хранить.
4. $password - может все-таки через $_POST?

Условия не логичные..
Код

if( ! $res )
 { echo mysql_error }
elseif( mysql_num_rows($res) == 0 ) 
 { ... }
else 
 { ... }

Автор: -=Ustas=- 9.9.2005, 09:57
Как и чем ты меняешь пароль?

Автор: R.M. 9.9.2005, 11:20
-=Ustas=-

В том то и дело что я через phpmyadmin просто меняю в поле например 123 на 12345 скрипт авторизации пишет что пароль неправильный. меняю обратно на 123 всё ок

Автор: -=Ustas=- 9.9.2005, 11:23
Меняй его своим скриптом.

Автор: R.M. 9.9.2005, 12:19
-=Ustas=-

Я ево ща пробую написать, а разве есть разница кто меняет данные я или скрипт?

Автор: R.M. 9.9.2005, 12:48
-=Ustas=-

Меняю своим

Код

$sql = "UPDATE admin SET password = $new"; 

$res = mysql_query($sql);


результат тотже, всё меняется, авторизация непускает

Автор: -=Ustas=- 9.9.2005, 13:19
Слушай, что ты чудеса какие-то рассказываешь! smile Выкинь сюда весь код вместе с формами.

Автор: R.M. 9.9.2005, 14:19
-=Ustas=-

Вот и я говорю чудеса! А может я чудак? smile Вот проверь.

Авторизация
Форма
auth.htm
Код

<style>
#itt {border: 1px solid rgb(108, 116, 127);}
</style>


<form action=auth.php method=post>
<table cellpadding=0 cellspacing=10 style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid;">
<tr>
<td>
Лоин: <input type=text name=login id=itt size=22><br><br>
Пароль: <input type=password name=password id=itt size=20><br><br>
<center><input type=submit value=Войти id=itt></center>
</td>
</tr>
</table>
</form>


Скрипт
auth.php
Код

<?
session_start();

$hostname = "localhost";
$username = "adminjbe";
$password = "123";
$dbName = "adminjbe";

$userstable = "admin";

MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не конектится");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");

$sql = "SELECT login, password FROM admin WHERE login = '".mysql_escape_string($_POST['login'])."' AND password = '".(mysql_escape_string($password))."' LIMIT 1";

$res = mysql_query($sql);
if ($res) 
{
if (mysql_num_rows($res) <= 0) 
{
echo "Вы ошиблись при вводе логина/пароля<br>";
} else {
$_SESSION['admin'] = 1;
header("Location:admin.php");
}
} else {
echo mysql_error();
}
?>


Админка
admin.php
Код

<?
session_start();
if(isset($_SESSION['admin'])) { echo "
<a href=add.php>Добавить новость</a><br><br><a href=change.php>Сменить пароль</a>
";}
else
echo "Вы не авторизированы";
?>


Т.к. новости пашут, вот смена пароля
форма
change.php
Код

<?
session_start();
?>
<style>
#itt {border: 1px solid rgb(108, 116, 127);}
</style>

<?
if(isset($_SESSION['admin']))
echo "
<table cellpadding=0 cellspacing=10 style='BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid;'>
<tr>
<td>
<form action=changepass.php method=post>
Новый пароль: <input type=password name=new size=16 id=itt><br><br>
<center><input type=submit value=Сменить id=itt></center>
</form>
</td>
</tr>
</table>
";
else
echo "Вы не авторизированы";
?>


скрипт
changepass.php
Код

<?
$hostname = "localhost";
$username = "adminjbe";
$password = "123";
$dbName = "adminjbe";

$userstable = "admin";

if(isset($_POST['new']))
{$new = $_POST['new'];}

MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не конектится");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");

$sql = "UPDATE admin SET password = $new"; 

$res = mysql_query($sql);
echo mysql_error();
MYSQL_CLOSE();
?>


Вот вобщем, я вообще непонимаю в чём дело smile

Автор: -=Ustas=- 9.9.2005, 14:28
Дествительно, оказывается это ты чудик! smile
Как ты думаешь, что сможет сделать этот запрос?
Цитата

Код

UPDATE admin SET password = $new

Добавлено @ 14:32
Форма смены пароля:
Код

<form action=changepass.php method=post>
Ваш логин : <input type=text name=login size=16 id=itt><br><br>
Новый пароль: <input type=password name=new size=16 id=itt><br><br>
<center><input type=submit value=Сменить id=itt></center>

SQL-запрос в файле changepass.php
Код

$sql = "UPDATE
            admin
        SET
            password = '".$_POST['new']."'
        WHERE
            login = '".$_POST['login']."'";

Попробуй так.

Автор: R.M. 9.9.2005, 15:24
-=Ustas=-

Всё заработало, тока я так и непонял почему не работал новый пароль если я ево менял через phpmyadmin, ведь в базе всё менялось.
Большое тебе спасибо! Держи +

Ладно, вобщем я приду тока ночью терь, может ещё о чём поспрашиваю smile

Автор: -=Ustas=- 9.9.2005, 15:31
Да, и еще, используй для паролей хеширование md5. Безопасней будет.

Автор: Black 9.9.2005, 16:34
Цитата
Всё заработало, тока я так и непонял почему не работал новый пароль если я ево менял через phpmyadmin, ведь в базе всё менялось.


после смены пароля, чтобы он заработал тебе надо было дать команду серверу mysql
Цитата
FLUSH PRIVILEGES;

Автор: R.M. 10.9.2005, 00:15
-=Ustas=-

Цитата
Да, и еще, используй для паролей хеширование md5. Безопасней будет.


Обязательно использую, просто чтобы меньше возни было и проще было найти ошибки я пока сделал так

Кстати главный глюк был изза таво што было 2 одинаковых переменных, одна - $password пароль к БД, а вторая такаяже пароль в авторизации, поэтому работал тока 123 т.к. пароль к БД был 123 smile


PHP-DIRECTOR

У меня и без неё все работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)