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

Форум PHP

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

 

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

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

тема: Ошибка установки куки
 
 автор: OLi   (13.11.2011 в 03:32)   письмо автору
 
 

Warning: Cannot modify header information - headers already sent by (output started at B:\home\test1.ru\www\base\login.php:1) in B:\home\test1.ru\www\base\login.php on line 74

Как устранить, если куки устанавливаются в процессе проверки (в середине скрипта)?

  Ответить  
 
 автор: Jovidon   (13.11.2011 в 04:43)   письмо автору
 
   для: OLi   (13.11.2011 в 03:32)
 

код покажи друг

  Ответить  
 
 автор: ONYX   (13.11.2011 в 09:08)   письмо автору
 
   для: OLi   (13.11.2011 в 03:32)
 

Вы пытаетесь установить куки после того как вывели какую то информацию в браузер.
Сначала необходимо установить куки а потом уже выводить что либо в браузер, будь то HTML код или просто текст

  Ответить  
 
 автор: OLi   (13.11.2011 в 15:00)   письмо автору
 
   для: ONYX   (13.11.2011 в 09:08)
 

Первое: идет перенаправление на login.php
КОД:
<?

function generateCode($length=6) {

    
$chars "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";

    
$code "";

    
$clen strlen($chars) - 1;  

    while (
strlen($code) < $length) {

            
$code .= $chars[mt_rand(0,$clen)];  

    }

    return 
$code;

}





# Соединямся с БД
include('modules/db.php');


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

{

    
# Вытаскиваем из БД запись, у которой логин равняеться введенному

    
$query mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_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"$hashtime()+60*60*24*30);

        

        
# Переадресовываем браузер на страницу проверки нашего скрипта

        
header("Location: index.php"); exit();

    }

    else

    {

        print 
"Вы ввели неправильный логин/пароль";

    }

}

?>
<style>#login label {text-align:left}

</style>
<div id="login" style="width:300px; margin:0 auto; padding:5px; background-color:#F2F2F2; color:black">
<form method="POST">

<label>Логин</label> <input name="login" type="text"><br>

<label>Пароль</label> <input name="password" type="password"><br>

<label>Не прикреплять к IP</label> <input type="checkbox" name="not_attach_ip"><br>

<input name="submit" type="submit" value="Войти">

</form>
</div>

В случае успешной проверки логина и пароля - создаются куки и происходит перенаправление на index.php, в котором в самом начале инклудится файл check.php с проверками куки

  Ответить  
 
 автор: flaers   (13.11.2011 в 16:16)   письмо автору
 
   для: OLi   (13.11.2011 в 15:00)
 

посмотрите, может перед <? .. у вас стоит пробел, это тоже влияет

  Ответить  
 
 автор: Sfinks   (13.11.2011 в 18:35)   письмо автору
 
   для: OLi   (13.11.2011 в 15:00)
 

> headers already sent by (output started at B:\home\test1.ru\www\base\login.php:1)
Т.е. вывод начат файлом login.php его первой строкой. Выводом считается любой символ до <? , будь то пробел, перевод строки, табуляция и пр.

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

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