webForumDet fria alternativet

Strul med addslashes() / magic_quotes_gpc

5 svar · 247 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 427 inlägg
#1

Innan jag lägger in data i min MySQL-databas kör jag addslashes() om inte magic_quotes_gpc är aktiverat, men när jag väl lagt in datan i databasen finns inga "slashar" kvar.

Jag testar att skicka in "foo" i databasen (inkl. citationstecknen) och när jag skriver ut strängen precis innan jag kör mysql_query() ser den ut enligt följande:

\"foo\"

Men när jag tittar i databasen ser den ut så här:

"foo"

Hur kommer sig detta?

SkarreMedlem sedan apr. 20012 427 inlägg
#2

Hmmm... när jag tänker efter är det väl exakt så det är tänkt att det ska fungera. Men när t.ex. redigerar en nyhet och skriver ut en rubrik från databasen till ett formulärfält försvinner att text efter det första citationstecknet eftersom det avslutar value-attributet.

Vad är det bästa sättet att hantera detta på?

SkarreMedlem sedan apr. 20012 427 inlägg
#3

Oops.. det här vart helt fel forum. Flytta gärna till PHP.

MatteMedlem sedan aug. 20002 975 inlägg
#4

Ska du lägga in något i ett formulärsfält, kör htmlentities() eller htmlspecialchars() på det först.

<input type="text" name="var" value="<?php echo htmlentities($variabel, ENT_QUOTES) ?>">
SkarreMedlem sedan apr. 20012 427 inlägg
#5

Tack Matte, jag hittade även följande artikel i ämnet:
http://www.zend.com/zend/tut/using-strings.php#double

Zend skrev:

HTML does not support the use of slashes to escape double quotes. This is of particular concern when using hidden inputs in HTML forms to pass data, and when giving fields a default value. The best way to protect the data is to use htmlspecialchars() on it when creating the hidden input or default value.

PeeerMedlem sedan mars 20025 907 inlägg
#6

Flyttas från PC.

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