SweyMedlem sedan apr. 20002 000 inlägg
kod:
<?
echo $text;
?>
anropas med
/fil.php?text="test"
skriver ut
\"test\"
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)
arrrgh....
------------------
/mvh Swey
#webForum @ DALnet
- It's always on the last place you look...
RobbanMedlem sedan dec. 19992 272 inlägg
Beror väl på att du anropar med /fil.php?text="test"? Prova med /fil.php?text=test i stället. :)
------------------
Robban < robban@lipogram.com >
SweyMedlem sedan apr. 20002 000 inlägg
Alltså, jag vill anropa med ".
------------------
/mvh Swey
#webForum @ DALnet
- It's always on the last place you look...
woodiMedlem sedan feb. 2000670 inlägg
Varför!? Vad ska det fylla för funktion att "quota" texten?
------------------
woodi
Svenska FF1
www.johan-skog.nu
SweyMedlem sedan apr. 20002 000 inlägg
Men ni förstår tydligen inte alls vad jag menar
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 :(
------------------
/mvh Swey
#webForum @ DALnet
- It's always on the last place you look...
[Redigerat av Swey den 16 jun 2000]
woodiMedlem sedan feb. 2000670 inlägg
Jag förstår någ fortfarande inte vad Du menar..
Jag har aldrig varit med om detta problemet med text jag skrivit in i ett formulär..
------------------
woodi
Svenska FF1
www.johan-skog.nu
RobbanMedlem sedan dec. 19992 272 inlägg
...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.
------------------
Robban < robban@lipogram.com >
SweyMedlem sedan apr. 20002 000 inlägg
Tack för tipset
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.
------------------
/mvh Swey
#webForum @ DALnet
- It's always on the last place you look...
K*****Medlem sedan juni 20001 inlägg
Direkt från manualen.
Tar bort oönskade \
string stripslashes (string str)
Returns a string with backslashes stripped off. (\' becomes ' and so on.) Double backslashes are made into a single backslash.
/K
woodiMedlem sedan feb. 2000670 inlägg
K*****
Om Du läste Sweys inlägg så skrev han att han INTE ville använda sig av stripslashes();
------------------
woodi
Svenska FF1
www.johan-skog.nu
RobbanMedlem sedan dec. 19992 272 inlägg
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).
------------------
Robban < robban@lipogram.com >
SweyMedlem sedan apr. 20002 000 inlägg
Det handlar inte så mycket om att det blir så mycket att skriva utan snarare svårt att förstå.
$a = "\"c:\\\"";
echo $a;
skriver ut "c:\"
om jag skulle göra stripslashes på den automatiskt skulle resultatet antagligen bli "c:". Inte så bra.
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.
Någon som vet hur andra löser detta? Brukar dom stänga av migic_quotes_gpc?
------------------
/mvh Swey
#webForum @ DALnet
- It's always on the last place you look...
RobbanMedlem sedan dec. 19992 272 inlägg
$a = "\"c:\\\"";
echo $a;
skriver ut "c:\"
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).
------------------
Robban < robban@lipogram.com >
[Redigerat av Robban den 17 jun 2000]
SweyMedlem sedan apr. 20002 000 inlägg
Efter att ha lärt mig lite mer om databaser så förstår jag varför det fungerar som det gör.
Det är ju sant att det är viktigare att datan lyckas komma in i databasen än att det skrivs ut några \-tecken.
Fast jag tycker ändå att man borde kunna upplysa folk att använda AddSlashes vid SQL-frågor.
------------------
/mvh Swey
#webForum @ DALnet
- All you need is Swey, la la la la...