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

Форум PHP

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

 

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

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

тема: Вопросы по статье: самый оптимальный метод авторизации
 
 автор: Panker   (11.09.2007 в 04:25)   письмо автору
 
 

Если я стираю все записи из базы с логинами и паролями и захожу на старницу где по идеи нужно уже быт ьс логином и паролем мне пишут


Warning: Cannot modify header information - headers already sent by (output started at z:\home\knb\www\zone.php:7) in z:\home\knb\www\zone.php on line 26

Warning: Cannot modify header information - headers already sent by (output started at z:\home\knb\www\zone.php:7) in z:\home\knb\www\zone.php on line 27
Хм, что-то не получилось


Ну это не самое важное, самый важный тут вопрос:
Как мне сделать что бы нельзя было зайти на страницу если человек не автоматизирован, ну там кук нет и так далее, а если заходит на прямую странциу его кидала на страницу с логином!

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

Заранее спасибо

   
 
 автор: cheops   (11.09.2007 в 11:44)   письмо автору
 
   для: Panker   (11.09.2007 в 04:25)
 

Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.

http://www.softtime.ru/group/id_group=12

   
 
 автор: Panker   (11.09.2007 в 19:44)   письмо автору
 
   для: cheops   (11.09.2007 в 11:44)
 

помимо функций если не трудно скажите на словах понятно как и что делать? не всмысли готовый вариант а проверят ькуки или как? сесий я так понял в автоматизации нету ( именно по той статье )

   
 
 автор: exp   (11.09.2007 в 22:55)   письмо автору
 
   для: Panker   (11.09.2007 в 19:44)
 

можно так :)
<?php
 
### header.inc ###
define('ZZ'"\n");

$title '';
if (!isset(
$_COOKIE['name']) || $_COOKIE['name'] == 'panker') {
setcookie('name''panker'time() + 3600 24 5'/''www.knb');  
setcookie('name''panker'time() + 3600 24 5'/''knb'); 
header('Location: http://localhost/');
exit;
}
echo 
'<?xml version="1.0" encoding="cp1251" ?>' ZZ
 
'<html xml:lang="ru">' .ZZ
 
'<head>' .ZZ
 
'<title>'
 
$title
 
'</title>' ZZ
 
'<link type="text/css" rel="stylesheet" href="/css.css"/>' ZZ
 
'</head>'
 
'<body>' ZZ;

?>

   
 
 автор: Panker   (12.09.2007 в 04:48)   письмо автору
 
   для: exp   (11.09.2007 в 22:55)
 

так, видимо вырезка откуда то?

похоже в начале файла нужно првоерять куки и так далее, если их нет или они не верны нуно бросат ьна автоматизацию


<?php

if (!isset($_COOKIE['name']) || $_COOKIE['name'] == 'panker') { //Тут имя видимо
setcookie('name''panker'time() + 3600 24 5'/''www.knb');  
setcookie('name''panker'time() + 3600 24 5'/''knb'); 
header('Location: http://localhost/');
exit; 



Хотел прокоментировать и так далее но что то не получается, если кук нет то нуно кидать на главную, а если они есть но подделаны или не те? то есть пароль в каках не тот или не равен нику? как это сверять? как кидать на автоматизацию?

   
 
 автор: Panker   (12.09.2007 в 05:08)   письмо автору
 
   для: Panker   (12.09.2007 в 04:48)
 

или же я так понимаю что можно и проверять так как на главнйо страницы првоеряется


if(isset($_POST['submit']))
{
    # Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysql_query("SELECT user_id, user_password FROM users WHERE  user_nick='".mysql_escape_string($_POST['login'])."' LIMIT 1");
    $data = mysql_fetch_assoc($query);
    
    # Соавниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        # Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));
            
        if(!@$_POST['not_attach_ip'])
        {
            # Если пользователя выбрал привязку к IP
            # Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }
        
        # Записываем в БД новый хеш авторизации и IP
        mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
        
        # Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        setcookie("hash", $hash, time()+60*60*24*30);
        
        # Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: zone.php"); exit();
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
}


только как подставить туда куки для првоерки и сверки? :(

   
Rambler's Top100
вверх

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