mysql_real_escape_string
dit doe ik door de waardes te escapen met mysql_real_escape_string()
als ik hierna de waardes weer aanroep, staat er bijvoorbeeld in plaats van foto's foto\'s
hoe krijg ik nu die backslash weer weg?
Groeten
str_replace().
thanks!
Dus magic_quotes uitzetten, dat is de boosdoener, en keurig mysql_real_escape_string() gebruiken.
str_replace lost jouw probleem niet op, dat zorgt er alleen voor dat je er even niets van ziet.
Wat is een goed alternatief voor mysql_real_escape_string() in PDO?
prepared statements. Veilig en eenvoudig, wat wil je nog meer?
@Paradox: Gebruik Als je dus $dbh->prepare("INSERT INTO tabel (veld1, veld2) VALUES('" . $veld1w . "', '" . $veld2w . "')"); heb je geen escaping nodig?
Paradox, maak hier even een ander topic van. Waarom trouwens PDO, omdat het "cool" is? Maak gewoon gebruik van je eigen SQL Class, dan weet je tenminste alle functies, hoe te gebruiken, wie wat hoe en waar ;-)
documentatie, dus daar valt weinig op aan te merken.
@Paradox: ik heb niet veel ervaring met prepared statements, maar meestal is dat zo dat je op de plek van de waardes vraagtekens zet, en dan via bind() (ofzo) de waardes toekent. Tenminste, zoiets, toch? :-P Kijk even in de PDO documentatie ;-).
@Chris: Waarom het wiel opnieuw uitvinden als dat al voor je is gedaan? PDO heeft ook een prima @Paradox: ik heb niet veel ervaring met prepared statements, maar meestal is dat zo dat je op de plek van de waardes vraagtekens zet, en dan via bind() (ofzo) de waardes toekent. Tenminste, zoiets, toch? :-P Kijk even in de PDO documentatie ;-).
http://nl3.php.net/manual/en/pdostatement.bindparam.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//ervan uitgaand dat $oDbh een PDO object is.
try
{
$statement = $oDbh->prepare("INSERT INTO users (recht_id, username, password) VALUES (:recht_id, :username, :password);");
$statement->bindParam(':recht_id', $_POST['recht_id'], PDO::PARAM_INT);
$statement->bindParam(':username', $_POST['username_id'], PDO::PARAM_STR);
$statement->bindParam(':password', md5($_POST['recht_id']), PDO::PARAM_STR, 32);
$statement->execute();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
//ervan uitgaand dat $oDbh een PDO object is.
try
{
$statement = $oDbh->prepare("INSERT INTO users (recht_id, username, password) VALUES (:recht_id, :username, :password);");
$statement->bindParam(':recht_id', $_POST['recht_id'], PDO::PARAM_INT);
$statement->bindParam(':username', $_POST['username_id'], PDO::PARAM_STR);
$statement->bindParam(':password', md5($_POST['recht_id']), PDO::PARAM_STR, 32);
$statement->execute();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
Code (php)
1
2
3
4
2
3
4
<?php
$text = "Er zijn 23 foto\'s gevonden in pieter\'s foto boek";
echo stripslashes($text);
?>
$text = "Er zijn 23 foto\'s gevonden in pieter\'s foto boek";
echo stripslashes($text);
?>
Dit geeft als resultaat :
"Er zijn 23 foto's gevonden in pieter's foto boek"
$text kan dus ook een waarde wezen die je terug krijgt van je mysql...
Grts. René
Gewijzigd op 01/01/1970 01:00:00 door Rene Sn
@René: Dat is dus een oplossing om de rotzooi op te schonen, geen oplossing voor het echte probleem. Het probleem ontstaat bij de input, de INSERT-query. Zorg er dus voor dat je daar geen overbodige slashes in zet, dan hoef je deze er later niet weer uit te slopen.
Jezpur schreef op 16.03.2009 23:35:
str_replace().
Dit is niet handig wanneer je in je tekst bericht een bericht hebt staan wat te maken heeft met een path naar een bepaalde folder "C:\Users\Rene\Data...". Je zou anders een hele reeks moeten bouwen voor de \ welke wel weg moeten en welke niet. er zijn zo al 3 verschillende quote's ' ` " enz. enz.
Terwijl stripslashes() dit allemaal zelf regeld.
Grts. René
pgFrank schreef op 17.03.2009 18:16:
@René: Dat is dus een oplossing om de rotzooi op te schonen, geen oplossing voor het echte probleem. Het probleem ontstaat bij de input, de INSERT-query. Zorg er dus voor dat je daar geen overbodige slashes in zet, dan hoef je deze er later niet weer uit te slopen.
Even 1x een conversie scriptje draaien die alle records ophaalt, opschoont en dan weer in de database zet, lijkt mij handiger. Ben je voor eens en voor altijd van deze ellende af. Anders zul je iedere keer weer bij iedere resultset die je terugkrijgt, weer die rottige slashes moeten verwijderen.
$msg = stripslashes($msg);
Het probleem uiteindelijk ook oplost.
Zolang het een paar kleine dingen blijven zou het mij niet zo boeien. die paar \ \ \ is ook geen wereld ruimte wat er 'verloren' gaat. zolang het een prive blogje is ofzo.
Neemt natuurlijk niet weg dat ik het WEL met je eens ben. :)
Had ook ergens gelezen dat die magic_quotes in PHP6 d'r uit gesloopt is.
René schreef op 17.03.2009 18:54:
Nee, dat ben ik niet met je eens. Daarmee verberg je op 1 plek het probleem, maar het probleem zit nog steeds in jouw database en zal bij iedere andere query weer opnieuw opduiken.@pgFrank: Ook een oplossing, maar je zult het met me eens zijn dat wanneer dit bijvoorbeeld op 't veld msg gebruikt wordt. dat 1 x 1 regeltje
$msg = stripslashes($msg);
Het probleem uiteindelijk ook oplost.
$msg = stripslashes($msg);
Het probleem uiteindelijk ook oplost.
Het is geen oplossing maar een lapmiddel. Kun je voor kiezen, maar hou wel in de gaten dat dit veel meer werk is.
$var = stripslashes($var);
EDIT:
Srry, Frank heeft het al gezegd. :P
Gewijzigd op 01/01/1970 01:00:00 door SXForce
pgFrank schreef op 17.03.2009 18:57:
Nee, dat ben ik niet met je eens. Daarmee verberg je op 1 plek het probleem, maar het probleem zit nog steeds in jouw database en zal bij iedere andere query weer opnieuw opduiken.
Het is geen oplossing maar een lapmiddel. Kun je voor kiezen, maar hou wel in de gaten dat dit veel meer werk is.
Het is geen oplossing maar een lapmiddel. Kun je voor kiezen, maar hou wel in de gaten dat dit veel meer werk is.
Dat schreef ik ook ;-) ik ben het wel met je eens.
Maar hoe schakel je dan die magic_quotes uit ?
(als je bij een provider host dan kun je niet bij je php.ini bestand komen).
Ik gebruik meestal stripslashes() o.O
Timen schreef op 17.03.2009 19:50:
Ik gebruik meestal stripslashes() o.O
LOL,
Ik ook. (Teminste wanneer ik op een Remote Server bezig ben) als ik op me eigen server bezig ben hoeft 't niet want ik heb in de php.ini die quote zooi uitgezet.. Scheelt wel knoeiwerk. :) aan de andere kant de stripslashes() function is natuurlijk niet zomaar gemaakt ;-)