| Visa föregående ämne :: Visa nästa ämne |
| Startad av: |
Meddelande |
renninha
Medlem i: 389 dagar
Status: Offline
#722932
|
Skrivet: 2012-04-24 10:16
Ämne: htmlspecialchars under 5.4
|
|
|
Hej,
Uppdaterade Helsingborgs motocrossklubbs hemsida i helgen från php 4 till php 5.4. Sidan hostas av FSData.
Nu fungerar inte gästboken längre eftersom att när jag "tvättar" meddelande texten med htmlspecialchars på blir den tom om den innehåller tecken som ska konverteras.
Strängen som kommer via _POST är korrekt innan htmlspecialchars.
Har provat med htmlenities och med att hänga på flagga för ENT_QUOTES och UTF-8.
Provade även exemplet som finns i PHP-manualen under htmletities(), men inte heller det fungerade.
Fungerade problemfritt under PHP 4 utan parametrar...
Får inget felmeddelande - strängen blir bara tom.
Är detta en bugg i 5.4, något som jag inte begriper eller har det något med serversetupen att göra?
Ska jag prova med en annan php-version eller är det något som jag skulle åtgärdat i samband med versionsbytet i koden?
Tacksam för hjälp... |
|
|
|
| Till toppen på sidan |
|
h0tsh0t
Medlem i: 3758 dagar
Status: Offline
#722936
|
Skrivet: 2012-04-24 10:53
Ämne:
|
|
|
1: htmlspecialchars("testamig", ENT_QUOTES, "UTF-8");
|
Om du testar följande får du även en tom sträng då ?
Om du läser på php.net för både htmlspecialchars & htmlentities så står följande.
| Citat: |
reject note Return Values
The converted string.
If the input string contains an invalid code unit sequence within the given encoding an empty string will be returned, unless either the ENT_IGNORE or ENT_SUBSTITUTE flags are set. |
Ev. får du kolla över vad du skickar för data eller testa med ENT_IGNORE eller ENT_SUBSTITUTE . |
|
|
|
| Till toppen på sidan |
|
renninha
Medlem i: 389 dagar
Status: Offline
#722944
|
Skrivet: 2012-04-24 14:06
Ämne:
|
|
|
Hej,
Tack för svaret.
Strängen testamig glider igenom elegant. Det är inte förrän det kommer skumma tecken som det blir knas...
Jag skrev följande i koden:
$str = "Testa '!\"#¤%&/";
print ("#0 : " . $str . "<br>");
print ("#1 : " . htmlspecialchars("testamig", ENT_QUOTES, "UTF-8") . "<br>");
print ("#2 : " . htmlspecialchars($str, ENT_QUOTES, "UTF-8") . "<br>");
print ("#3 : " . htmlspecialchars($str, ENT_IGNORE, "UTF-8") . "<br>");
print ("#4 : " . htmlspecialchars($str, ENT_SUBSTITUTE, "UTF-8") . "<br>");
och fick följande resultat:
#0 : Testa '!"#¤%&/
#1 : testamig
#2 :
#3 : Testa '!"#%&/
#4 : Testa '!"#�%&/
"Visa källa" säger:
#0 : Testa '!"#¤%&/<br>
#1 : testamig<br>
#2 : <br>
#3 : Testa '!"#%&/<br>
#4 : Testa '!"#�%&/<br>
Blandad rappakalja... version 2 blir tom. version 3 byter inte alla tecken och version 4 hittar på egna...
Enkelapostrofen blir inte bytt - lär krångla med sql-satsen.
Nog f-n finns dessa tecken med i UTF-8... Eller kan det vara webhotellet som har någon konstig teckenuppsättning? |
|
|
|
| Till toppen på sidan |
|
h0tsh0t
Medlem i: 3758 dagar
Status: Offline
#722946
|
Skrivet: 2012-04-24 14:14
Ämne:
|
|
|
hmm vad har du för charset på sidan där du skriver in datan?
1: 2: <head>
3: <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
4: </head>
|
du bör kanske sätta de till UTF-8 om du inte redan har gjort detta.
EDIT: Tror inte det spelar roll när du testar det så iofs : S |
|
|
|
| Till toppen på sidan |
|
renninha
Medlem i: 389 dagar
Status: Offline
#722947
|
Skrivet: 2012-04-24 14:34
Ämne:
|
|
|
Nu så!
Tack så mycket!
Lite skumt fortfarande men tillräckligt bra.
// Håkan |
|
|
|
| Till toppen på sidan |
|
h0tsh0t
Medlem i: 3758 dagar
Status: Offline
#722948
|
Skrivet: 2012-04-24 14:46
Ämne:
|
|
|
Det kan va värt att kolla på htmlentities() också den är lite mera strikt och konverterar allt som kan översättas till säkra html tecken.
Edit: jag var inne och kollade lite på sidan och i gästboken och du kanske använder charset : ISO-8859-1 så testa att använda
1: print ("#2 : " . htmlspecialchars($str, ENT_QUOTES, "ISO-8859-1") . "<br>");
|
|
|
|
|
| Till toppen på sidan |
|
|