Autor | Zpráva | ||
---|---|---|---|
SkyVessel Profil |
session_start(); $zprava = false; if (isset($_POST['login'])) { // Přihlášení -------------------------------- ...... <h3>Přihlásit se</h3> <form action="login.php" jmeno="frm_login" method="post"> <table border="0" cellpadding="5" align="center"> <tr> <td align="right">Jméno: </td> <td align="left"><input class="pole" jmeno="jmeno" type="text" maxlength="20" value="<?php if(isset($_POST['jmeno'])) echo $_POST['jmeno'];?>"></td> </tr> <tr> <td align="right">Heslo: </td> <td align="left"><input class="pole" jmeno="pass" type="password" maxlength="20"></td> </tr> <tr> <td> </td> <td align="left"><input jmeno="login" type="submit" value="Přihlásit"></td> </tr> </table> </form> Po kliknutí na přihlásit se stránka refreshne, ale form se neodešle (když dám hned pod "if isset post login" echo s hláškou, tak se nevypíše). Mám někde ve formu chybu?? A ještě k bezpečnosti: když dám do form action "echo $_SERVER['PHP_SELF']", tak když si zobrazím zdroják, tak tam mám celou cestu v subdoméně - "/subdom/private/login.php" - nedá se to nějak zneužít?? Mám radši používat jen login.php? |
||
Enko Profil * |
#2 · Zasláno: 29. 6. 2012, 00:07:56
Doplň si na začátek toto:
ini_set('error_reporting','E_ALL'); ini_set('display_errors', '1'); Hoď nám sem celý ten kód za if(isset())... A v action <form action=""... nech klidně jen prázdnou hodnotu, formulář se pošle sám na sebe
|
||
Keeehi Profil |
SkyVessel:
„Mám někde ve formu chybu?“ Máš jmeno="..." name
„nedá se to nějak zneužít?“ Je vidět kus adresářové struktury. Víceméně je to bez bezpečnostního rizika. Prázdný action funguje ale úplně stejně a je to hlavně pohodlnější. |
||
SkyVessel Profil |
#4 · Zasláno: 29. 6. 2012, 01:54:34
Keeehi:
fuk... jasně že jo. Taková blbost - se ani nedivím, že sem si toho nevšiml... Jsem nahrazoval nazvy a potřetí už se mi to celé nechtělo projíždět, tak jsem dal "yes all" a zrovna jsem nahrazoval taky name za jmeno a nenapadlo mě to, protože ty předtím byly v poho =/ Díky, už to jede... Prostě jen nemohl rozchodit ty kraviny =oD Enko: to mi vypíše i chyby, i pokud je potlačuji zavináčem? $user = @mysql_fetch_array ($vysledek, MYSQL_NUM); atd... |
||
Keeehi Profil |
#5 · Zasláno: 29. 6. 2012, 08:53:37
SkyVessel:
„to mi vypíše i chyby, i pokud je potlačuji zavináčem?“ A to je tak těžký si to vyzkoušet? V 99,9% případů není nutné chyby potlačovat, naopak je správné je řešit. |
||
Ugo Profil |
#6 · Zasláno: 29. 6. 2012, 09:04:05
SkyVessel:
jestli se nepletu, tak konkrétně mysql_fetch_array chybu nevyhodí jestliže projde příkaz, takže chybu bys měl řešit už před tim. Resp. mít napsané query tak aby v něm nebyla chyba :) Keeehi: já zavináče celkem chápu, nejednou sem dostal nápad udělat script kterej by na každej řádek nějakýho toho macka dal :-D Ale při představě jak dlouho by se takovej skript moh provádět ... |
||
SkyVessel Profil |
Keeehi:
„A to je tak těžký si to vyzkoušet? V 99,9% případů není nutné chyby potlačovat, naopak je správné je řešit.“ Ano, máš pravdu, moje chyba - příště nejdřív zkusím, jen se mi nechtělo ten skript mrvit, aby něco vyhodil =). Ale s tím potlačováním chyb - hodil jsem tam první funkci, co mě napadla (mám to u všech) ale třeba taková @mysql_connect - mám to ošetřeno svými hláškami a to, že je problém na serveru neznamená, že mi to musí stránku zaspamovat kravinami (pro návštěvníky samozřejmě)... |
||
Keeehi Profil |
1) měl by jsi to mít napsané tak, aby se žádná chyba nikdy nemohla objevit
2) na produkčním servru se potlačí vypsání všech chyb nastavením display_errors = Off v konfiguraci PHP. To kdyby se náhodou přece jen nějaká chyba vyskytla.
toto řešení má několik výhod: 1) úplně stejný script bez nutnosti jakéhokoli zásahu na lokálním servru chyby vypisuje, na ostrém všechny potlačuje. 2) nemusí se vkládat @ před každou funkci. Bylo by to hnusné a stejně by se určitě na něco zapomnělo. |
||
Časová prodleva: 13 let
|
0