Autor | Zpráva | ||
---|---|---|---|
slower Profil * |
#1 · Zasláno: 19. 3. 2012, 21:32:05
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 |
#2 · Zasláno: 19. 3. 2012, 21:56:19
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 * |
#3 · Zasláno: 19. 3. 2012, 22:49:23
slower:
Přesně jak říká Juriad. Na http_referer se nemůžeš s jistotou spolehnout, zapoj do toho raději session. |
||
slower Profil * |
#4 · Zasláno: 20. 3. 2012, 12:38:10
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
|
||
Časová prodleva: 12 let
|
0