Autor Zpráva
zoznamik
Profil *
Prosim Vas poradte mi ako sa ma spravit, ze prehliadac zaznamena cookies a potom
naslednu kontrolu ci uz je dane cookies zapisane v prehliadaci.

Mam taketo nieco

<?php session_start; ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Anketa</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?
require("db/connect.php"); // spojenie s databazou

....prikazy


global $_COOKIE;
//kontrola ci uz nebolo hlasovane
if ($_COOKIE['anketa2Voted']){
echo "hmm";
}
SetCookie('anketa2Voted');
?>


pise mi takuto chybu:

Warning: Cannot modify header information - headers already sent by (output
started at C:Programmexampphtdocs\_programyanketyanketa.php:11) in
C:Programmexampphtdocs\_programyanketyanketa.php on line 103


co mam zle? preco mi to nejde?

Poradte mi niekto. Dakujem velmi pekne.
Mireczech
Profil
Nekde Headrem presmerovavas, ale uz predtim ti jde ze scriptu nejaky vystup.
Mireczech
Profil
Jinak jeste prototyp fce session_start(): bool session_start ( void )
zoznamik
Profil *
ale nikto ste mi neporadil...prosim kde mam chybu ;((

Nekde Headrem presmerovavas

==> nepresmerovavam....

inak nemusi byt niekde v php.ini nastavene ze nech povoluje cookies?
tiso
Profil
zoznamik
session_start i setcookie sú funkcie čo odosielajú hlavičky, takže hádaj čo musíš urobiť?
Joker
Profil
zoznamik
Funkce upravující HTTP hlavičky, mezi které patří i setcookie() (nebo například header() a většinou i session_start() ) se musí volat dřív, než se odešle jakýkoliv výstup na klienta.

Jednoduchá pravidla jak to udělat:
- Soubor musí začínat otevírací značkou PHP, před ní nesmí být ani mezera (tj. například aby prvních 6 znaků souboru bylo "<?php ")
- Volání příslušné funkce (setcookie(), header() apod.) musí být hned v tom prvním bloku skriptu (tj. mezi začátkem souboru a voláním funkce nesmí být skript nikde přerušen)
- Před voláním té funkce nesmí být žádná funkce, která odešle nějaký výstup, jako třeba echo().

Metody jak toto zajistit:
- Vyřídit tyhle funkce vždycky hned na začátku skriptu (obvykle před nimi dělám maximálně nějaké nastavování proměnných)
- Mít web udělaný v šablonách, kdy se veškerý výstup ukládá do šablony a první odeslání výstupu na klienta je typicky až poslední příkaz před ukončením skriptu (zobrazení šablony)
- Používat output buffering
Mireczech
Profil
Sry v te chybe jsem se prehlidl, ale pricina byla stejna,...
gaudino
Profil *
zkus to cele udelat s bufferovanym vystupem....

udelas to tak, ze cely skript uzavres do

od_start();

//cely skript

ob_end_flush();

mohlo by to helpnout......dej vedet
gaudino
Profil *
sorry..to prvni je ob_start();
anonym
Profil *
mám stejný problém, nefunguje mi to na mým domácím serveru ale třeba na internetu mi to funguje, podle mě musí být problém v nastavení ne? mám easyphp
Danteman
Profil *
Pokud se Vám toto ukazuje na serveru, tak nevim - je to jejich chyba(nemají nastaveny headery kvůli bezpečnosti - nesmysl), ne Vaše. Pokud máte domácí server nemáte nastavený ini soubor. Já na locala používam EasyPHP a tam to najdete: Složka s php/conf_files/php.ini

řádek 110
Toto téma je uzamčeno. Odpověď nelze zaslat.