Fan så irriterande. Funderar nästan på att byta till ASP pga. detta. Jag vet att jag kan lösa det med stripslashes(). Men det är så fult att ha det 100 gånger i koden.
Vad är det för fel??
(och nej, jag har ingen möjlighet att stänga av magic_quotes_gpc i php.ini eftersom det inte är min dator)
Om jag har ett textfält. Texten jag skriver in ska skrivas upp oavsett vad det är för tecken.
Det är inte bara " det blir \ framför. Det är även \ och andra tecken.
Skriver jag "c:\winnt\" så blir det \"c:\\winnt\\\"
Inte så kul...
Om jag har ett formulär så måste jag köra stripslashes på alla fält för att texten ska bli exakt likadan som dom har skrivit in. Känns oerhört dumt. Men tydligen är jag den enda på jorden som har detta problem
...och nej, jag har ingen möjlighet att stänga av magic_quotes_gpc i php.ini eftersom det inte är min dator.
Då kanske jag kan göra dig glad nu då. Om du har möjlighet att använda .htaccess vill säga (och PHP körs som modul i Apache). Du kan nämligen stänga av detta alternativ genom att lägga en .htaccess i aktuell katalog med följande innehåll:
php_flag magic_quotes_gpc off
Har testat på min burk (Apache och PHP4) och det fungerar.
Kör du PHP3 tror jag det skrivs på annat sätt - kolla i manualen för PHP3.
Men så länge jag har detta problem allmänt så har intresset för att skriva en rad om PHP minskat drastiskt. Om någon har en förklaring på hur och varför man arbetar med det alternativet på skulle det vara guld.
Om någon har en förklaring på hur och varför man arbetar med det alternativet på skulle det vara guld.
Har mest betydelse när man arbetar mot databaser eftersom vissa tecken då kan ställa till problem om de inte är avkodade. Arbetar du inte mot databaser kan du troligen lika gärna stänga av "magic quotes". Annars får du använda stripslashes() i situationer som denna (tycker du att det blir mycket att skriva kan du ju definiera en egen "echo-funktion" som gör det automatiskt).
Håller med dig - är lite skumt att variabler från G/P/C inte fungerar likadant med echo. Fråga mig inte varför.
Det känns konstigt att dom vill göra det bekvämt för databas-användare. Dom kan ju lika gärna använda addslashes() när dom ska spara i databasen.
Troligen p.g.a. att de bedömmer att det är allvarligare att glömma avkodningen för data som skall in i en databas. Allt som händer om du glömmer att använda stripslashes() vid utskrift är ju att du får några oönskade \ i utskriften. Det senare är ju inte lika allvarligt som det förra, och troligen är det därför de gjort denna prioritering (går ju som sagt att stänga av funktionen om man inte vill ha den).