Autor Zpráva
Routh
Profil *
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
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 *
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 *
$zaznam["id"]=intval($_GET['id']);
tiso
Profil
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 *
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
Routh - a o čom som písal v [#5]?
Routh
Profil *
No vím, něco o tom, ale taky slovensky, a sem ještě ve škole xD
tiso
Profil
Routh - tak si zavolej maminku anebo tatínka.
Routh
Profil *
omg ? poradíte jak to vyřešit, nebo budem řešit tatínka a maminku? xD
fuckin
Profil *
#5 cti...
Routh
Profil *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: