Autor | Zpráva | ||
---|---|---|---|
ForestCZE Profil |
#1 · Zasláno: 9. 10. 2013, 12:25:12
Zdravím,
mám odkazy: neco.php?neco1=5&neco2=1 neco.php?neco1=10&neco2=2 neco.php?neco1=15&neco2=3 Chci zamezit, aby ty hodnoty někdo nezaměnil, tak jsem vymyslel: $pole1 = array('5', '10', '15'); $pole2 = array('1', '2', '3'); if(!in_array($_GET["neco1"], $pole1)) echo "Hodnota není v poli 1"; if(!in_array($_GET["neco2"], $pole2)) echo "Hodnota není v poli 2"; Problém je, že uživatel to může nakombinovat tak, že třeba: neco1=5&neco2=1 přepíše na: neco1=15&neco2=1 A bude to fungovat taky. Poradil by mi prosím někdo, jak to udělat, aby to nešlo kombinovat? Díky :-) |
||
JaySee Profil |
#2 · Zasláno: 9. 10. 2013, 12:32:51
ForestCZE:
No jestli nechceš, aby ti uživatelé něco manipulovali, nemůžeš jim dát tu možnost. Takže zamezit přepsání parametrů v GET není možné. 1) Co by tě mohlo přiblížit k řešení je odesílat tyto informace skrytě jako POST (přes skrytá formulářová pole, případně jQuery v nějakém callbacku). 2) Další možnost (pokud existuje konečné množství kombinací) je posílat jen zástupný symbol pro kombinaci, takže třeba &komb=4 a to si na serveru spráruješ s neco1=5&neco2=1 .
3) Zůstaneš u toho co popisuješ a všechny vstupy budeš kontrolovat na serveru pro přípustné kombinace a dále nějak komunikovat případné chyby, tedy manipulace. 4) Ideálně to nakombinovat. |
||
ForestCZE Profil |
JaySee:
„odesílat tyto informace skrytě jako POST (přes skrytá formulářová pole“ To mě vůbec nenapadlo. Mám to takto: <select onchange="location.href=this.options[this.selectedIndex].value"> <option value="neco.php?neco1=5&neco2=1">5</option> <option value="neco.php?neco1=10&neco2=2">10</option> <option value="neco.php?neco1=15&neco2=3">15</option> Takže nevím, jak to udělat na POST. „pokud existuje konečné množství kombinací“ Ano, existuje konečné množství. Které řešení tedy doporučuješ? Díky. |
||
peta Profil |
$a = $_GET["neco1"]; $b = $_GET["neco2"]; $c = in_array($a, $pole1); if ($c===false || $pole1[$c]!==$b) {...} |
||
Časová prodleva: 11 let
|
0