Autor | Zpráva | ||
---|---|---|---|
fatality Profil * |
#1 · Zasláno: 12. 4. 2009, 21:36:06
mam formulář
<form action="edit.php" method="post"> heslo: <input type="text" name="heslo" /> icq: <input type="text" name="icq" /> email: <input type="text" name="email" /> <input type="submit" /> který odkazuje na <?php include "db.php"; $sql=mysql_query("update autori set heslo = '".$_POST['heslo']."', icq = '".$_POST['icq']."', email = '".$_POST['email']."' where id_autora = '".$_GET['id']."'") or die (mysql_error()); echo "Záznam byl přidán"; ?> příkaz se vykoná v pohodě, ale neupraví to záznamy v tabulce, neví někdo co mam špatně? |
||
fuckin Profil * |
#2 · Zasláno: 12. 4. 2009, 21:40:24
jak se muze prikaz vykonat v pohode kdyz to udela kulovy? :D...co takhle vypsat tu db chybu?
|
||
Tomasds Profil |
#3 · Zasláno: 12. 4. 2009, 21:40:53
where id_autora = '".$_GET['id']."'" proč ty apostrofy? Existuje v tabulce autorů ID, podle kterého chceš updatovat? |
||
Tomasds Profil |
#4 · Zasláno: 12. 4. 2009, 21:42:34
fuckin
"vykonat v pohodě" zahrnuje i "neudělat nic". Což je zřejmě tento případ, vzhledem k tomu, že fatality o žádné chybě nepíše. |
||
fatality Profil * |
#5 · Zasláno: 12. 4. 2009, 21:47:11
no právě, napíše se Záznam byl přidán, ale do tabulky se nepřidá :-( no jasný, mam tam id 1,2,3,...a já si chci vybrat vlastně podle vstupu na stránku (blabla.php?id=1)
když bych odstranil apostrofy, tak mam syntax error |
||
Tomasds Profil |
#6 · Zasláno: 12. 4. 2009, 21:54:50
fatality
Nepřidá?? update = změnit, insert = přidat. |
||
fatality Profil * |
#7 · Zasláno: 12. 4. 2009, 21:55:41
dobře, nezmění :-)
|
||
fatality Profil * |
#8 · Zasláno: 13. 4. 2009, 11:00:18
tak co? neví někdo co s tim? :-( jediný co mi napadá je, že špatně vkládam to id
|
||
Joker Profil |
#9 · Zasláno: 13. 4. 2009, 11:39:43
fatality
První věc, když nefunguje dotaz do databáze, nechat si vypsat ten dotaz. $sql = (tady sestavím SQL dotaz) echo ($sql); // jen pro ladění, abych viděl, co se sestavilo. Pak to zase smažu mysql_query($sql); Druhá věc, v tom skriptu je pár hrubých bezpečnostních chyb. - Vstup od uživatele nesmí nikdy jít přímo do databáze nebo na výstup. Tzn. uvnitř mysql_query se nikdy nesmí objevit $_POST, $_GET a podobně. Příklad: Udělám si formulář s polem "heslo" a hodnotou "heslo", který pak metodou POST odešlu na: *adresa toho skriptu výše*?id=1'+or+1=1--. Tím se všem autorům nastaví heslo "heslo" a pak už se přihlásím na koho budu chtít. - Jaktože se ukládá přímo heslo, které zadá uživatel?! Do uživatelova hesla nikomu nic není, takže by nikde nemělo být uložené v podobě, ze které se to heslo dá vyčíst. Od toho máme hashovací funkce. |
||
fatality Profil * |
#10 · Zasláno: 13. 4. 2009, 12:02:16
j, já to ještě nemam doladěný, ve finále to bude i jinak než takle, teď to chci jenom zprovoznit, pak se kouknu jak hashovat :-D
takže jak to mam udělat? když sestavim dotaz, tak tam budu mít 2x zbytečně mysql_query, ne? |
||
Joker Profil |
#11 · Zasláno: 13. 4. 2009, 12:20:03
fatality
j, já to ještě nemam doladěný, ve finále to bude i jinak než takle, teď to chci jenom zprovoznit, pak se kouknu jak hashovat :-D Jo, to známe :-) A pak "už to nemá cenu předělávat, když to funguje"... ;-) Navíc se tím možná dalo vyhnout i těm chybám. Příklad: $id = intval($_GET["id"]); if($id == 0) die("Neplatné ID!"); $heslo = md5($_POST["heslo"]); // alespoň MD5 $icq = intval($_POST["icq"]); if($icq == 0) $icq = ""; $email = mysql_real_escape_string($_POST["email"]); $sql = "update autori set heslo = '$heslo', icq = '$icq', email = '$email' where id_autora = $id"; mysql_query($sql) or die(mysql_error()); takže jak to mam udělat? když sestavim dotaz, tak tam budu mít 2x zbytečně mysql_query, ne? Proč? Dotaz se sestaví do proměnné a ta se pak pošle do mysql_query (a při ladění předtím -nebo potom v případě chyby- třeba vypíše) |
||
fatality Profil * |
#12 · Zasláno: 13. 4. 2009, 12:31:11
nn, neboj předělávat to budu, já to mam jako projekt do školy, tak to musí bejt nějak zabezpečený ;-) a tim md5 to se musí zašifrovaný zadat a pak se přihlašuju normálně? takže když to zadam do db tak to bude vypadat třeba f1v254d1f5 a při přihlašování to bude ahoj?
|
||
Alphard Profil |
#13 · Zasláno: 13. 4. 2009, 12:41:30
při přihlašovaní opět zahashujete a porovnáte to f1v25d1f5
|
||
fatality Profil * |
#14 · Zasláno: 13. 4. 2009, 15:10:05
Joker - takle mi to vyhodí pokaždý neplatné id :-(
|
||
fatality Profil * |
#15 · Zasláno: 14. 4. 2009, 18:24:07
tak co s tim?
|
||
fatality Profil * |
#16 · Zasláno: 15. 4. 2009, 16:37:33
ok, už sem to vyřešil :-)
|
||
Časová prodleva: 16 let
|
0