Autor Zpráva
zero
Profil *
Mám problém, žádný výstup do prohlížeče nenastal a přesto se vypíše tato hláška, že již byli hlavičky odeslány:

Warning: Cannot modify header information - headers already sent by (output started at /home/www/auto-domaci/public_html/www/administrace/db1.php:13) in /home/www/auto-domaci/public_html/www/administrace/login2.php on line 8

kód je tento:
<?php
require 'db1.php';


$heslo = $_POST[heslo];

if (authenticateUser($heslo)) { //toto je problematické místo
setcookie ("cookie_passwd", $heslo);
//prihlaseni probehlu uspesne, prejdeme do administrace
echo "<html><head><meta HTTP-EQUIV=\"Refresh\" CONTENT=\"8; URL=sprava.php\"></html>";

exit();

} else {
echo ("<SCRIPT language='JavaScript'>
alert('Vstup do administra&egrave;ního prost&oslash;edí odep&oslash;en. Zadali jste špatné heslo.');
</SCRIPT>
");
echo "<html><head><meta HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=login.php\"></html>";
exit();
}
?>
zero
Profil *
a db1:

<?

$server_name="xxxxxxx";
$db_name="xxxxxx";
$db_user="xxxxxxxx";
$db_password="xxxxxxxxx";


//pripojeni k databazi
$spojeni=@mysql_connect($server_name, $db_user, $db_password) or die ('Nastala chyba, nepoarilo se pripojit k databázi! Obratte se na administrátora');
@mysql_select_db($db_name,$spojeni) or die ('Nastala chyba,obratte se na administrátora');



//overovani hesla uzivatele
function authenticateUser($password)
{
//overeni jmena a hesla
if (!($result = mysql_query("select * from login"))){
DisplayErrMsg(sprintf("interni chyba %d:%s\n",
mysql_errno(), mysql_error()));
return 0;
}

if (($row = mysql_fetch_array($result)) && ($password == $row["heslo"] && $password != ""))
return 1;
else
return 0;

}
?>



nevíte někdo, kde je chyba?
Sedím nad tím už dlouhou dobu, přesně takový kód jsem již jednou použila a funguje jak má....
souki
Profil
je to tu pořád dokola.... mrkni do FAQ téhle kategorie
souki
Profil

headers already sent...
Pokud už byl generovaný nějaký výstup, tak už nelze používat funkce header(), setcookie() ani session_start(). Jejich volání skončí chybou.
Přesvědčete se, že před začátkem <?php ?> není žádný text (ani mezera) a že nebylo nic odesláno třeba funkcemi jako echo nebo print.
Pokud je text v UTF-8, tím výstupem může být i tzv. BOM signatura, vizte výše zmíněný Divný znak (čtvereček)....

nejjednodušší je dát na začátek ob_start(); a na konec ob_end_flush();
Leo
Profil
"nejjednodušší je dát na začátek ob_start(); a na konec ob_end_flush();"

No nevim, jestli nejjednodussi, snad nejpohodlnejsi pro programatora, ktery ma bordel v kodu... Leo
souki
Profil
Leo
opravuji: nejjednosušší pro programátora prasáka...
zero
Profil *
díky, byla tam mezera.... Jsem "prasák"
Toto téma je uzamčeno. Odpověď nelze zaslat.

0