Warning: Cannot modify header information - headers already

kristiqn2

Registered
Здравейте опитавам се да направя една логин система от video-tutorials.bg (не е реклама) но при грешен логин ми изписва това:
Код:
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\VertrigoServ\www\radio2\conf.php:20) in C:\Program Files\VertrigoServ\www\radio2\login.php on line 22
ето го и целия login.php:
Код:
<?php
session_start();
require 'conf.php';
$username = addslashes($_POST['username']);
$password = md5(addslashes($_POST['password']));

if($_SERVER['REQUEST_METHOD'] != "POST")
{
	header('Location: index.php');
}
if(isset($username) && isset($password))
{
	$q = mysql_query("SELECT username,password FROM users WHERE username='$username' AND password='$password'");
	if(mysql_num_rows($q) == 1)
	{
		$user = mysql_fetch_assoc($q);
		$_SESSION['username'] = $user['username'];
	}
	else
	{
		$_SESSION[error] = "Грешно име или парола";
		header('Location: index.php');
	}
}
?>
Грешката идва от този ред :
Код:
$_SESSION[error] = "Грешно име или парола";
header('Location: index.php');
 
Под session_start(); сложи
ob_start(); и провери дали не си сложил някъде session_start();

PHP:
$_SESSION['error'] = "Грешно име или парола";
 
Спрете с този ob_start(). Аз защо нямам проблеми и без него ? Просто така си пишат всички кодовете, че се пращат по няколко хедъра и за това се получава тази грешка.
 
relax4o каза:
Спрете с този ob_start(). Аз защо нямам проблеми и без него ? Просто така си пишат всички кодовете, че се пращат по няколко хедъра и за това се получава тази грешка.

Имаш право :)
 
Защо запазваш грешката в сесия?

Това се прави по следния начин.

PHP:
$errors = array();
$username = $_POST['username'];

if(strlen($username) < 3)
{
  $errors[] = 'Потр. име е по-късо от 3 символа.';
}

if(strlen($username) > 15)
{
  $errors[] = 'Потр. име е по-дълго от 15 символа.';
}

if(!sizeof($errors))
{
  // кода за логин
}
else
{
  echo implode('<br />', $errors);
}

Нема нужда от сесия за да изведеш грешка. :) :?:
 
Защо не слагаш ob_start; преди header-a и след него го спираш ? Така няма да черпи същия ресурс.
 
А защо трябва да прави излишно буфериране ? Автора, казах ти да ми покажеш какво има в conf.php.
 
За да оправиш този проблем просто смени енкодинга на файла на UTF-8 without BOM и ще се оправи проблема.
 

Back
Горе