Problem mit Convertfunktion

nchristoph

Erfahrenes Mitglied
Hallo zusammen

Ich hab ein kleines Problem mit der Convertfunktion meines Newsscripts.

Es handelt sich um eine abgewandelte Version des Woltlab Newsscripts fürs WBB 2.1.x, umgebaut fürs WBB 3.x.x

Da Woltlab keinen Support mehr liefert für dieses Script, musste ich mich selber dransetzen.

Dies wäre die letzte Funktion, die ich umschreiben muss, damits fürs WBB 3 t.

PHP:
 function convertHTML($text) {
 	static $charset;
 	global $phpversion;

 	if(!isset($charset)) {
  		global $lang;
  		$charset=strtolower($lang->items['LANG_GLOBAL_ENCODING']);
 	}
 	if(version_compare($phpversion, "4.3.0")>=0 && ($charset=="iso-8859-1" || $charset=="iso-8859-15" ||
 	$charset=="utf-8" || $charset=="cp1252" || $charset=="windows-1252" || $charset=="koi8-r" || $charset=="big5" ||
 	$charset=="gb2312" || $charset=="big5-hkscs" || $charset=="shift_jis" || $charset=="euc-jp"))
 	return @htmlentities($text, ENT_COMPAT, $charset);
 	elseif($charset=="iso-8859-1" || $charset=="windows-1252") return htmlentities($text);
 	else return htmlspecialchars($text);
}


Wenn ich jetzt Html Code poste, wird der nicht umgewandelt, obwohl HTML erlaubt ist im Post sonder die < werden zu &lt; usw.

LANG_GLOBAL_ENCODING ist auf windows-1252 eingestellt.

Wie muss ich das umbauen, damits wieder Funktioniert?

Sitze da schon eine weile drüber, find den Fehler aber ned.
 
Moin Christoph,

eigentlich müsstest du diese Funktion dann überhaupt nicht aufrufen, denn sie macht nur das, was du nicht willst...HTML-eigene Zeichen in ihre Entitäten umwandeln.
Sonst macht sie garnichts.
 
Danke erstmal für die hilfe.

$allowhtml war sogar standardmässig definiert, allerdings hat Woltlab das mit include der global.php vom WBB2 gemacht. Da das wbb3 und wbb2 grund verschieden sind, funktioniert das natürlicht nicht.

Ich hab das ganze jetzt sogemacht, indem ich einfach ne MySqlAbfrage gemacht habe, und da überprüfe, ob $row['enableHtml'] 1 oda 0 ist.

Frage wegen Sicherheit: Sollte ich isset verwenden? Im Moment verwende ich folgenden Code:

PHP:
if($row['enableHtml'] == 0){
$allowhtml = 0;
}
else if($row['enableHtml'] == 1){
$allowhtml = 1;
}

Oder kann ich das so lassen? Funktionieren tuts ja, nur fraglich ob das Sicher ist.
 
Naja, wenn du sicher gehen bist, dass niemand durch ein Schlupfloch die Variable $allowhtml manipulieren kann, wäre das natürlich sicher....bei Forensoftware kann man da erfahrungsgemäss nie sicher sein :-)

Falls nicht, wäre da eine Konstante empfehlenswerter.

Praktischer wäre wohl, wenn du diese ganzen Berechtigungen in einem Objekt als private Variablen deponierst, das würde den Zugriff übersichtlicher machen und den unberechtigten Zugriff erschweren.
 
Zurück