sql fout(delete niet uit de data base
misschien weten jullie wat er mis is?
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
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
<?
if($_GET['type'] == 'comment')
{
if($_GET['option'] == 'delete')
{
$id = stripslashes($_GET['id']);
$uid = stripslashes($_GET['uid']);
$user = stripslashes($_GET['user']);
$date = stripslashes($_GET['date']);
$comment = stripslashes($_GET['comment']);
$resulta = mysql_query("DELETE FROM `comment` WHERE `date`='".$date."' AND `id`='".$id."' AND `user`='".$user."' AND `comment`='".$comment."' AND `postid`='".$uid."' LIMIT 1");
if ($resulta == 0)
{
echo 'There Was And Error Deleting The Replys!<br>';
echo mysql_error();
}
else
{
echo 'Succesfull Deleted The Comment With Id Number: '.$id.' and User ID Number: '.$uid.' !<br>';
}
}
if($_GET['type'] == 'comment')
{
$resulta = mysql_query('SELECT * FROM comment');
while($com = mysql_fetch_assoc($resulta))
{
echo 'Commenters ID: '.$com['postid'].' Username: '.$com['user'].' Commented ID: '.$com['id'].' Content: '.$com['comment'].'<a href="index.php?page=admin&type=reply&option=delete&id='.addslashes($com['postid']).'&uid='.addslashes($com['id']).'&date='.addslashes($com['date']).'&user='.addslashes($com['user']).'&comment='.addslashes($com['comment']).'">Delete Comment</a><br>';
}}
?>
if($_GET['type'] == 'comment')
{
if($_GET['option'] == 'delete')
{
$id = stripslashes($_GET['id']);
$uid = stripslashes($_GET['uid']);
$user = stripslashes($_GET['user']);
$date = stripslashes($_GET['date']);
$comment = stripslashes($_GET['comment']);
$resulta = mysql_query("DELETE FROM `comment` WHERE `date`='".$date."' AND `id`='".$id."' AND `user`='".$user."' AND `comment`='".$comment."' AND `postid`='".$uid."' LIMIT 1");
if ($resulta == 0)
{
echo 'There Was And Error Deleting The Replys!<br>';
echo mysql_error();
}
else
{
echo 'Succesfull Deleted The Comment With Id Number: '.$id.' and User ID Number: '.$uid.' !<br>';
}
}
if($_GET['type'] == 'comment')
{
$resulta = mysql_query('SELECT * FROM comment');
while($com = mysql_fetch_assoc($resulta))
{
echo 'Commenters ID: '.$com['postid'].' Username: '.$com['user'].' Commented ID: '.$com['id'].' Content: '.$com['comment'].'<a href="index.php?page=admin&type=reply&option=delete&id='.addslashes($com['postid']).'&uid='.addslashes($com['id']).'&date='.addslashes($com['date']).'&user='.addslashes($com['user']).'&comment='.addslashes($com['comment']).'">Delete Comment</a><br>';
}}
?>
ik heb alleen het stuk van de delete uit het script gehaalt
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
if ($resulta == 0)
check je of de query is gelukt. Dat wil nog niet zeggen dat er records zijn gevonden en gedeleted.
Om dat te checken gebruik je
if(mysql_affected_rows() == 0)
{
// niets gedeleted
}
else
{
// er is iets gedeleted
}
haal ook je backticks weg!
gebruik ook or die(mysql_error());
Gebruik een goede error afhandeling...
ik gebruik or die(mysql_error()) wel eens maar dat is dan tijdelijk en puur om ff een error af te vangen als me scripts nog niet af zijn..
Vanwaar die hele serie voorwaarden in de query? Waarschijnlijk is het id de enige unieke waarde, dus dat is dan meer dan voldoende om als voorwaarde op te geven.
Ik verwacht overigens problemen met de date, je haalt deze uit een GET, maar je controleert nergens of dit wel in het formaat yyyy-mm-dd staat. En dat is toch echt het enige juiste formaat voor een datatype DATE. Ik neem tenminste aan dat je een datum opslaat in een DATE...
Alle user-input (GET, POST, COOKIE, etc.) beveilig je met mysql_real_escape_string(). Dit ontbreekt in jouw script!
Frank schreef op 22.11.2006 10:57:
$resulta = mysql_query("DELETE FROM `comment` WHERE `date`='".$date."' AND `id`='".$id."' AND `user`='".$user."' AND `comment`='".$comment."' AND `postid`='".$uid."' LIMIT 1");
Vanwaar die hele serie voorwaarden in de query? Waarschijnlijk is het id de enige unieke waarde, dus dat is dan meer dan voldoende om als voorwaarde op te geven.
Ik verwacht overigens problemen met de date, je haalt deze uit een GET, maar je controleert nergens of dit wel in het formaat yyyy-mm-dd staat. En dat is toch echt het enige juiste formaat voor een datatype DATE. Ik neem tenminste aan dat je een datum opslaat in een DATE...
Alle user-input (GET, POST, COOKIE, etc.) beveilig je met mysql_real_escape_string(). Dit ontbreekt in jouw script!
Vanwaar die hele serie voorwaarden in de query? Waarschijnlijk is het id de enige unieke waarde, dus dat is dan meer dan voldoende om als voorwaarde op te geven.
Ik verwacht overigens problemen met de date, je haalt deze uit een GET, maar je controleert nergens of dit wel in het formaat yyyy-mm-dd staat. En dat is toch echt het enige juiste formaat voor een datatype DATE. Ik neem tenminste aan dat je een datum opslaat in een DATE...
Alle user-input (GET, POST, COOKIE, etc.) beveilig je met mysql_real_escape_string(). Dit ontbreekt in jouw script!
ik gebruik hier addslashes voor omdat ik nog op de oude mysql draai
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
Quote:
Dat kan misschien wel de bedoeling zijn, maar ik zie deze functie toch echt niet in jouw code staan!ik gebruik hier addslashes voor omdat ik nog op de oude mysql draai
Jij hebt addslashes en stripslashes precies verkeerd staan: Je stript wanneer er nog helemaal geen slashes zijn en je add slashes wanneer je gaat echoen.
Kortom, er zit een veiligheidslek in jouw code.
EDIT:
ok heb het gevonden nu werkt het allemaal goed,
in de delete link stond bij type 'reply' inplaats van 'comment'
Gewijzigd op 01/01/1970 01:00:00 door Jeroen