[ _korso_ @ 12.02.2006. 16:24 ] @
Jeste da je bila nekoliko puta tema o funkciji header() i kesiranju stranica, ali mi ovo ne ide u glavu.
Posto ne zelim da se kesira stranica u browser-u, jer se onda kada se podaci prosledjeni sa forme jednog php fajla,salju u isti php fajl na obradu, desava se tako hiljadu problema. Jedan mozda i najveci je kada udaris REFRESH dodje do katastrofe - dupliranje podataka u bazi, slanje meila po sto puta... Jeste da se to moze resiti pomocu JS ili na neki drugi nacin, ali je ovaj sto neko u nekom postu na ES rece "u modi", ali ne znam sto ne radi.
Probao sam sa
Code:
 header("Cache-Control: no-store, no-cache, must-revalidate");

pa posebno sa
Code:
header("Cache-Control: no-store");

pa
Code:
header("Cache-Control: no-cache");

pa sa
Code:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

citao sam manual ali nista slicno nisam nasao. Svima onim ljudima iz manuala sa ovim radi. Pa sam googlao nalazio neke tips&tricks, ali nece.
Probao sam da li ce da uopste da posalje bilo kakav header.
Sa npr:
Code:
header("Location: http://localhost");

radi, salje se header. Ali npr. sledeci kod, koji najbolje provereva da li radi header() za ovo kesiranje
Code:
<?php
if (!headers_sent()){
       header("Cache-Control: no-cache"); // ili menjam sa -->header("Cache-Control: no-store");<--
       if (headers_sent()){
          echo "Header je poslat.";
      }else{
       echo "Header nije poslat.";
       }
    }
?>

kaze
Code:
Heasder nije poslat.

U php.ini sam stavio za session.cache_limiter
Code:
session.cache_limiter = nocache

Ako je neko imao slican problem ili moze da me uputi kako da resim ovo, bio bih mu mnogo zahvalan.

[ Leftfield @ 13.02.2006. 05:29 ] @
http://www.zend.com/manual/function.header.php
[ _korso_ @ 14.02.2006. 13:18 ] @
Pa rekao sam vec da sam gledao u PHP manual za header() f-ju, a ovaj manual sa zend-a je isti kao kao PHP manual sa www.php.net. Dakle, probao sam, napisao kod u prethodnom postu i mislim da sam lepo obrazlozio problem, ali ne radi. Zato sam se i obratio za pomoc.
[ Leftfield @ 14.02.2006. 14:10 ] @
Ne citas polako.
Obrnuo si stvari naopacke.
Kad provjeravas jel poslat: if (!headers_sent()) ovo znaci da vraca False ako nije poslat, znaci da nije, i u redu je, i treba exit. A ako je poslat nije u redu.
Evo sad sam gledao Zend manual i lijepo pise:

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

E poslije ovoga radis provjeru if (jeli poslat ili nije). Ako hoces nesto tvrdje od gore navedenog php5 u ruke i:

function cache_none($interval = 60) {
header("Expires: 0");
header("Pragma: no-cache");
header("Cache-Control: no-cache,no-store,max-age=0,s-maxage=0,must-revalidate");
}







[ flylord @ 14.02.2006. 14:13 ] @
varijanta koja meni uvek radi posao je da uradim redirekciju sa
Code:

header("Location: neki_url");
exit();
[ _korso_ @ 16.02.2006. 16:55 ] @
Hvala za odgovore resio sam problem ali ne preko headera jer nemam vremena u velikoj sam guzvi, a opet me je nesto zezalo, ali hvala na trudu i savetima.Cim budem imao vremena resicu problem i na nacin sa hederima.
Poz
[ Leftfield @ 17.02.2006. 07:25 ] @
Lijepo je napisati i radi drugih kako si rjesio.
[ _korso_ @ 17.02.2006. 09:03 ] @
OK i planirao sam ali nisam imao vremena...
Naime izmedju ostalog kod bi trebao da bude ovako npr.

Code:
if ($uslov == "zadovoljen"){
    if($_SESSION["ok"] == "done"){
        echo "Ne mozete da opet pritisnete Refresh";
        exit;//izlazite iz skripta i mozete da pritiskate refreash koliko hocete ali   nista uvek se ovo izvrsava
    }
    .
    .
    .
     .
    //ukoliko se sve u kodu koji ide ovde uradi kako treba
    //podaci su ispravni itd, unesu se npr u bazu
    //registrujete neku promenljivu pomocu sesije i tada
    //kada se pritisne Refresh ne moze da se izvrsi dupliranje podataka
    //u bazi ili duplo slanje e-maila
    //itd...dakle stavimo promenljivu
    $_SESSION["ok"] = "done";//stavlja se na kraju skripta 
    //skript ce doci do ove linije jedino 
//ako je do tada sve proteklo kako treba(naravno ako je skript do tada dobro napisan), neposredno pre exit;
    exit;//izlazak iz skripta
}
echo "<form method = "post" action = "primer.php">//neka forma
echo "<input type = text name = "data">
      <input type = submit >
echo "</form>


PS.
Ali opet mislim da je header() najbolje resenje i kada imam vremena ima da
uradim i na taj nacin.Stvarno ne znam zbog cega nece da mi to radi. Nemam pojma gde gresim...


[Ovu poruku je menjao _korso_ dana 17.02.2006. u 10:07 GMT+1]

[Ovu poruku je menjao _korso_ dana 17.02.2006. u 10:08 GMT+1]