Fout bij sturen formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nanno

Nanno

15/08/2008 13:59:00
Quote Anchor link
Beste mensen,

Ik heb een formulier in html die uiteindelijk door een php script wordt verwerkt en de gegevens in de database worden gezet.

Nu gaat het alleen fout als er een naam in het veld wordt geplaatst met een '-teken. Dus: van 't Pad als naam.

Wie heeft voor mij de oplossing om dit te kunnen verwerken??

Bedankt voor de reactie.

Groet,

Nanno
 
PHP hulp

PHP hulp

18/05/2024 08:29:31
 
Douwe

Douwe

15/08/2008 14:02:00
Quote Anchor link
mysql_real_escape_string($_POST['veld']);
 
Barman V

Barman V

15/08/2008 14:04:00
Quote Anchor link
of addslashes() of htmlentities()
 
Nanno

Nanno

15/08/2008 14:26:00
Quote Anchor link
Dank dank dank.....!!!
 
Maarten Slenter

Maarten Slenter

15/08/2008 14:38:00
Quote Anchor link
mysql_real_excape_string werkt beter, dat doet niets met je data opzich, maar maakt het wel even veilig om het door de query heen te krijgen;)

(kortom, geen & gezeik ofzo)
 
Jelle Posthuma

Jelle Posthuma

15/08/2008 14:50:00
Quote Anchor link
En nog ff de theorie erachter zodat Nanno weet wat er precies fout gaat:

Als je een tekst verstuurd met een ' of " erin, dan kan het uit je query breken.

Stel je query is: "UPDATE table SET kolom = ' " . $waarde . " ' "
En waarde bevat: dit is een 'test'

Dan wordt het zo als query gezien:

"UPDATE table SET kolom = ' dit is een 'test' ' "

Dan zie je wel dat die aanhalingstekens worden gezien als deel van de query.
Dit gedeelte ziet ie wel als waarde: ' dit is een '
Omdat die omsloten is door 2 aanhalingstekens, maar daarna ziet ie opeens staan:

test' '

En dat hoort niet, daar hoort ie een , (comma) of andere SQL commando's te krijgen als WHERE, ORDER BY, LIMIT etc.

En die mysql_real_escape_string zorgt er dus voor dat mysql de aanhalingstekens binnen mysql_real_escape_string identificeert als een deel van de string zelf.
 
Barman V

Barman V

15/08/2008 14:57:00
Quote Anchor link
Maar wat is dan precies het verschil tussen addslashes en mysql_real_escape_string.
Ik heb het hier getest, maar het geeft exact hetzelfde resultaat.

Bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$userName
    = "bl\aat'blaat";
echo mysql_real_escape_string($userName); // = bl\\aat\'blaat
echo addslashes($userName); // = bl\\aat\'blaat
?>


Overigens gebruik ik htmlentities, zodat ik geen charset conflicten krijg.
 
Jelle Posthuma

Jelle Posthuma

15/08/2008 16:29:00
Quote Anchor link
addslashes
Beveiligd te volgende items: " ' \ NULL

mysql_real_escape_string
Zelfde als addslashes, maar behandeld ook \n en \r

mysql_real_escape_string is dus net ff een beetje extra.
 
Nanno

Nanno

15/08/2008 16:33:00
Quote Anchor link
Jelle,

Bedankt voor je uitleg!
Ik ben weer een stuk wijzer geworden.

Eigenlijk komt het erop neer dat ik dit commando bij elke variabele gebruik, omdat ik met namen werk en teksten die het ' teken veel bevat.

Nogmaals bedankt, je hebt me uit de brand geholpen.

Groet,

Nanno
 
Jelle Posthuma

Jelle Posthuma

15/08/2008 16:38:00
Quote Anchor link
Nanno, wat je zou kunnen doen, is ergens bovenin je index.php een functie maken als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function toDB($val){
  return mysql_real_escape_string($val);
}

?>


Dan kan je je queries voortaan zo doen:

mysql_query("UPDATE tabel SET kolom = '".toDB($deVariable)."'");

Dan hoef je niet elke keer die lange zin te typen.
 



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.