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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Подскажите скрипт авторизации php для защиты страниц от прямого доступа

Сообщения:  [1-10]   [11-11] 

 
 автор: OLi   (29.05.2011 в 15:30)   письмо автору
 
   для: sl1p   (28.05.2011 в 14:00)
 

Спасибо - сделал!

  Ответить  
 
 автор: sl1p   (28.05.2011 в 14:00)   письмо автору
 
   для: OLi   (28.05.2011 в 02:33)
 

file_get_contents();

:)

  Ответить  
 
 автор: OLi   (28.05.2011 в 03:13)   письмо автору
 
   для: OLi   (28.05.2011 в 02:33)
 

Если перенаправлять на index.php, то получаем цикл переходов - так не получается...если оставить { } то от check.php не можем перейти на index.php

  Ответить  
 
 автор: OLi   (28.05.2011 в 02:33)   письмо автору
 
   для: sl1p   (28.05.2011 в 02:31)
 

Переделал так :
<? 

include("db.php");

if(isset(
$_POST['submit'])) 

function 
generateCode($length=6) { 
    
$chars "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789"
    
$code ""
    
$clen strlen($chars) - 1;   
    while (
strlen($code) < $length) { 
            
$code .= $chars[mt_rand(0,$clen)];   
    } 
    return 
$code


    
# Вытаскиваем из БД запись, у которой логин равняеться введенному 
     
$query=mysql_query("SELECT id,login,password FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1");

     if (
mysql_num_rows($query)>0){

         
$data mysql_fetch_assoc($query); 
    
# Соавниваем пароли 
    
if($data['password'] === md5($_POST['password'])) 
    { 
        
# Генерируем случайное число и шифруем его 
        
$hash md5(generateCode(10)); 
  
mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE id='".$data['id']."'");
         
        
# Ставим куки user_hash
        
setcookie("id"$data['id'], time()+60*60*24*30); 
        
setcookie("hash"$hashtime()+60*60*24*30); 
       
         
        
# Переадресовываеaм браузер на страницу проверки нашего скрипта 
        
header("Location: check.php"); exit(); 
    } 
    
    }else 
    { 
        print 
"Вы ввели неправильный логин/пароль"
    } 

?> 



check.php

<?

if (isset($_COOKIE['id']) and isset($_COOKIE['hash'])) 
{
include(
"db.php");    
    
$query mysql_query("SELECT * FROM users WHERE id = '".intval($_COOKIE['id'])."' LIMIT 1");
    
$userdata mysql_fetch_assoc($query); 

    if((
$userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['id'] !== $_COOKIE['id'])) 
    { 
        
setcookie("id"""time() - 3600*24*30*12"/"); 
        
setcookie("hash"""time() - 3600*24*30*12"/"); 
        exit(
"Отказано в доступе!");
    } 
    else 
    { 
        print 
"Привет, ".$userdata['user_login'].". Всё работает!"
    } 

else 

    exit(
"Отказано в доступе!");


?>


Код работает...но не могу сообразить как отобразить содержимое файла вместо
print "Привет, ".$userdata['user_login'].". Всё работает!";

  Ответить  
 
 автор: sl1p   (28.05.2011 в 02:31)   письмо автору
 
   для: OLi   (28.05.2011 в 02:22)
 

ну да) я щас поставлю себе куки с именем id и буду залогинен)

надо писать в базу и в куки/сессию уникальный хеш, к примеру uniqid затем сравнивать их где надо проверить залогинен или нет.

  Ответить  
 
 автор: OLi   (28.05.2011 в 02:22)   письмо автору
 
   для: OLi   (28.05.2011 в 01:02)
 

Вот что накидал:
Logn.php
<? 

include("db.php");

if(isset(
$_POST['submit'])) 


    
# Вытаскиваем из БД запись, у которой логин равняеться введенному 
     
$query=mysql_query("SELECT id,login,password FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1");

     if (
mysql_num_rows($query)>0){

         
$data mysql_fetch_assoc($query); 
    
# Соавниваем пароли 
    
if($data['password'] === md5($_POST['password'])) 
    { 
        
  
setcookie("id"$data['id'], time()+60*60*24*30); 
       
         
        
# Переадресовываеaм браузер на страницу проверки нашего скрипта 
        
header("Location: check.php"); exit(); 
    } 
    
    }else 
    { 
        print 
"Вы ввели неправильный логин/пароль"
    } 

?> 



check.php
<?
if (isset($_COOKIE['id'])) {
// Юзер залогинен
echo $_COOKIE['id'];
echo 
"googd";
} else {
$user_id false;
exit (
"Avtorezeaza!");
}




Код на странице:
include("db.php");
include("check.php"); ?>
Все что ниже не отображается...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...... 

В каждый файл подключаю check.php
но страница дальше не отображается

  Ответить  
 
 автор: OLi   (28.05.2011 в 01:02)   письмо автору
 
   для: Miha_Kregov   (28.05.2011 в 00:43)
 

Алгоритм ясен, нет просто времени писать код - через 4 часа в универ на сдачу проекта...уже просто сил нет...

  Ответить  
 
 автор: Miha_Kregov   (28.05.2011 в 00:43)   письмо автору
 
   для: OLi   (27.05.2011 в 23:57)
 

А в чем именно проблема? Алгоритм не ясен или не получается что-то конкретное?

  Ответить  
 
 автор: OLi   (27.05.2011 в 23:57)   письмо автору
 
   для: psychomc   (27.05.2011 в 23:54)
 

Надо, чтобы из формы посылались пароль и логин, возможно....надо защитить файлы от прямого вызова без авторизации

  Ответить  
 
 автор: psychomc   (27.05.2011 в 23:54)   письмо автору
 
   для: OLi   (27.05.2011 в 23:49)
 

может на уровне apache с помощью .htaccess&.htpasswd достаточно?

  Ответить  

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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