qualitum logo
htmlspecialchars under 5.4

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
renninha



Medlem i: 396 dagar

Status: Offline



#722932
Inlägg Skrivet: 2012-04-24 10:16      Ämne: htmlspecialchars under 5.4 Citera

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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
h0tsh0t



Medlem i: 3765 dagar

Status: Offline



#722936
Inlägg Skrivet: 2012-04-24 10:53      Ämne: Citera

PHP:
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
Visa användarprofil Skicka privat meddelande
renninha



Medlem i: 396 dagar

Status: Offline



#722944
Inlägg Skrivet: 2012-04-24 14:06      Ämne: Citera

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 '!"#%&amp;/<br>
#4 : Testa '!"#�%&amp;/<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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
h0tsh0t



Medlem i: 3765 dagar

Status: Offline



#722946
Inlägg Skrivet: 2012-04-24 14:14      Ämne: Citera

hmm vad har du för charset på sidan där du skriver in datan?

KOD:
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
Visa användarprofil Skicka privat meddelande
renninha



Medlem i: 396 dagar

Status: Offline



#722947
Inlägg Skrivet: 2012-04-24 14:34      Ämne: Citera

Nu så!
Tack så mycket!
Lite skumt fortfarande men tillräckligt bra.

// Håkan
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
h0tsh0t



Medlem i: 3765 dagar

Status: Offline



#722948
Inlägg Skrivet: 2012-04-24 14:46      Ämne: Citera

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

PHP:
1:
 print ("#2 : " htmlspecialchars($strENT_QUOTES"ISO-8859-1") . "<br>"); 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic
qualitum logo