Hello,
wichtig ist, dass Du dir nicht ein Scheunentor öffnest.
Habe da mal einen Denkansatz zum Thema fertig gemacht:
<?php
# include("defConst1.inc.php");
# include("funcLib.inc.php");
# Hier wird die Datenbankverbindung hergestellt.
# $con erhält das Verbindungshandle
session_start();
#-------------------------------------------------------------------------
function show_list($res)
{
$_SESSION["idlist"] = array();
echo "<table border="1">\n";
while ($rec = mysql_fetch_assoc($res))
{
echo "<tr>\n";
echo "<td><input type="checkbox"\n".
" name="person[delete][]"\n".
" value="".$rec["ID_TEST"].""></td>\n";
$_SESSION["idlist"][] = $rec["ID_TEST"];
$rec = array_map("htmlentities", $rec);
foreach($rec as $key => $val)
{
echo "<td>$val</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
}
#-------------------------------------------------------------------------
function show_btn()
{
echo "<br /><input type="submit" name="btn[delete]" value="markierte Löschen" /><br />\n";
}
#=========================================================================
# Hauptprogramm
#=========================================================================
echo "<pre>";
print_r($_POST);
echo "</pre>";
if (($_POST["btn"]["delete"]) and (count($_SESSION["idlist"]) > 0))
{
if (count($_POST['person']['delete']) > 0)
{
foreach($_POST['person']['delete'] as $id)
{
## prüfen, ob die Löschanforderungen gerechtfertigt sind
if(!is_numeric($id) or !in_array($id, $_SESSION["idlist"]))
{
## Fehlerbehandlung wegen Fake
## exit;
}
}
## CSV-Liste aufbauen
$idlist = implode(",",$_POST['person']['delete']);
$query = "DELETE FROM TEST WHERE ID_TEST in ($idlist)";
#########################################
echo "ID-Liste: ($idlist)<br />";
echo "MySQL: ".mysql_error()."<br />";
$res = mysql_query($query);
echo mysql_affected_rows($con)." Datensätze wurden gelöscht<br>";
}
}
## Daten anzeigen
$query = "Select ID_TEST, VARC, ZAHL from TEST";
$res = mysql_query($query,$con);
echo "<form action="".$_SERVER["PHP_SELF"].""\n".
" method="POST"\n".
" enctype="multipart/form-data">\n";
echo "<input type="hidden" name="hid">\n";
if ($res)
{
show_list($res);
show_btn();
}
echo "</form>\n";
echo "Session-Nr: ".session_id()."<br />";
echo "<pre>";
print_r($_SESSION);
print_r($_POST);
echo "</pre>";
?>
Es ist sinnvoll, Löschaktionen nur durch authentifizierte Benutzer durchführen zu lassen. Die zugänglichen Datensätze werden in der Session mit ID eingetragen und beim Löschpost nur dann gelsöscht, wenn sie in dieser Liste drinstehen. Damit ist ausgeschlossen, dass jemand ohne Session oder jemand mit Session aber mangelnden Tabellenrechten Datensätze Löschen kann. Man kann ja in den Datensatz eine Ownerkennung eintragen, die man dann beim Select für den Löschvorschlag abfragt.
Liebe Grüße aus http://www.braunschweig.de
Tom
[ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen