sql fout(delete niet uit de data base

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen

Jeroen

22/11/2006 02:04:00
Quote Anchor link
met dit script probeer ik in een admin file een comment van een user te deleten, maar elke keer krijg ik comment deleted, en staat deze comment er nog gewoon
misschien weten jullie wat er mis is?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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
 
PHP hulp

PHP hulp

19/04/2024 19:45:15
 
- SanThe -

- SanThe -

22/11/2006 09:47:00
Quote Anchor link
Hiermee
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
}
 
- wes  -

- wes -

22/11/2006 09:48:00
Quote Anchor link
haal ook je backticks weg!
 
Terence Hersbach

Terence Hersbach

22/11/2006 10:27:00
Quote Anchor link
gebruik ook or die(mysql_error());
 
Eris -

Eris -

22/11/2006 10:30:00
Quote Anchor link
gebruik ook or die(mysql_error()); is evil

Gebruik een goede error afhandeling...
 
CrawlBackwards

CrawlBackwards

22/11/2006 10:52:00
Quote Anchor link
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..
 
Frank -

Frank -

22/11/2006 10:57:00
Quote Anchor link
$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!
 
Jeroen

Jeroen

22/11/2006 11:45:00
Quote Anchor link
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!


ik gebruik hier addslashes voor omdat ik nog op de oude mysql draai
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
 
Frank -

Frank -

22/11/2006 11:49:00
Quote Anchor link
Quote:
ik gebruik hier addslashes voor omdat ik nog op de oude mysql draai
Dat kan misschien wel de bedoeling zijn, maar ik zie deze functie toch echt niet in jouw code staan!

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.
 
Jeroen

Jeroen

22/11/2006 12:00:00
Quote Anchor link
ok, bedankt waarschijnlijk doet hij het ook om die redene niet?

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.