webForumDet fria alternativet

Escapa enkelfnuttar och dubbelfnuttar!

Databaser & SQLur Databashanterare & SQL

7 svar · 266 visningar · startad av Neo

Medlem sedan dec. 200079 inlägg
Frågan#1

Hello!

Jag har problem med enkelfnuttar och dubbelfnuttar och INSERT:a i databasen...

Jag hämtar info som är postad förut och stämmer överens med t ex ett visst användarid, sen vill jag inserta samma info igen fast med ett annat användarid...

Problemet är att om det finns enkelfnuttar och dubbelfnuttar i de jag hämtar från databasen så pajar SQL-strängen för att inserta samma info!

Exempel:

variabel test kommer att innehålla, efter query i db:

$test = "onmouseover="this.src=('hurra.gif');""

Hur gör jag för att escapa detta on the fly?

//Neo

Medlem sedan juni 200032 967 inlägg
#2

Det borde fungera utmärkt att escape:a med backslash.

$query = "insert into table1 (field1) values ('onmouseover=\"this.src=(\\'hurra.gif\\');\"')";

Mvh,

Medlem sedan mars 2002777 inlägg
#3

där är väl en ' för mycket i @nders kod.

Medlem sedan juni 200032 967 inlägg
#4

Nja, snarare en för lite. Jag redigerar.

Mvh,

Medlem sedan dec. 200079 inlägg
#5

Hej Anders!

Det funkar utmärkt men jag kanske var lite otydlig...

Koden ser inte ut så utan det där är vad varibeln skulle kunna innehålla...

Så här ser koden ut (lite förenklad):

--------------

$sqlobject = "SELECT * from pro_object_template WHERE user='$user_pro' AND pageid='$baseon'";
$resultobject = mysql_query($sqlobject);
$arrayobject = mysql_fetch_array($resultobject);
if (mysql_num_rows($resultobject)!=0) {
do {
// getid = new pageid
$content = $arrayobject["content"];

$sql_put_object = mysql_query("INSERT INTO pro_object_template (content) VALUES ('$content')");

} while ($arrayobject = mysql_fetch_array($resultobject));

}

--------------------

Jag ser alltså inte vad $content innehåller...

// Neo

Medlem sedan juni 200032 967 inlägg
#6

Ja, jag visade bara teoretiskt. :)

Då får vi byta ut lite i php, det borde räcka att escape:a apostrof.

$content = str_replace("'", "\\'", $arrayobject["content"]);

Mvh,

Medlem sedan jan. 200246 inlägg
#7

Har du testat med addslashes() ?

Medlem sedan dec. 200079 inlägg
#8

Tack Anders!

Det funkar perfekt!

Det verkar som att när man hämtar upp info ur databsen så ersätts \ med ett space-tecken... är det så?

// Neo

132 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)