[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Про md5
pultter
здравствуйте!
я написал скрипт восстановления пароля.
так вот вопрос... почему когда я сравниваю полученные md5 пароли они не совпадают? может ли такое вообще быть? сравнение я провожу отдельно от этих файлов. можете посмотреть сей скрипт в работе по адресу: likser.insolution.ru.

p.s. благодарю за активность в моей прошлой теме: "Вопрос про циферки". честно говоря не ожидал...:-)



Спустя 6 минут, 29 секунд (10.09.2009 - 21:25) DeeKeiD написал(а):
ммм а чтоб посмотреть код надо взломать твой сайт?

Спустя 3 минуты, 47 секунд (10.09.2009 - 21:29) pultter написал(а):
DeeKeiD, в принципе мне не жалко:-) но лучше не делать этого.. хостинг платный ведь...

вот код. он уместился на двух страничках.
index.php:
PHP
<?php
error_reporting
(E_ALL & ~E_NOTICE);
function 
fc(){
$dh="localhost";
$du="root";
$dp="";
$dd="mynvrsk_i01";
$dc=@mysql_connect($dh,$du,$dp);
$ds=@mysql_select_db($dd);
$dn=mysql_query('SET NAMES cp1251');
    if(!
$dc) {
        die(
"<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Невозможно подключиться к MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>");
    } elseif (!
$ds){
        die(
"<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Невозможно получить доступ к нужной базе данных MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>");
    }
}
fc();
    if (
count($_POST)>0):
$c "([0-9a-z\.-_]+)@([0-9a-z\.-_]+)\.([0-9a-z])";
    if (!
eregi($c$m)) {
        print 
"Некорректно введен e-mail!<br>";
    } else {
        
$q mysql_query("SELECT * FROM user WHERE email='".$m."'");
        
$r mysql_fetch_array($q);
            if (
$r['email'] != $m) {
                print 
"Такой e-mail не существует в БД!<br>";
            } else {
                
$md5p md5($r['password']);
                
ini_set("SMTP""localhost");
                
ini_set("smtp_port""25");
                
$t "Смена пароля";
                
$b "Hello. Your link for change password: [URL=http://www.likser.insolution.ru/g.php?l=".$r]http://www.likser.insolution.ru/g.php?l=".$r[/URL]['login']."&p=".$md5p."";
                    
if (!mail($m$t$b)) {
                        print 
"Не удалось отправить письмо на указанный e-mail! Обратитесь к администратору или попробуйте позднее<br>";
                    } else {
                        print 
"На указанный e-mail выслано письмо с иструкциями для дальнейших действий.<br>";
                    }
            }
    }
    endif;

?>
<form action="index.php?send" method=post>
<table border=0>
    <tr>
        <td>Введите e-mail:</td>
    </tr><tr>
        <td><input type=text name=m></td>
    </tr><tr>
        <td><p align=right><input type="submit" value="Отправить"></p></td>
    </t


и вторая страничка...
g.php:
PHP
<?php
error_reporting
(E_ALL & ~E_NOTICE);
    function 
fc(){
    
$dh="localhost";
    
$du="root";
    
$dp="";
    
$dd="mynvrsk_i01";
    
$dc=@mysql_connect($dh,$du,$dp);
    
$ds=@mysql_select_db($dd);
    
$dn=mysql_query('SET NAMES cp1251');
        if(!
$dc) {
            die(
"<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Невозможно подключиться к MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>");
        } elseif (!
$ds){
            die(
"<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Невозможно получить доступ к нужной базе данных MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>");
        }
    }
fc();
    if (
count($_POST)>0) {
        if (
$np == $rnp) {
            
$mnp md5($np);
            print 
$mnp;
            
$q mysql_query("UPDATE user SET password='".$mnp."' WHERE login='".$l."'");
            if (!
$q) {
                print 
"Ошибка! Обратитесь к администратору или попробуйте позднее. <br>";
            } else {
                print 
"Пароль успешно изменен.<br>";
            }
        } else {
            print 
"Введенные пароли не совпадают!<br>";
        }
    } else {
        
$q mysql_query("SELECT * FROM user WHERE login='".$l."'");
        
$r mysql_fetch_array($q);
            if (
md5($r['password']) == $p) {
                print 
"
                        <table>
                            <tr>
                                <td>
                                    <form action=\"g.php?update\" method=post>
                                    Введите пароль
                                </td><td>
                                    <input type=password name=np>
                                </td>
                            </tr><tr>
                                <td>Повторите пароль</td>
                                <td>
                                    <input type=password name=rnp>
                                    <input type=hidden value="
.$l." name=l>
                                    <input type=submit value=Сохранить>
                                    </form>
                                </td>
                            </tr>
                        </table>
                        "
;
            } else {
                print 
"Неверная ссылка!<br>";
            }
    }

Спустя 7 минут, 48 секунд (10.09.2009 - 21:36) twin написал(а):
Аааа, попался! Признавайся, зачем тебе нужно было 32 единички? laugh.gif
А код твой читать очень трудно, переменные потому что какие то зашифрованные.
Могу не вникая только предположить, что у тебя включена директива magic_quotes

Спустя 19 минут, 8 секунд (10.09.2009 - 21:56) pultter написал(а):
twin, я просто на сайте одном увидел и предположил как должен работать этот код... и второй ответивший мне этот код выложил:-) интересно было.. а у вас там дебаты пошли:-)

а про magic_quotes впервые слышу...

вот расшифровка моих каракулей:
function fc как вы поняли это функция подключения к бд.
поехали дальше.
в index.php:
$c = check - проверка email
$m = mail - собственно email
$q = query - запрос в бд
$r = row - все что взяли из бд поместилось в одну переменную (в эту)
$md5p = md5 password - md5 от пароля
$t = theme - тема сообщения
$b = body - тело письма

в g.php:
$np = new password - новый пароль
$rnp = repeat new password - в форме строка "Повторите пароль"
$mnp = md5 new password - md5 от нового пароля
$q = query - запрос в бд
$r = row - все что взяли из бд поместилось в одну переменную (в эту)
$p = password

Спустя 3 минуты (10.09.2009 - 21:59) Gabriel написал(а):
Цитата
а про magic_quotes впервые слышу...

настройка в php.ini

Спустя 3 минуты, 19 секунд (10.09.2009 - 22:02) pultter написал(а):
Gabriel, а что нибудь про скрипт скажете?

Спустя 2 минуты, 23 секунды (10.09.2009 - 22:04) Gabriel написал(а):
pultter
после целого дня чтения и писания кракуль на пхп; очередной попытки (неудечной) собрать абсолютно безпроводную сеть особого желания смотреть такое количество букав нету sad.gif

Спустя 1 минута, 3 секунды (10.09.2009 - 22:05) pultter написал(а):
Gabriel, чтож спасибо и на этом..

Спустя 10 минут, 53 секунды (10.09.2009 - 22:16) twin написал(а):
Цитата
вот расшифровка моих каракулей:

А в код её? Ведь потом через пару месяцев сам прочитать код не сможешь... И думаешь охота скакть к твоему переводчику?
А про магические кавычки надо знать. Тут посмотри. Там ближе к середине.

Спустя 17 часов, 24 минуты, 54 секунды (11.09.2009 - 15:41) pultter написал(а):
что то я не пойму чем magic_quotes может помочь в моей ситуации...

Спустя 4 часа, 45 минут, 25 секунд (11.09.2009 - 20:26) pultter написал(а):
проблему устранил... теперь пароли совпадают...
но появился новый вопрос:-)
у меня в БД ячейка для пароля составляла 30 символов. после изменения пароля на странице g.php я добавил строку которая печатала md5 пароль до внесения в БД. длина пароля как обычно составляла 30 символов. еще я вставил в index.php строку, которая печатала пароль из базы, и оказалось что пароль из базы на два символа короче чем тот который был перед внесением в бд. как так получилось? я сделал длину ячейки в бд 40 символов и стало все ок.. выходит надо длину ячейки делать больше, чем максимально возможное количество вводимых символов? или тут другая проблема?

Спустя 12 часов, 27 минут, 39 секунд (12.09.2009 - 08:54) twin написал(а):
md5 хэш - это 32 символа. если ограничение 30 - соответственно кикоз.

Спустя 2 часа, 53 минуты, 18 секунд (12.09.2009 - 11:47) pultter написал(а):
twin, cпасибо:-)


_____________
Напишу индусский код. Бесплатно
Быстрый ответ:

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