[ Ivan Golubović @ 08.05.2009. 17:23 ] @
Da li je ikako moguce da sprecim reload stranice (F5), vec da mi se neka stranica vidi samo pracenjem linkova?
Ovo mi je bitno da mi se nebi duplirali neki upiti u bazi...
[ ban17 @ 08.05.2009. 18:56 ] @
Mislim da ne možeš da sprečiš reload preko F5, ali možeš da kontrolišeš stranicu da se ne učita dvaput.

Ja nešto slično ovome koristim za sprečavanje formi da se šalju dvaput, pretpostavljam da možeš da je modifikuješ da odgovara tome što ti pokušavaš, inače funkciju sam skinuo odnekud i pola stvari u njoj je višak i ne služi ničemu pa možeš još malo da je uprostiš..

Ovo je primer kad se podaci šalju preko forme, ali sama ideja ti je dovoljna da napraviš svoj primer ako se linkovima prelazi sa stranice na stranicu..

Code:


  if (isset($_POST)) {
  if (!anti_refresh()){
             echo "<h3>Forma je već poslata</h3>";
         }
 }



function anti_refresh($type = "post", $excl = "validator") {
    $string = "";
    foreach ($_POST as $key => $val) {
         if ($key != $excl) {
            $string .= $val;
        }
    }
    if (isset($_SESSION['last'])) {
        if ($_SESSION['last'] === md5($string)) {
            return false;
        } else {
            $_SESSION['last'] = md5($string);
            return true;
        }
    } else {
        $_SESSION['last'] = md5($string);
        return true;
    }
}
[ Zmaj @ 09.05.2009. 00:29 ] @
dovoljno je da odradis posle dodavanja/izmene/brisanja tj bilo kakve akcije sa bazom
Code:
header('Location: '.$_SERVER['PHP_SELF']);

ovo ce te vratiti na fajl koji je zapoceo ubacivanje ali bez ikakvih vrednosti u $_POST, mnogo bolje resenje od ovog koje je predlozio @ban17, ti naravno mozes da stavis umesto ovoga $_SERVER['PHP_SELF'] bilo sta, tj bilo koji link.