[PHP/MYSQL] aanhalingstekens probleem met mysql

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi gasten :),

ik heb een probleempje, zoals je dit aan de onderwerp topic kunt zien..
Het zit namelijk zo, wanneer ik iets post op een gastenboek (de textarea heeft de naam "bericht") en ik post het en in de tekst staat allemaal " en ' dingen, en dan krijg ik in het gastenboek \' en \", hoe kan ik dit vermijden?
Zoals vermeld draagt de textarea veldje de naam "bericht", dit stukje wordt gebruikt in de else {}:
PHP:
1
$bericht = addslashes($_POST['bericht']);

Ik heb het ook zo geprobeerd:
PHP:
1
2
str_replace("\\'", "'", $bericht);
str_replace("\\\"", "\"", $bericht);

Dit kwam na de addslashes...

Het werkt niet, hoe moet ik het dan laten werken? Hartstikke bedankt.
P.S. Ik heb al gegoogled en op de search van GOT gekeken, niks kunnen vinden.

Acties:
  • 0 Henk 'm!

  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 21:42
stripslashes

Acties:
  • 0 Henk 'm!

Verwijderd

Dan had je toch beter moeten zoeken (op php.net).

Je gebruikt addslashes, en als je kijkt onderaan (voor de user comments) bij addslashes (http://www.php.net/addslashes) zie je daar staan:
See also stripslashes(), htmlspecialchars(), quotemeta(), and get_magic_quotes_gpc().
En wat zou dat eerste nou zijn :) (zoals Eegee ook al zei).
Description
string stripslashes ( string str)

Returns a string with backslashes stripped off. (\' becomes ' and so on.) Double backslashes (\\) are made into a single backslash (\).

[ Voor 33% gewijzigd door Verwijderd op 22-08-2004 18:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
thnx het werkt nu :), ff voor de mensen die ook hetzelfde probleem hebben:
PHP:
1
echo stripslashes($obj->bericht);

$obj is verwezen van de while lus :)

Acties:
  • 0 Henk 'm!

Verwijderd

Handlig is de FAQ te lezen: P&W FAQ - PHP Er staat zelf in dat je beter een custom escape methode kunt gebruiken. Er blijft met add en stripslashes namelijk een kans op ongewillige slashes bestaan.

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 20-09 21:53
Als die escapes al in je database staan is dat dus niet goed!
Voor 99% zeker ligt de oorzaak aan de setting magic quotes gpc in je php.ini die waarschijnlijk op on staat.

Deze setting doet al automatisch een addslashes op je GET/POST en COOKIE vars bij het aanroepen van je script. Als je in je scripts dan vervolgens weer een addslashes uitvoert krijg je dus dubbele escaping.

Die stripslashes zou dus helemaal niet nodig hoeven zijn als je slechts eenmaal je data escaped voordat je het in een query gebruikt. De juiste oplossing is om alleen escaping toe te voegen indien de setting magic quotes gpc uit staat.

PHP:
1
2
3
if (!get_magic_quotes_gpc()) {
    $bericht = addslashes($_POST['bericht']);
}

It’s nice to be important but it’s more important to be nice

Pagina: 1