Ga naar inhoud
Log in om dit te volgen  
freestyle

explode php hulp

Aanbevolen berichten

Ik heb een stukje code, maar ik weet niet zeker of dit echt vertrouw baar is.

Ik heb zeg maar een link zoiets als:
verwijder.php?sessie=2-12-03-30

En dan wil ik de 2 (id) verwijderen uit de tabel. Dat doe ik zo:

Codeblok:
1
2
3
4
5
<?php
$variable
= mysql_real_escape_string(htmlentities($_GET[sessie]));
    $id = explode(-, $variable);
    $query = "DELETE FROM sessies WHERE id = ".$id[0]."";
?>


Is dit vertrouwbaar?

Edit: Voor dat mensen gaan zeuren, deze code is niet compleet. Zo word de query ook niet uitgevoerd.

Deel dit bericht


Link naar bericht
Delen op andere sites
Niet echt.
1. Ik kan een ander id invullen en log daar iemand anders mee uit.
2. Waarom htmlentities over je $_GET waarde? Htmlentities is enkel nodig bij het weergeven van tekst.

Deel dit bericht


Link naar bericht
Delen op andere sites
Bedankt voor je snelle reactie.

Ik bedenk me nu ook dat ik in de query ben vergeten om de controleren of hij wel de goede gebruiker is.

2. Ik dacht tot dit tegen plain text ofzo iets was.

Deel dit bericht


Link naar bericht
Delen op andere sites
Freestyle (link):
Bedankt voor je snelle reactie.

Ik bedenk me nu ook dat ik in de query ben vergeten om de controleren of hij wel de goede gebruiker is.

2. Ik dacht tot dit tegen plain text ofzo iets was.


Ja, dat is ook tegen plaintext. Maar je echod toch niks. Waarom gooi je er dan htmlentities overheen? Het is niet zo dat mysql niet tegen <plaintext> kan ofzo.

Deel dit bericht


Link naar bericht
Delen op andere sites
Oke. Maar voor de rest is de code dus wel goed en vertrouw baar?

ps: Als ik iets in mijn db opsla dan gebruik ik toch wel htmlentities(); ?

Deel dit bericht


Link naar bericht
Delen op andere sites
Nee, je doet htmlentities() als je iets op een pagina wil weergeven. Jij wil dat nu niet, en dus hoeft dat ook niet.

En mysql_real_escape_string moet altijd, echt AL-TIJD, de laatste functie zijn die je aanroept als je iets in een query gebruikt.
Dus zo:
Codeblok:
1
2
3
4
5
<?php
$variable
= $_GET[sessie];
    $id = explode(-, $variable);
    $query = "DELETE FROM sessies WHERE id = ".mysql_real_escape_string($id[0])."";
?>


Maar je checkt niet of $_GET[sessie] bestaat, je checkt niet of hij het formaat heeft dat je verwacht en je weet niet of de bezoeker die sessie wel mag verwijderen.

Deel dit bericht


Link naar bericht
Delen op andere sites
Freestyle (link):
Oke. Maar voor de rest is de code dus wel goed en vertrouw baar?

ps: Als ik iets in mijn db opsla dan gebruik ik toch wel htmlentities(); ?


Nope. Als je iets opslaat, echo je dan iets? Nee.
Pas bij het echo-en wil je htmlentities erover gooien.

Stel je hebt een forum en je wil berichten kunnen editten, dan ben je fucked als je de gegevens met htmlentities in je database hebt gezet.

Voor zover ik kan zien je je code wel veilig. Maar ik zou mysql_real_escape_string pas aanroepen IN de query.

Edit Wat lennard dus zegt.

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Het is toch $id[0] i.p.v. $id[0] of heb ik het nou mis?
Mijn fout, het is toch $id[0] smiley.

Deel dit bericht


Link naar bericht
Delen op andere sites
Vriendje (link):
Xjessex (link):
Ow okay.. smiley


Getallen hoeven niet tusen haakjes, tekst wel smiley


Tussen haakjes wel smiley Tussen die hoeven getallen niet.

Lennard, maakt dat overigens veel uit?

Deel dit bericht


Link naar bericht
Delen op andere sites
Freestyle (link):
Vriendje (link):
Xjessex (link):
Ow okay.. smiley


Getallen hoeven niet tusen haakjes, tekst wel smiley


Tussen haakjes wel smiley Tussen die hoeven getallen niet.

Lennard, maakt dat overigens veel uit?


Lennard (link):
Freestyle (link):
Lennard, maakt dat overigens veel uit?
Nee, niks. smiley


Nouja, het is gewoon beter om integers als integers te behandelen en strings als strings te behandelen. Zo voorkom je problemen in de toekomst.

Deel dit bericht


Link naar bericht
Delen op andere sites
Ja zeker als je later C talen of java ofzo gata leren. Dan moet je alle variablen van tevoren benoemen of het integer enzo is.

Deel dit bericht


Link naar bericht
Delen op andere sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reageer op dit topic...

×   Geplakt als RTF formaat tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

Log in om dit te volgen  

×
×
  • Nieuwe aanmaken...