Den 27-09-2010, skrev Sonni Jensen:
> Jeg prøver at gemme en update:
>
> echo $sql_hest = "UPDATE `nv_heste` SET
> `horse_id`='$_POST[regnr]',
> `navn`='$_POST[navn]',
> `kon`='$_POST[kon]',
> WHERE regnr='$_GET[regnr]'";
>
> Men i 'navn' er der apostrof f.eks. Gill's Girl.
>
> Jeg får alle oplysningrne fra en FORM.
>
> hvordan kan jeg opbygge mine sætning til at forhindre disse fejl.
>
> på forhånd tak.
Det der er en invitation til injektion.
Du skriver ikke, hvilket interface du bruger - antager mysql.
http://dk2.php.net/manual/en/function.mysql-real-escape-string.php
$regnr = mysql_real_escape_string( stripslashes( $_POST[ 'regnr']));
tilsvarende for andre variable
$sql_hest = "UPDATE nv_heste SET horse_id='$regnr', navn='$navn',
kon='$kon' WHERE regnr='$regnr'";
Er der lidt rod med $_GET[] og $_POST[]?
Det sikrer dig ikke mod injektion, men er mindre modtageligt end at
bruge variablene direkte.
"Det rigtige" (i PHP, IMHO) er at bruge prepared statements - og du
skal så bruge et andet interface, f.eks. mysqli
http://dk2.php.net/manual/en/book.mysqli.php
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk