Erstmal ein riesen Danke an Eliwood für die Geduld mit mir sämtliche Arten durchzutesten
)
Worum geht es?
Create.php
$this->bbcode_second_pass_code('', 'if(getsetting("spaceinname",0) == 0) {
$shortname = preg_replace("([^[:alpha:]_-])","",$HTTP_POST_VARS[name]);
} else {
$shortname = preg_replace("([^[:alpha:] _-])","",$HTTP_POST_VARS[name]);
}')
diese Codestück "sollte"
normalerweise wegen dem :alpha: Befehl nur alphabetisches durchlassen.. bei einigen Systemen lässt er auch Problemlos dennoch Umlaute durch und Sonderzeichen oder Zahlen, bei anderen entfernt er sie..
Bei mir hat er zb. Zahlen und §$% usw. alle drin gelassen aber aus einem Piérre wurde ein Pirre.. d.h. in meinem System hat er jedes Zeichen, was "standart" auf einer de Tastaturbelegung ist durchgelassen, und jedes nicht deutsche Zeichen wie é gefiltert.
Das empfand ich als sehr lästig und störend, daher wollte ich lieber eine Möglichkeit, dass vernünftig gefiltert wird.
Natürlich ist das unten stehende Codestück nicht vollständig, da jeder Server letztendlich selber entscheiden muss, welche Sonderzeichen er gefiltert haben möchte und welche nicht. Ich habe mich vorerst dazu entschlossen nur die gängigen auf der Tastatur befindlichen zu filtern und nicht die per Linux oder ascii erzeugbaren..
daher ggf. erweitern
$this->bbcode_second_pass_code('', 'if(getsetting("spaceinname",0) == 0) {
$shortname = preg_replace("/([0-9".preg_quote("!?\"§\$%&/()=\'#\}][{²³€@,._:;*+®©™<>|^~´`°³²", "/")."])/","",$HTTP_POST_VARS[name]);
} else {
$shortname = preg_replace("/([0-9".preg_quote("!?\"§\$%&/()=\'#\}][{²³€@,._:;*+®©™<>|^~`´°³²", "/")."])/","",$HTTP_POST_VARS[name]);
}')
ist dabei herausgekommen. Jetzt werden in Silienta beim Charerstellen Zahlen und die in der () vorhandenen Sonderzeichen direkt gefiltert und ein Piérre bleibt dennoch ein Piérre
thx nochmal an Eliwood auf dessen Bitte ich das hier auch veröffentliche
lg Rikkarda