Autor | Zpráva | ||
---|---|---|---|
Apacuka Profil |
#1 · Zasláno: 2. 8. 2009, 16:25:03 · Upravil/a: Apacuka
Zdravím,
pokud mám tento kód, je vše v pořádku. <?php if ($_POST["odesli"]=="Vykonej") { udela nejakej prikaz; } ?> <form method="post" action="<?php $PHP_SELF ?>"> <input type="Submit" name="odesli" value="Vykonej"> </form> Lze ale udělat jen normální odkaz, abych neměl ty tlačítka a nemusel používat <form>? Něco ve stylu <a href="<?php $PHP_SELF ?>&neco=vykonej">Vykonej</a>. Že by mě to po stisknutí tohoto odkazu přehodilo na část skriptu a ten se následně vykonal? |
||
tiso Profil |
#2 · Zasláno: 2. 8. 2009, 16:33:48
Apacuka: Lze. Len miesto & použi ?
|
||
Apacuka Profil |
#3 · Zasláno: 2. 8. 2009, 16:59:45 · Upravil/a: Apacuka
Vždycky přeci musí být & mezi oddělenýma příkazama
?page=stranka1&neco=vykonej takhle by to bylo špatně ?page=stranka1?neco=vykonej co ale napsat do toho skriptu, aby odkaz poznal, že zrovna tohle má udělat ? Když tam vložím tohle <?php if ($_GET["neco"]=="vykonej") { $sql=db_query("UPDATE alba SET schvalit=1 WHERE id_a=$id"); echo "<div class=\"hlaskaok\">Provedeno</div>"; } ?> tak mi to hodí hlášku Notice: Undefined index: neco in soubor.php on line 31 Proto se ptám jestli to jde vůbec takhl udělat, nebo jediná možnost je použít formulář. |
||
khubajsn Profil * |
#4 · Zasláno: 2. 8. 2009, 17:25:38
Bodejť by ti to nevyhazovalo hlášku nedefinovaný index!
To neco, co ve skriptu chceš tak neposíláš. Posílej skript.php?neco=vykonej nebo to uprav a posílej skript.php?odesli=Vykonej , |
||
SwimX Profil |
#5 · Zasláno: 2. 8. 2009, 17:36:38 · Upravil/a: SwimX
khubajsn:
tvoje odpověď je nějak zcestná, jaký je rozdíl mezi neco=vykonej a odesli=vykonej? Apacuka: „Vždycky přeci musí být & mezi oddělenýma příkazama“ ano, správně, ale echo PHP SELF ti nevrátí $_GET proměnné, pouze název souboru, takže index.php proto tiso říká, dej jako první ? a potom už & <a href="<?php echo $PHP_SELF ?>?neco=vykonej&a=dalsi">Vykonej</a>. jinak je to dobře, takto uděláš odkaz. A přesně jak píšeš <?php if ($_GET["neco"]=="vykonej") { $sql=db_query("UPDATE alba SET schvalit=1 WHERE id_a=$id"); echo "<div class=\"hlaskaok\">Provedeno</div>"; } ?> todle se zpracuje pouze pokud bude v proměnné $_GET['neco'] vykonej ta hláška znamená, že testuješ proměnnou která neexistuje. Čili na stránce index.php není $_GET['neco'] definovaná. Ta hláška je jenom warning, takže by to mělo běhat, ale jak se jí zbavit: if (isset($_GET["neco"]) and $_GET["neco"]=="vykonej") { nebo if (@$_GET["neco"]=="vykonej") { @ před proměnnou nebo funkcí potlačí chybové hlášení v případě že proměnná nebo funkce není definována. |
||
Apacuka Profil |
#6 · Zasláno: 2. 8. 2009, 17:56:09
khubajsn
jasný že ty odkazy mam presne podle svyho skriptu proc se ale zobrazuje po nacteni stranky ta hlaska. Pokud odstranim error_reporting(E_ALL); tak je to ok, ale to preci tu chybu neodstrani. |
||
SwimX Profil |
#7 · Zasláno: 2. 8. 2009, 18:00:20
Apacuka:
„Pokud odstranim error_reporting(E_ALL); tak je to ok, ale to preci tu chybu neodstrani.“ odstranění jsem popsal, ale až to budeš dávat na ostrý web, tak si stejne dej: error_reporting(0); uživatele stránek tvoje chyby nezajímaj, naopak, zkušenější by jich mohli využít. |
||
Apacuka Profil |
#8 · Zasláno: 2. 8. 2009, 18:09:10
SwimX: dekuju moc za vysvetleni. Tohle bylo presne co jsem potreboval slyset. A zase jsem o neco chytrejsi
pouzil jsem teda if (@$_GET["neco"]=="vykonej") { a error_reporting(E_ALL); si tam stale muzu nechat .. jsem rad :) |
||
Apacuka Profil |
#9 · Zasláno: 2. 8. 2009, 18:11:16
Proto ten vypis chyb mam na strankach, abych se jich zbavil uz v zakladu.
Jinak ty stranky nedelam na localhostu, ale webzdarma ... takze tech chyb pokud nejakou nekdo najde, muze vyuzit jiz ted :D |
||
SwimX Profil |
#10 · Zasláno: 2. 8. 2009, 18:16:43
Apacuka:
„takze tech chyb pokud nejakou nekdo najde, muze vyuzit jiz ted :D“ tak dost dobře nevím, co bych zrovna s toudle chybou dělal. Jinak ten zavináč potlačí chybu, takže se ti nevypíše, takže je to dost stejné jako když zršíš error reporting. Aby chyba ani nenastala musel bys testovat zda daná proměnná existuje viz: if (isset($_GET["neco"]) and $_GET["neco"]=="vykonej") { takže být tebou tak omezím error reporting ne na all, ale na něco co nevypisuje tydle blbosti, @nepíšu, je to s ním nepřehledné, a je to stejné :) ale tak, to už je tvoje věc :) |
||
Apacuka Profil |
#11 · Zasláno: 2. 8. 2009, 18:26:09
tek sem to na tvoje doporuceni otestoval + nechal vypis chyb ALL
a je to OK :) Jak by se takove chyby dalo zneuzit, kdyz mam vsechno overovany pres session + prava uzivatele? |
||
Apacuka Profil |
#12 · Zasláno: 2. 8. 2009, 19:13:40
jeste ze sem se zeptal.
Misto 4 souboru mam ted jeden usporadanej :) jeste jdnou moc dik :) |
||
AM_ Profil |
#13 · Zasláno: 2. 8. 2009, 19:48:29
„Jak by se takove chyby dalo zneuzit, kdyz mam vsechno overovany pres session + prava uzivatele?“
chybová hláška podává často užitečné informace pro hackera - povahu chyby, absolutní cestu na disku serveru, název PHP souborů atd... přímo přes tu chybovou hlášku ti to nikdo nenahackuje, ale může to pomoct hackerovi najít si jinou potenciální chybu ve skriptu. |
||
Časová prodleva: 15 let
|
0