Autor | Zpráva | ||
---|---|---|---|
Routh Profil * |
#1 · Zasláno: 11. 6. 2009, 22:11:51
Dobrý den, začal jsem zase s PHP & MySQL, prostudoval potřebné věci na linuxsoft, které zatím potřebuji a chci je ovládat.
Sprovoznil jsem si primitivní zápis do databáze s 2mi proměnnými jméno a text. Vše funguje jen bych si na tom chtěl sprovoznit editaci a mazání. Jestli Jsou tyto dvě věci najednou "moc" tak se udělá třeba nejdříve mazání, abych to an tom pochopil. mám následující kód pro zápis: soubor zapis.php <form action="save.php" method="POST"> <input type="text" name="jmeno" value=""> <input type="text" name="text" value="" style="width:400px"> <input type="submit" value="uložit"> </form> soubor save.php <? require("nastaveni.php"); $pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error()); MySQL_Select_Db($Databaze) or Die(MySQL_Error()); $jmeno=$_POST['jmeno']; $text=$_POST['text']; if ($jmeno == "" or $text == "") { echo "Nebyly vyplněny všechny údaje!<br>\n<a href=\"zapis.php\">ZPĚT</a>"; } else{ $sql="INSERT INTO kniha VALUES (null, '$jmeno', now(), '$text')"; $vysledek = MySQL_Query($sql); if ($vysledek) echo "<br><b>záznam vložen</b><br>\n<a href=\"index.html\">Na začátek</a>"; else echo "Nebyly vyplněny všechny údaje!<br>\n<a href=\"zapis.php\">ZPĚT</a>"; } MySQL_Close($pripoj); ?> a konfigurační nastavení.php <? $SQL_Server = "host"; $SQL_Uzivatel = "user"; $SQL_Heslo = "password"; $Databaze = "db"; ?> a zobrazovací soubor vypis.php ? require("nastaveni.php"); $pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error()); MySQL_Select_Db($Databaze) or Die(MySQL_Error()); $dotaz="SELECT * FROM kniha ORDER BY datum DESC LIMIT 0, 50"; //vytvoření sql dotazu $vysledek = MySQL_Query($dotaz); // provedení sql dotazu while ($zaznam = MySQL_Fetch_Array($vysledek)){ $jmeno=$zaznam["jmeno"]; $datum=$zaznam["datum"]; $text=$zaznam["text"]; print "<div style='background:#315584; color:white; padding-left:10px'><b>".$jmeno."</b><br><small> [ ".$datum." ]</small></div>"; print "<div style='background:#B5C7DE; margin-bottom:10px; padding-left:10px;'>".$text."</div>"; } MySQL_Close($pripoj); ?> Teď mi tu ale nastvává problém, bud pomocí skyrého tlačítka hidden nebo lépe session (jak sjem se z důvody bezpečnosti dozvěděl). A jak docílím u každé položky tlačítka upravit a smazat ? Bude to nějaký odkaz přiřazený na uričté ID, ale to chce zas přez nějakou aut. proměnnou a to sjem už nikde nenašel. Tak vás prosím co se kam musí dát jinak skripty na UPDATE a DELETE bych už snad dokázal napsat. JDe mi o ten základ a úpravu formuláře. Díky za všechny rady a nápady. Jinak online verze je k mání na Routh.xf.cz/post/ |
||
tiso Profil |
#2 · Zasláno: 12. 6. 2009, 00:57:44
Routh - to je jednoduché
delete: potrebuješ skriptu povedať ktorý riadok (ktoré id) z DB má zmazať, takže ti stačí jedna premenná a stačí upraviť riadok 16 vo vypis.php nejak takto: print "<div style='background:#315584; color:white; padding-left:10px'><a href='delete.php?id=$zaznam[id]' title='zmazat'>x</a> <b>".$jmeno."</b><br><small> [ ".$datum." ]</small></div>" a vytvoriť súbor delete.php, ktorý bude mazať riadky na základe predanej premennej $_GET['id'] |
||
Routh Profil * |
#3 · Zasláno: 12. 6. 2009, 09:27:29
Dobře, takže sobuor delete.php by měl obsahovat něco jako:
<? require("nastaveni.php"); $pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error()); MySQL_Select_Db($Databaze) or Die(MySQL_Error()); $_GET['id'] $sql="DELETE FROM kniha WHERE id=".$zaznam["id"].";"); MySQL_Query($sql); MySQL_Close($pripoj); ?> Takže bud mi tam něco chybí, nebo to mám úplně blbě :-) |
||
Kajman_ Profil * |
#4 · Zasláno: 12. 6. 2009, 09:36:48
$zaznam["id"]=intval($_GET['id']); |
||
tiso Profil |
#5 · Zasláno: 12. 6. 2009, 09:53:12
Routh, (Kajman_) - odhliadnuc od toho, že je zbytočné mať tú premennú ako prvok poľa, tak treba myslieť na možnosť zneužitia. Skript delete.php i samotné odkazy na zmazanie vo vypis.php by mali byť dostupné len po prihlásení, okrem toho by sa malo kontrolovať či sa na stránku delete.php prišlo z oprávnenej stránky (v tomto prípade vypis.php), a nie z nejakého odkazu hocikde na nete. Inak by mohol hocikto mazať záznamy, alebo vložiť na nejakú stránku odkaz, a ak by ho navštívil prihlásený oprávnený užívateľ, tak by si zmazal záznam. Toto je nebezpečné napríklad v kombinácii so skracovačmi url, kedy nie je vidno kam daný odkaz vlastne vedie.
|
||
Routh Profil * |
#6 · Zasláno: 12. 6. 2009, 10:53:50
Tak už to funguje, ale nastává problém, že se zadáním odkazu a tipnuté ID jde cokoliv smazat, není pro to nějaké ošetření ?
|
||
tiso Profil |
#7 · Zasláno: 12. 6. 2009, 12:00:28
Routh - a o čom som písal v [#5]?
|
||
Routh Profil * |
#8 · Zasláno: 12. 6. 2009, 12:09:33
No vím, něco o tom, ale taky slovensky, a sem ještě ve škole xD
|
||
tiso Profil |
#9 · Zasláno: 12. 6. 2009, 12:53:11
Routh - tak si zavolej maminku anebo tatínka.
|
||
Routh Profil * |
#10 · Zasláno: 12. 6. 2009, 16:28:13
omg ? poradíte jak to vyřešit, nebo budem řešit tatínka a maminku? xD
|
||
fuckin Profil * |
#11 · Zasláno: 12. 6. 2009, 16:49:56
#5 cti...
|
||
Routh Profil * |
#12 · Zasláno: 13. 6. 2009, 14:22:48
No dobře, takže samozřejmě že to zajistím, budu to využívat v RS pro více lidí, kterým nastavím práva, takže ted otázka jestli to mám řešit ted , nebo nastane stejný problém i při UPDATE. Nebo jestli ten výmaz z DB mám udělat uplně jinak. Nemám s tím zkušenosti, tak budu rád když mi někdo poradí jak to udělat pro RS s více uživateli a jejich práva, Díky moc
|
||
Časová prodleva: 15 let
|
0