|
|
|
| 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
Как устранить, если куки устанавливаются в процессе проверки (в середине скрипта)? | |
|
|
|
|
|
|
|
для: OLi
(13.11.2011 в 03:32)
| | код покажи друг | |
|
|
|
|
|
|
|
для: OLi
(13.11.2011 в 03:32)
| | Вы пытаетесь установить куки после того как вывели какую то информацию в браузер.
Сначала необходимо установить куки а потом уже выводить что либо в браузер, будь то HTML код или просто текст | |
|
|
|
|
|
|
|
для: 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", $hash, time()+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 с проверками куки | |
|
|
|
|
|
|
|
для: OLi
(13.11.2011 в 15:00)
| | посмотрите, может перед <? .. у вас стоит пробел, это тоже влияет | |
|
|
|
|
|
|
|
для: OLi
(13.11.2011 в 15:00)
| | > headers already sent by (output started at B:\home\test1.ru\www\base\login.php:1)
Т.е. вывод начат файлом login.php его первой строкой. Выводом считается любой символ до <? , будь то пробел, перевод строки, табуляция и пр. | |
|
|
|