webForumDet fria alternativet

Enkelfnutt i namn

PHPur PHP

14 svar · 474 visningar · startad av addeweb

addewebMedlem sedan jan. 2004216 inlägg
#1

Jag fick felmeddelande när jag skrev namnet Jeanne d'Arc i
ett formulär. Vad kan man då göra med namn som innehåller
enkelfnutt??

MatteMedlem sedan aug. 20002 975 inlägg
#2

När och hur fick du fick du felmeddelande ?
Hur lyder felmeddelandet ?

addewebMedlem sedan jan. 2004216 inlägg
#3

Felmeddelandet ser ut så här:
Warning: mssql_query(): message: Line 1: Incorrect syntax near 'Arc'.

Warning: mssql_query(): message: Line 1: Incorrect syntax near 'Arc'.

Warning: mssql_query(): Query failed

MatteMedlem sedan aug. 20002 975 inlägg
#4

Normalt sett så har en webbserver magic_quotes_gpc satt.

Det verkar du inte ha, så du får köra addslashes() på variabeln innan du lägger in den i SQL-frågan.

addewebMedlem sedan jan. 2004216 inlägg
#5

Ok, då gör jag det. Tack för tipset!

För att hämta samma text från databasen och visa den på
webbsidan, då får jag använda funktionen stripslashes() så
att texten visas som den var avsedd från början.

MatteMedlem sedan aug. 20002 975 inlägg
#6

Du behöver inte köra stripslashes på resultatet när du hämtar.
Jag förutsätter att detta görs när du kör SQL-frågan.

addewebMedlem sedan jan. 2004216 inlägg
#7

Ok, jag prövar med att köra utan stripslashes när jag hämtar från databasen och ser hur det funkar.

addewebMedlem sedan jan. 2004216 inlägg
#8

Jaha, jag har prövat med funktionerna addslashes och
stripslashes. Har märkt att servern har magic_quotes_gpc
aktiverad när jag använde addslashes att det blev dubbla
escapes så jag inte behövde denna funktion. Däremot var jag
tvungen se till att texten visas som den ska med hjälp av
stripslashes. Jag har också sett skillnaden i att använda enkla
fnuttar och dubbla fnuttar. Det fungerar inte att använda enkla
fnuttar kring ett ord eller en enkelfnutt i ett namn t ex d'Arc,
varken i input-fält eller textarea. Däremot går det bra att
använda citationstecken för att betona ett ord i vilket fält som
helst. Vilken funktion är bäst att använda för enkelfnuttar i namn
eller ord, gärna i både input- och textarea-fält? Om det inte går
att använda inputfältet för enkla apostrofer, så vill jag gärna ha
en förklaring. Kan man använda t ex htmlentities()?

MatteMedlem sedan aug. 20002 975 inlägg
#9

Om du har magic_quotes_gpc satt, och postar text från ett formulär ska både apostrofer och citationstecken vara escapade när texten kommer till skriptet som tar hand formuläret. Då ska du inte köra addslashes, utan det går bra att använda värden direkt i SQL-frågan.

Om du sedan hämtar från databasen för att lägga in värdet i ett formulär får du använda htmlentities på värdet. Gärna då med ENT_QUOTES satt:

$variabel_i_formulär = htmlentities($variabel, ENT_QUOTES);
addewebMedlem sedan jan. 2004216 inlägg
#10

Ja, men det funkar inte att skriva in text med en enkelfnutt t ex d'Arch, inte heller går det med 'text'. Det går bara med citationstecken kring ett ord som "text".

MatteMedlem sedan aug. 20002 975 inlägg
#11

Men då måste du köra stripslashes, eler något liknande för att det ska bli så ?

addewebMedlem sedan jan. 2004216 inlägg
#12

Vad jag menar är att jag får problem när jag skriver in ett ord med en eller två enkelfnuttar i ett formulär. Stripslashes använder man ju egentligen för att visa text utan escapes på sidan.... eller har jag missat något?

MatteMedlem sedan aug. 20002 975 inlägg
#13

Skriver du en enkelfutt i ett formulär, och har magic_quotes_gpc satt, så kommer dina enkelfnuttar att vara "escapade" när du hämtar varibeln på sidan som tar emot formuläret (och lägger till i databasen).

Då du har magic_quotes_gpc satt, och dina enkelfnuttar inte är escapade, måste det innebära att du har kod som tar bort dina backslash, t.ex. stripslashes.

Eller någon annan variant som ger samma effekt.

addewebMedlem sedan jan. 2004216 inlägg
#14

Ok, jag kollar upp det i helgen. Fortfarande får jag flera felmeddelanden om detta när jag försöker skriver in namnet d'Arch i formuläret.

addewebMedlem sedan jan. 2004216 inlägg
#15

Kanske får det bli str_replace() för enkelfnutten eftersom det redan finns samma funktion för citationstecknet i forumet som jag håller på och gör iordning men än så länge funkar inte det.

$text = str_replace("<", "<", $text);
$text = str_replace(">", ">", $text);
$text = str_replace('"', """, $text);
$text = str_replace("'", "&apos;", $text);
138 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)