Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Авторизация
 
 автор: hell_riser   (01.05.2006 в 22:22)   письмо автору
 
 

Здравствуйте!
Попогите разобраться. Как построить запрос на авторизацию если в в БД пароль захеширован md5 ? Код регистрации такой(Не смеяться)


 function error($text){
       echo "<table align='center'>
              <tr>
                <td>
                <div align-'center'><font size='3' color='red' face='a_AlgeriusCaps'><u> ".$text." </u></font>
                </div>
                </td>
              </tr>
              <script language='Javascript'><!--
function reload() {location = \"reg_form.php\"}; setTimeout('reload()', 5000);
//--></script>
             </table>";
    exit;
}

if(isset($pas1) and trim($pass1) ==""):
  error("Введите пароль !");
 $error="y";
endif;
if(isset($pass2) and $pass2 == "$pass1"):
 $userpassw = md5(trim($pass2)); 
    else: 
error("Пароль не подтвержден, или подтвержден не верно!");
$error="y";
 endif;
       ##################################################################=>
     if($error=="y"):
         print "$form";
         else:              
        mysql_query("INSERT INTO $user_table (user_login, user_pass, user_name, user_pol, user_email, user_icq, user_ip) VALUE ('$userlogin', '$userpassw', '$username', '$userpol', '$useremail', '$usericq', '$ip')");
        echo "<br><br><br><br><center><font size='4' color=black face='Arial'><b>Вы успешно зарегистрированы $userllogin !<br>Через 10 секунд вы будете автоматически переброшены на главную стрницу. <br>Если это не происходит, нажмите <a href='index.php'>здесь</a>
              <br><br><br><u>Ваши данные для авторизации</u> :<br>Логин : $login <br>Пароль : $pass2</b></font>
              <script language='Javascript'><!--
               function reload() {location = \"index.php\"}; setTimeout('reload()', 10000);
               //--></script></center>";
     endif;
?>


P.S. Помогите чайнику.

   
 
 автор: Саня   (01.05.2006 в 23:57)   письмо автору
 
   для: hell_riser   (01.05.2006 в 22:22)
 

<?php
# выберем пароль из БД
$query mysql_query("SELECT user_pass FROM $user_table WHERE user_name='$user_name'");
# если запрос успешный
if ( $query && mysql_num_rows($query) == ) {
  
$fetch mysql_fetch_assoc($query);
  
# сравним пароли
  
if ( $fetch['user_pass'] == $userpassw ) {
    
setcookie("name"$user_name);
    
setcookie("password"$userpassw);
    print 
'Вы залогинились';
  }
}
?>

   
 
 автор: hell_riser   (02.05.2006 в 02:06)   письмо автору
 
   для: Саня   (01.05.2006 в 23:57)
 

Спасибо, но это не то. Возможно я не правильно вопрос поставил.
Короче мне надо либо как-то захешировать пасс авториз(тем же методом что и при регистр.. не работает) либо вытягивать из БД на проверку уже разшифрованый.
Код регистр.. такой

if(isset($pass2) and $pass2 == "$pass1"):
 $userpassw = md5(trim($pass2)); //кодируем пароль
    else: 
error("Проли не совпадают!");
  endif;  
    //Заталкиваем в БД.
 mysql_query("INSERT INTO $user_table (user_login, user_pass, user_name, user_pol, user_email, user_icq, user_ip) VALUE ('$userlogin', '$userpassw', '$username', '$userpol', '$useremail', '$usericq', '$ip')");


Код авторизации .........


  if (!empty($pass)):   .
    if (preg_match("/[0-9a-z_A-Z&#192;-&#223;&#224;-&#255;]/i", "$pass")):
        $passw = md5(trim($pass)); //Кодируем пасс..
      else:
        print "<p align=\"center\"><font color=red face=Arial size=2>&#210;&#224;&#234;&#238;&#233; &#239;&#224;&#240;&#238;&#235;&#252; &#237;&#229; &#228;&#238;&#239;&#243;&#241;&#242;&#232;&#236;!</font></p>";
    endif;

   //Вытягиваем пас из БД.
   $valid = mysql_query("SELECT user_pass FROM $user_table WHERE user_login='$login'");
     if ($valid && mysql_num_rows($valid)== 1):
        $result = mysql_fetch_assoc($valid);
        //Сравниваем.
        if ($result['user_pass'] == $passw):
          setcookie("login", $login);
          setcookie("pass", $passw);
          print "<center>Здравствуйте $login !<br> Вы авторизованы.</center>";
         else :
           print "Введенные данные не корректны!!! $auth";
        endif;
     endif;



Где я на портачил??? В БД пишет красиво, без проблем(без хеширования этот код работает тоже без проблем).

   
 
 автор: Саня   (06.05.2006 в 18:18)   письмо автору
 
   для: hell_riser   (02.05.2006 в 02:06)
 

Я бы переписал код регистрации так:
<?php
if( !empty($pass2) && $pass2 == $pass1) { 
  
$userpassw md5($pass2);
} else 
error("Проли не совпадают!"); 

$q mysql_query("INSERT INTO $user_table (user_login, user_pass, user_name, user_pol, 
                  user_email, user_icq, user_ip) VALUES ('
$userlogin', '$userpassw',
                  '
$username', '$userpol', '$useremail', '$usericq', '$ip')");

if ( !
$q ) print "Невозможно зарегистрироваться<br/>".mysql_error();
?>

А код авторизации так:
<?pgp
if ( !empty($pass) ) { 
  
$passw md5($pass); //Кодируем пасс.. 
} else print "Введи пароль!";

$valid mysql_query("SELECT user_pass FROM $user_table WHERE user_login='$login'"); 
if (
$valid && mysql_num_rows($valid)== 1): 
  
$result mysql_fetch_assoc($valid); 
  if (
$result['user_pass'] == $passw) { 
    
setcookie("login"$login); 
    
setcookie("pass"$passw); 
    print 
"<center>Здравствуйте $login !<br> Вы авторизованы.</center>"
  } else print 
"Введенные данные не корректны!!! $auth"
}
?>


P. S.
Не стоит ограничивать пользователя в выборе символов для пароля.

   
 
 автор: hell_riser   (06.05.2006 в 23:17)   письмо автору
 
   для: Саня   (06.05.2006 в 18:18)
 

Вот такой код авторизации

<?
  
if (!empty($pass)):  
        
$passw md5($pass);
      else:
        print 
"<p align=\"center\"><font color=red face=Arial size=2>Вашь пароль ???</font></p>";
     
$error ="y";
    endif;
  if (
$error =="y"):     //Если ошибки найдены выводим форму, если нет, соединяемся с базой
     
print "$auth";      //и сравниваем логин и пароль.
   
else: 
   
//выбираем пароль из БД.
   
$valid mysql_query("SELECT user_pass FROM $user_table WHERE user_login='$login'");
     
//если запрос успешный.
     
if ($valid && mysql_num_rows($valid)== 1):
        
$result mysql_fetch_assoc($valid);
        
//сравнить пароли.
        
if ($result['user_pass'] == $passw):
          
setcookie("login"$logintime()+6000);
          
setcookie("pass"$passwtime()+6000);
          print 
"<center>Здравствуйте $login !</center>";
         else :
           print 
"Не верный логин или пароль!!! $auth";
        endif;
  endif;
endif;
?>

вроде всё тоже но не пашет.
код регистрации в ахиве.
Я уже отупел от этой авторизации

   
 
 автор: hell_riser   (07.05.2006 в 02:48)   письмо автору
 
   для: hell_riser   (06.05.2006 в 23:17)
 

Хм.. интересно. Прописал так ..

<?
$pasw 
crypt($pass'XXX');
?>

и всё работает.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования