Delete werkt niet
http://strampke.mine.nu/boekenlijst
INSERT, SELECT, UPDATE werkt, maar DELETE niet.
Hier is de code:
O ja, als ik direct op de Linux (Freesco) server in mysql commando's geeft, werkt alles prima.
Hein
Mijn eerste poging in php kan je zien op INSERT, SELECT, UPDATE werkt, maar DELETE niet.
Hier is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
if (isset($_GET['deleteboek'])) {
$boekid = $_GET['deleteboek'];
$sql = 'DELETE FROM boeken WHERE id=$boekid';
if (mysql_query($sql)) {
echo "<p>het boek is deleted</p>";
$invoerstring = '<meta http-equiv="refresh" content="3;URL=./boekenlijst.php">';
echo $invoerstring;
}else{
echo "<p>failed to delete het boek met id .$boekid. </p>";
$invoerstring = '<meta http-equiv="refresh" content="5;URL=./boekenlijst.php">';
echo $invoerstring;
}
}
$db = mysql_connect("localhost", "root");
mysql_select_db("boekendb",$db);
$result = mysql_query("SELECT * FROM boeken",$db);
if ($myrow = mysql_fetch_array($result)) {
echo "<table border=1>\n";
echo "<tr><td>ISBN</td><td>Titel</td><td>Auteur</td><td>Druk</tr>\n";
do {
$boekid = $myrow["id"];
printf("<a href=\"%s?id=%s\"><tr><td>%s</td><td>%s</td><td>%s</td><td>%s</tr></a><br>\n", $PHP_SELF, $myrow["id"], $myrow["isbn"], $myrow["titel"], $myrow["auteur"],'<a href="'.$_SERVER['PHP_SELF'].'?deleteboek='.$boekid.'">'.' Verwijder dit boek </a>' );
} while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
} else {
echo "Sorry, no records were found!";
}
?>
if (isset($_GET['deleteboek'])) {
$boekid = $_GET['deleteboek'];
$sql = 'DELETE FROM boeken WHERE id=$boekid';
if (mysql_query($sql)) {
echo "<p>het boek is deleted</p>";
$invoerstring = '<meta http-equiv="refresh" content="3;URL=./boekenlijst.php">';
echo $invoerstring;
}else{
echo "<p>failed to delete het boek met id .$boekid. </p>";
$invoerstring = '<meta http-equiv="refresh" content="5;URL=./boekenlijst.php">';
echo $invoerstring;
}
}
$db = mysql_connect("localhost", "root");
mysql_select_db("boekendb",$db);
$result = mysql_query("SELECT * FROM boeken",$db);
if ($myrow = mysql_fetch_array($result)) {
echo "<table border=1>\n";
echo "<tr><td>ISBN</td><td>Titel</td><td>Auteur</td><td>Druk</tr>\n";
do {
$boekid = $myrow["id"];
printf("<a href=\"%s?id=%s\"><tr><td>%s</td><td>%s</td><td>%s</td><td>%s</tr></a><br>\n", $PHP_SELF, $myrow["id"], $myrow["isbn"], $myrow["titel"], $myrow["auteur"],'<a href="'.$_SERVER['PHP_SELF'].'?deleteboek='.$boekid.'">'.' Verwijder dit boek </a>' );
} while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
} else {
echo "Sorry, no records were found!";
}
?>
O ja, als ik direct op de Linux (Freesco) server in mysql commando's geeft, werkt alles prima.
Hein
Quote:
$sql = 'DELETE FROM boeken WHERE id=$boekid';
$sql = 'DELETE FROM boeken WHERE id=' . $boekid;
Zou het te maken kunnen hebben met het inloggen in mysql?
Ik log (niet) in zonder gebruikersnaam en password.
en de link is dus met .php erachter http://strampke.mine.nu/boekenlijst.php
$sql = "DELETE FROM boeken WHERE `id`= $boekid";
Inloggen met username en password verandert niets.
helaas....
Je website is extreem gevoelig voor XSS!!!!
Kijk eens wat ik op deze pagina heb geprogrammeerd voor je!!!! (ja, is een hack aanval)
http://strampke.mine.nu/boekenwijzig.php?id=12
Moet je moet je muis over de invoervelden bewegen, dan zie je het bericht vanzelf!
Gewijzigd op 30/09/2005 19:03:00 door onbekend onbekend
En als je me nu weet te vertellen hoe ik de site kan beveiligen dan ben ik een stuk verder.
htmlentities() helpt je een heel eind verder ^^,
jah.. en dingen als htmlspecialchars, en escape dingetjes.... Tis opzich niet zo spannend hoor...
Maar nu eerst die delete in php graag, java, xss enzo bewaar ik dan voor later.
$sql = "DELETE FROM boeken WHERE id = '".$boekid."';
Of, iets meer secure:
$sql = "DELETE * FROM `boeken` WHERE `id` = '" . $boekid . "' LIMIT 1";
Gewijzigd op 30/09/2005 20:28:00 door onbekend onbekend
doe dit eens:
mysql_query($sql) or die(mysql_error());
Kijken wat hij zegt ;-)
$sql = "DELETE * FROM `boeken` WHERE `id` = '" . intval($boekid) . "' LIMIT 1";
Gewijzigd op 30/09/2005 22:13:00 door - SanThe -
Als je via php inlogt met dezelfde gebruikersnaam en wachtwoord als dat je in je bash doet, moet het aan je php liggen. Anders moet je de gebruikersaccount voor het web ook DELETE-rechten geven.
Edit:
Het is überhaupt wel een goed idee om een wachtwoord te gebruiken ;)
Gewijzigd op 30/09/2005 22:31:00 door Winston Smith
De error was: no database selected.
Code van de if loop aangepast en opnieuw connect met de database geeft het gewenste resultaat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if (isset($_GET['deleteboek'])) {
$boekid = $_GET['deleteboek'];
$sql = 'DELETE FROM boeken WHERE id=$boekid';
/* dit stukje is ingevoegd */
if (!$db = mysql_connect("localhost","root")){
echo "connection with the database failed";
exit();
}
mysql_select_db("boekendb",$db);
/* tot hier */
if (mysql_query($sql)) {
echo "<p>het boek is deleted</p>";
$invoerstring = '<meta http-equiv="refresh" content="3;URL=./boekenlijst.php">';
echo $invoerstring;
}else{
echo "<p>failed to delete het boek met id .$boekid. </p>";
$invoerstring ='<meta http-equiv="refresh" content="5;URL=./boekenlijst.php">';
echo $invoerstring;
}
}
?>
if (isset($_GET['deleteboek'])) {
$boekid = $_GET['deleteboek'];
$sql = 'DELETE FROM boeken WHERE id=$boekid';
/* dit stukje is ingevoegd */
if (!$db = mysql_connect("localhost","root")){
echo "connection with the database failed";
exit();
}
mysql_select_db("boekendb",$db);
/* tot hier */
if (mysql_query($sql)) {
echo "<p>het boek is deleted</p>";
$invoerstring = '<meta http-equiv="refresh" content="3;URL=./boekenlijst.php">';
echo $invoerstring;
}else{
echo "<p>failed to delete het boek met id .$boekid. </p>";
$invoerstring ='<meta http-equiv="refresh" content="5;URL=./boekenlijst.php">';
echo $invoerstring;
}
}
?>
Bedankt voor jullie hulp.
Een laatste vraag:
Kan iemand me uitleggen waarom de connection met de database verloren gaat na:
if (!$db = mysql_connect("localhost", "root")){
echo "connection with the database failed";
exit();
}
mysql_select_db("boekendb",$db);
$result = mysql_query("SELECT * FROM boeken",$db);
if ($myrow = mysql_fetch_array($result)) {
echo "<table border=1>\n";
echo "<tr><td>ISBN</td><td>Titel</td><td>Auteur</td><td>Druk</tr>\n";
do {
$boekid = $myrow["id"];
printf("<a href=\"%s?id=%s\"><tr><td>%s</td><td>%s</td><td>%s</td><td>%s</tr></a><br>\n", $PHP_SELF, $myrow["id"], $myrow["isbn"], $myrow["titel"], $myrow["auteur"],'<a href="'.$_SERVER['PHP_SELF'].'?deleteboek='.$boekid.'">'.' Verwijder dit boek </a>' );
} while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
} else {
echo "Sorry, no records were found!";
}
?>
Gewijzigd op 30/09/2005 23:27:00 door Hein
Dit is iets wat ik van mijn leraar van de PHP cursus goed in m'n oren heb geknoopt namelijk dat ik soms te moeilijk denk en dan de oplossing niet meer zie terwijl deze binnen handbereik is...
Fijne dag gewenst!
Groet, lissy