Autor Zpráva
capricorn
Profil
Zdravim, lze nejak docilit toho, ze pri kazdem nacitani indexu se vykona cast kodu, presmeruje se na 303 a po presmerovani se vykona zbytek kodu v indexu?
joe
Profil
Snad by mohlo fungovat tohle.
<?php

ob_start();

vykonání kódu...

přesměrování

?>
capricorn
Profil
joe

Jasne, tohle je mne jasne, ale u tohoto zpusobu se vytvari smycka.
Perry
Profil
Moc nechápu ani tvojí puvodni myslenku...

Mas stranku, na ni se udela kus kodu->presmerovani na 303 (coz ted zrovna nevim, co znamena, ale detail :))->... ???? a pak co
Andre
Profil
Jestli jsem to dobře pochopil tak si najdi funkci return
joe
Profil
capricorn
Pravda, tak to mě teď nic rozumného nenapadá, třeba poradí někdo zkušenější. A proč to potřebuješ? A není možné přesměrovat na jinou stránku?
ninja
Profil
Tak pri presmerovani pridej get parametr "presmerovat=ne" a ten pak testovat.
srigi
Profil
Slo by to pomocou jednoducheho GET
index.php
<?php

if (!isset($_GET['once'])) {
  // vykonaj
  // bla
  // bla
  // bla
  header("Location: /index.php?once=true")]http://$_SERVER[SERVER_NAME]/index.php?once=1",  true, 303);
  die;
}

// vykonaj veci po presmerovani
echo "Vytaj znova";
joe
Profil
capricorn
Je to tak jednoduché, jak napsali ninja & srigi. Ale jak to udělat, kdyby adresa měla být pořád stejná? A žádný parametr v adrese... ;) Alespoň tak jsem to pochopil já.
capricorn
Profil
Testovat pomocnou promennou funguje do te doby nez ji rucne smazu v adresnim radku. Existuje vubec nejaky zpusob, abych nemusel pouzivat pomocnou promennou? Jedna se mne o to, abych mohl ihned v indexu kontrolovat url po jeji kontrole by doslo k presmerovani na 303 a pokracovani behu kodu. Pokud smazu rucne pomocnou promennou, jak jsem jiz uvedl, tak k zadne kontrole url nedojde a to je spatne.
capricorn
Profil
joe

Pokud nebude v url zadny parametr, tak k zadnemu presmerovani nedojde a kod by mel bezet dal. Proste vsechno, co bude za "?" se bude kontrolovat, po kontrole se vytvori url a dojde k presmerovani.
ninja
Profil
Misto GET lze pouzit SESSION, respektive COOKIES.
joe
Profil
ninja
To už raději ten GET. Sessions nejsou v tomhle případě vhodnou volbou a mohlo by to způsobit zacyklení.
capricorn
Profil
Pres SESSION by se to mohlo udelat asi takto:


if(!isset($_SESSION['once'])){
//kontrola url
$_SESSION['once'] = true;
header();
exit();
}

// vykonaj veci po presmerovani
unset($_SESSION['once']);
//bla
//bla



Ale jak joe uvedl, muze dojit k zacykleni, ale za podminky, ze se nebude jeste pred kontrolou url testovat zapis cookies. Nebudou cookies povoleny, ukonci se kod a zobrazi se varovna hlaska. Asi takto bych to udelal, kdyby to neslo udelat pres GET. Ale moc rad bych to chtel vyresit pres GET, ale pokud to udelam tak, jak srigi, tak z dvou nacteni indexu se provede kontrola url 1x, ale spravne by se mela kontrolovat 2x.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0