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

Форум PHP

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

 

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

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

тема: Авторизация
 
 автор: Freddie_X   (30.09.2006 в 01:20)   письмо автору
 
 

Я хочу сделать скрипт. Сейчас объясню, как он должен работать.

Есть файл index.php, в нем записан код:
1) Если $_POST['pass'] и $_SESSION['pass'] пусты то выводить форму с полем pass и с действием на index.php.
2) Если в $_POST['pass'] что-то есть, то проверять, если значение его равно "parol" и $_SESSION['pass'] пуста, то зарегистрировать переменную $_SESSION['pass'] равную $_POST['pass'], а если не пуста, написать "привет, $_SESSION['pass']".
3) Если $_POST['pass'] не равен "parol" или пуст, проверить равна ли $_SESSION['pass'] "parol". Если не равна, то переадесовать на index.php. (возможно, этот пункт писать не стоит, т.к. он очень похож на 1-ый)
4) Ко всему этому, если $_POST['pass'] пуст, а $_SESSION['pass'] равна "parol", написать "привет, $_SESSION['pass']".

Прошу, помогите написать этот скрипт, потому что я совсем запутался со всеми if и else.

   
 
 автор: Михалыч   (30.09.2006 в 01:26)   письмо автору
 
   для: Freddie_X   (30.09.2006 в 01:20)
 

Я сам немного не понял.

Вы хотите написать скрипт для входа на сайт.
Если так, то где у вас хранятся данные о пользователях?

   
 
 автор: Freddie_X   (30.09.2006 в 01:36)   письмо автору
 
   для: Михалыч   (30.09.2006 в 01:26)
 

Причём данные о пользователях? Я просто создаю защищённую зону и всего есть только одно поле - pass, которое должно равняться "parol".

   
 
 автор: zavragnov   (30.09.2006 в 02:04)   письмо автору
 
   для: Freddie_X   (30.09.2006 в 01:36)
 

Вот выдернул из своей админки и немного упростил


форма index.php

<form action=authoriz.php method=post> 
<table width="250" border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td align="right" class="text">Логин :</td>
    <td width="30" align="center"><input name=name type=text class="text"></td>
    <td width="30" rowspan="2" align="center"><input name="Submit" type="image" src="pic/bootons/select.gif" alt="войти в систему"></td>
  </tr>
  <tr>
    <td align="right" class="text">Пароль :</td>
    <td width="30" align="center"><input name=password type=password class="text"></td>
    </tr>
</table>
<br>
      </form> 



Код обработчика authoriz.php


<?php 

$forname 
substr($_POST['name'], 08); // обрезка до 8 символов
$forname trim($_POST['name']); // удаление пробелов
$forname htmlspecialchars($_POST['name']); 
$forname stripslashes($_POST['name']); //Функция удаления обратных слешей

$forpassword substr($_POST['password'], 08); // обрезка до 8 символов
$forpassword trim($_POST['password']); // удаление пробелов
$forpassword htmlspecialchars($_POST['password']); 
$forpassword stripslashes($_POST['password']); //Функция удаления обратных слешей



$name "имя"
$password "пароль"



       
if (md5($forpassword) == $password && $forname == $name
       
       { 
         if(
session_start()) 
         { 
           
$_SESSION['user'] = $_POST['name']; 
           
$_SESSION['password'] = md5($_POST['password']); 
           echo 
"<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=main.php'></HEAD><body>"
         } 
       } 
       else 
       { 
         
        echo 
"<table width=100% height=100%><tr><td align=center valign=middle>Ошибка идентификации: неправильный пароль</td></tr></table>";
        echo 
"<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'></HEAD><body>"
        exit(); 
       } 
?> 



это в защищенные страницы например main.php

<?php 
session_start
(); 

$name "имя"
$password "пароль"


if ($_SESSION['password'] == $password && $_SESSION['user'] == $name)
{

//echo "Ok!";


if(!isset($_SESSION['user'])) {header("Location: ./index.php"); exit; }
if(!isset(
$_SESSION['password'])) {header("Location: ./index.php"); exit; }
}
else 


echo 
"Hacker!";



unset(
$_SESSION['user']);
unset(
$_SESSION['password']);

         
echo 
"<table width=100% height=100%><tr><td align=center valign=middle>Ошибка идентификации: неправильный пароль</td></tr></table>";
echo 
"<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'></HEAD><body>"
exit(); 
}
?>

   
 
 автор: Lelik   (30.09.2006 в 07:48)   письмо автору
 
   для: zavragnov   (30.09.2006 в 02:04)
 

добавьте одну строку в код

<?php  

$forname 
substr($_POST['name'], 08); // обрезка до 8 символов 
$forname trim($_POST['name']); // удаление пробелов 
$forname htmlspecialchars($_POST['name']);  
$forname stripslashes($_POST['name']); //Функция удаления обратных слешей 

$forpassword substr($_POST['password'], 08); // обрезка до 8 символов 
$forpassword trim($_POST['password']); // удаление пробелов 
$forpassword htmlspecialchars($_POST['password']);  
$forpassword stripslashes($_POST['password']); //Функция удаления обратных слешей 



$name "имя" 
$password "пароль" 
//---------------------------------------------------------------------------------------------------------------------------
$password md5($password);
// Ибо без этой строки вы в жизни в защищенную зону не зайдете
//---------------------------------------------------------------------------------------------------------------------------


       
if (md5($forpassword) == $password && $forname == $name)  
        
       {  
         if(
session_start())  
         {  
           
$_SESSION['user'] = $_POST['name'];  
           
$_SESSION['password'] = md5($_POST['password']);  
           echo 
"<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=main.php'></HEAD><body>";  
         }  
       }  
       else  
       {  
          
        echo 
"<table width=100% height=100%><tr><td align=center valign=middle>Ошибка идентификации: неправильный пароль</td></tr></table>"
        echo 
"<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='2; URL=index.php'></HEAD><body>";  
        exit();  
       }  
?> 

   
 
 автор: Freddie_X   (30.09.2006 в 14:33)   письмо автору
 
   для: Lelik   (30.09.2006 в 07:48)
 

Спасибо, хороший скрипт!
Но это немного не то, что я хотел. Я хотел поместить скрипт на одну страницу.
Но уже передумал, потому что очень сложно так сделать.
Буду использовать вашу схему. =)

   
 
 автор: FenikS   (19.10.2006 в 12:39)   письмо автору
 
   для: Lelik   (30.09.2006 в 07:48)
 

это неплохой код. но тут нужно вручную задать на странице всех пользователей, которые имеют доступ. А это при просмотре кода страницы позволит узнать логин и пароль (хоть и в зашифрованом виде.

как организовать проверку например из базы данных на сервере?

   
 
 автор: Aziz   (10.01.2007 в 08:15)   письмо автору
 
   для: FenikS   (19.10.2006 в 12:39)
 

Надеюсь и мне поможете, есть скрипт:



<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>

<body><form action="" method="post" name="testlog">
  <p>
  <input name="login" type="text" />
  </p>
  <p>
    <input name="passwd" type="password" />
    <input name="log" type="submit" />
  </p>
</form>
<? //Если кнопка была нажата то проверяем данные
if(isset($_POST['log'])) {
    
$login=$_POST['login'];
    
$passwd=$_POST['passwd'];
       
$passwd=md5($passwd);
                
            
//затем подключаемся к нащей базе
$hostname "localhost";
$database "phpless7";
$username "phpless7";
$password "ouehbKAP ";
$test mysql_pconnect($hostname$username$password) or die("не могу подключиться к базе");
    
    
mysql_select_db($database) or die ("Немогу выбрать базу ");// выбираем базу
    
    //проверяем существует ли такой логин и email  в нащей базе
    
$result mysql_query("SELECT true FROM users WHERE login = '".$login."' AND passwd='".$passwd."'"); 
  
  if(@
mysql_num_rows($result)>) {  //если да то извеняемся 
  
echo "Вощёл"
  
}

else{echo 
"не вощёл";}
} else{
echo 
нажми;} ?>
</body>
</html>

но как и что дальще писать не пойму, то есть понимаю что нужна сессия но как её сделать, читаю мануал но там дальще
<?php  
$login
="admin";  
$pass="pass";  
if (!isset(
$HTTP_SERVER_VARS['PHP_AUTH_USER'])   
    || 
$HTTP_SERVER_VARS['PHP_AUTH_USER']!=$login || $HTTP_SERVER_VARS['PHP_AUTH_PW']!=$pass) {  
      
header("WWW-Authenticate: Basic realm=\"login\"");  
      
header("HTTP/1.1 401 Unauthorized");  
      exit(
"Access Denied\n");  
}  
echo 
"Hi admin";  
?>

но это не то, совсем за парился....

   
Rambler's Top100
вверх

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