Autor Zpráva
slower
Profil *
Zdravím, jsem začátečník v php, tak se předem omlouvám za blbosti...

mám tady kod:
if (!defined('WEB_ROOT')
    || !isset($_GET['step']) || (int)$_GET['step'] != 2
    || $_SERVER['HTTP_REFERER'] != 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?step=1') {
    exit;
tenhle kod nám říká: 
Pokud neni definovaná konstanta WEB_ROOT 
nebo není nastavena $_GET['step'] 
nebo $_GET['step'] přetypovaná na int není rovna 2 
nebo nepřišel z prvního kroku
tak ukonči (exit) 

co potřebuji:

Potřeboval bych tenhle kod upravit tak, aby sel jak z prvniho kroku viz. todle || $_SERVER['HTTP_REFERER'] != 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?step=1') plus z druheho kroku, a nevím jak to mam zapsat,

posílam svuj vymysl ale myslim si že není dobře...

if (!defined('WEB_ROOT')
    || !isset($_GET['step']) || (int)$_GET['step'] != 3
    || $_SERVER['HTTP_REFERER'] != 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?step=2' 
   && $_SERVER['HTTP_REFERER'] != 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?step=1') {
    exit;
}


Takže ještě raz pro pochopení co bych potřeboval:
Pokud neni definovaná konstanta WEB_ROOT 
nebo není nastavena $_GET['step'] 
nebo $_GET['step'] přetypovaná na int není rovna 2 
nebo nepřišel z prvního A DRUHEHO kroku
tak ukonči (exit) 
juriad
Profil
A proč se snažíš napsat jednu nepřehlednou velkou podmínku, rozděl si to na jednotlivé případy.
Moc nechápu, proč skládáš celou adresu, když můžeš otestovat adresu třeba regulárními výrazy. A co potom, až trochu pozměníš URL, například https?

Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.
Navíc ani nemáš jistotu, že HTTP_REFERER je platná.

Není lepší toto netestovat a otestovat až úplně na konci, při zpracování všeho (předpokládám nějaký vícestránkový formulář), nebo si uchovávat předchozí stránku v SESSION, než se spoléhat na klienta?
Enko
Profil *
slower:
Přesně jak říká Juriad. Na http_referer se nemůžeš s jistotou spolehnout, zapoj do toho raději session.
slower
Profil *
Je to internetový obchod, kdy klient zada v 1 kroku zpusob dopravy a platby a ve 2 informace a ve tretim to potvrdi...no a prave mam problem s tretim krokem s touto podminkou...zkusim to pres session...jinak díky

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