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

Форум MySQL

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

 

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

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

тема: Как сделать проверку авторизации с БД MYSQL ?
 
 автор: Belkin   (14.07.2011 в 06:10)   письмо автору
 
 

Вот код страницы enter.php ! Цель вообще - дает доступ к странице admin.php !
Хотел, чтобы подсказали - как сделать так, чтобы он сравнивал данные не с $admin и $pass, а с данных которые ввели в форму и БД MYSQL, где уже есть 2 ячейки с admin и pass данным(то есть можно сказать зарегаными юзерами) !


<?php
session_start
();

$admin 'admin';
$pass '1111';

if(
$_POST['submit']){
    if(
$admin == $_POST['user'] AND $pass == $_POST['pass']){
        
$_SESSION['admin'] = $admin;
        
header("Location: admin.php");
        exit;
    }else echo 
'<p>Логин или пароль неверны!</p>';
}
?>
<p><a href="index.php">Главная</a> | <a href="contact.php">Контакты</a> | <a href="admin.php">Админка</a></p>
<hr />
Это страница авторизации.
<br />
<form method="post">
    Username: <input type="text" name="user" /><br />
    Password: <input type="password" name="pass" /><br />
    <input type="submit" name="submit" value="Войти" />
</form>

  Ответить  
 
 автор: Valick   (14.07.2011 в 07:53)   письмо автору
 
   для: Belkin   (14.07.2011 в 06:10)
 

авторизация

  Ответить  
 
 автор: cheops   (14.07.2011 в 11:26)   письмо автору
 
   для: Belkin   (14.07.2011 в 06:10)
 

Возможно вас заинтересует приложение по ссылке http://softtime.ru/info/authorization.php

  Ответить  
 
 автор: Belkin   (14.07.2011 в 13:26)   письмо автору
 
   для: cheops   (14.07.2011 в 11:26)
 

Спасибо за варианты )
полезны, действительно спасибо ! )
но хотел бы все-таки узнать, как сделать из предложенного !
Без всяких проверок куки, просто чтобы сверяло пароль и пасс из бд.

  Ответить  
 
 автор: cheops   (14.07.2011 в 14:06)   письмо автору
 
   для: Belkin   (14.07.2011 в 13:26)
 

Просто подставляйте сравнение в WHERE-условие (только убедитесь, что значения экранированы, чтобы не было возможности провести SQL-инъекцию) и извлекайте количество возвращенных строк - если 0, не логин и пароль не подходят, если 1 - подходят
SELECT COUNT(*) FROM tbl
WHERE user = '{$_POST['user']} AND pass = '{$_POST['pass']}'

  Ответить  
 
 автор: Belkin   (14.07.2011 в 14:11)   письмо автору
 
   для: cheops   (14.07.2011 в 14:06)
 

Спасибо, попробую !

  Ответить  
 
 автор: Belkin   (14.07.2011 в 22:08)   письмо автору
 
   для: cheops   (14.07.2011 в 14:06)
 

простите, ничего

  Ответить  
 
 автор: cheops   (14.07.2011 в 22:22)   письмо автору
 
   для: Belkin   (14.07.2011 в 22:08)
 

Как делаете выводится ли какое-то сообщение об ошибке функцией mysql_error()?

  Ответить  
 
 автор: Belkin   (14.07.2011 в 22:39)   письмо автору
 
   для: cheops   (14.07.2011 в 22:22)
 

хотел сказать, что у вас пропущена кавычка, но как убедился, то в
полный sql запрос вставить нельзя ) вот она пропадает, а так все сделал, вот код
(я его немного под себя сделал, мелочи разные)
Еще раз вам спасибо, действительно помогаете !


<?php 
session_start
(); 
$db mysql_connect ("localhost""root""");
mysql_select_db("13.07.11"$db);
$name1 =  $_POST['user']; 
$name2 =  $_POST['pass']; 
    if (
$name1=='' or $name2 =='' ) {
echo 
'Заполните все необходимые поля!';

}   else    {
$admin mysql_result(mysql_query("SELECT COUNT(*) as cnt FROM names WHERE name1 = '{$_POST['user']}' AND name2 = '{$_POST['pass']}'"), 0);

if (
$admin 0) {

if(
$_POST['submit']){ 
        
$_SESSION['admin'] = $admin
        
header("Location: admin.php"); 
        exit; 
}} else {
    echo 
'Пароль не верный';

} }
?> 

<p><a href="index.php">Главная</a> | <a href="contact.php">Контакты</a> | <a href="admin.php">Админка</a></p> 
<hr /> 
Это страница авторизации. 
<br /> 
<form method="post"> 
    Username: <input type="text" name="user" /><br /> 
    Password: <input type="password" name="pass" /><br /> 
    <input type="submit" name="submit" value="Войти" /> 
</form>




а вот маленький вопрос, когда человек ввел неверные данны, то если он нажимает обновить - запрос заново повторяется, а если ввести адресс этой страницы еще раз, то все нормально !
Пытался через заголовок отправить на эту же страницу, вот пример


$name1 =  $_POST['user']; 
$name2 =  $_POST['pass']; 
    if ($name1=='' or $name2 =='' ) {
echo 'Заполните все необходимые поля!';
header("Location: enter.php"); 
} else ...

но он просто не открывает форму и долго грузит страницу, может есть еще способо?

На счет -
mysql_error();
- ничего не выводится, все нормально !

  Ответить  
 
 автор: cheops   (14.07.2011 в 23:38)   письмо автору
 
   для: Belkin   (14.07.2011 в 22:39)
 

>а вот маленький вопрос, когда человек ввел неверные данны, то если он нажимает обновить -
>запрос заново повторяется, а если ввести адресс этой страницы еще раз, то все нормально !
Если честно, пока не понятно, в чем проблема.

  Ответить  
 
 автор: Belkin   (14.07.2011 в 23:48)   письмо автору
 
   для: cheops   (14.07.2011 в 23:38)
 

ладно, это не сильно важно !

  Ответить  
 
 автор: admin   (14.07.2011 в 12:03)   письмо автору
 
   для: Belkin   (14.07.2011 в 06:10)
 

<?php 
session_start
();
include(
'bd_connect.php');

//если была нажата кнопка выхода
if (isset($_GET['exit'])){
unset(
$_SESSION['login']);
unset(
$_SESSION['pass']);
session_destroy();
}

if(isset(
$_SESSION['login']) && isset($_SESSION['pass'])){ //если в сессии лежит логин и пароль пользователя
     
if (!isset($_GET['exit'])) { //если не была нажата кнопка выхода
         
$login $_SESSION['login'];
         
$pass $_SESSION['pass'];
         
$db_connect mysql_query("SELECT * FROM `users` WHERE `login`='$login'") or die(mysql_error());
          
$userinfo mysql_fetch_array($db_connect);// в этой переменной лежит пароль из БД
         
if(strcmp($pass,md5($userinfo['pass'])) == 0) {// проверка схожести пароля
                 
$sql="SELECT * FROM users WHERE `login`='$login'";
    
$resultat=mysql_query($db_connect);
    
$userinfo=mysql_fetch_array($resultat); // в этой переменной будет лежать вся информация о пользователе из БД
    
$status 1;// статус, если 1, тогда пользователь авторизован
      
}
  }
}
  if (
$state != 1){  // если после проверки куков, оказалось, что пользователь не авторизован, то идем дальше
  
if( (isset($_POST['login'])) && (isset($_POST['pass'])) ){  // если пользователь ввёл логин и пароль
     
$login $_POST['login'];
        
$sql "SELECT id, pass FROM users WHERE `login`='$login'";
  
$resultat mysql_query($sql);
    if(
mysql_num_rows($resultat) > 0) { // если пользователь есть в БД
      
$userinfo mysql_fetch_array($resultat); // в этой переменной лежит пароль из БД и номер пользователя
      
$pass $_POST['pass'];
      if(
strcmp($pass,md5($userinfo['pass']))==0){
              
// достаём все данные из БД
    
$db_connect ="SELECT * FROM users WHERE login='$login'";
    
$resultat mysql_query($db_connect);
    
$userinfo mysql_fetch_array($resultat); // в этой переменной будет лежать вся информация о пользователе из БД
          
$status 1// статус, если 1, тогда пользователь авторизован
  
$_SESSION['login']=$userinfo['login'];
  
$_SESSION['pass']=$userinfo['pass'];
      }
    }
  }
}
if (
$status == 1){
    echo 
"привет .... бла бла бла";
    }
else {
    echo 
"<div>
    <table align='center' >
    <form action='index.php' method='post'>
    <tr><td>Логин:</td><td><input type='text' name='login' title='Ваш Логин'></td><td rowspan='5'><img src='1.jpg' width='60'></td></tr>
    <tr><td>Пароль:</td><td><input type='password' name='pass' title='Ваш Пароль'></td></tr>
    <tr><td></td><td align='center'><input type='submit' value='Войти'></td></tr>
    </form>
    <tr><td></td><td><a href='#'>Регестрация</a></td></tr>
    <tr><td></td><td><a href='#'>Забыли пароль?</a></td></tr>
    </tdble>
    </div>"
;
    }
?>

примерно так)

  Ответить  
Rambler's Top100
вверх

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