Ganz komisches Problem mit der config.inc.php

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Hallo,

ich versuche mich gerade am Encoding von URL- und Query-Strings.
Ursprünglich wollte ich die escape-Funktion von Smarty nehmen. Wenn ich aber 'url' angebe, passiert rein gar nichts. Alle Strings und die gesamte URL, die ich dort durchjage, bleibt absolut so wie vorher.
Dann dachte ich, machst halt eine eigene Funktion in der config.inc.php und dann passt das schon.
Die Funktion sieht nun wie folgt aus:

Code: Select all

function string_UrlEncoding($text) {
    $text_neu = rawurlencode($text);
    return $text_neu;
}
$serendipity['smarty']->registerPlugin('modifier', 'string_UrlEncoding', 'string_UrlEncoding');
Smarty frisst das soweit, alles in Ordnung. Aber der hineingegebene Text bleibt auch hier wie er ist. Kein Encoding!
Ändere ich den PHP-Befehl "rawurlencode" in "urlencode", dann funktioniert der Befehl.
Kann sich einer von Euch einen Reim darauf machen?

Gruß,
Jens
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Ein kleines Update:

Ich habe den Code der Funktion nun gemäß der Doku hier angepasst, es ist aber immer noch dasselbe Phänomen (urlencode funktioniert, rawurlencode macht gar nicht):

Code: Select all

$serendipity['smarty']->register_function('string_UrlEncoding', 'string_UrlEncoding');
function string_UrlEncoding($text) {
    $text_neu = rawurlencode($text);
    return $text_neu;
}
Gruß,
Jens
onli
Regular
Posts: 2828
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Ganz komisches Problem mit der config.inc.php

Post by onli »

Mit welchem Input rufst du die Funktion denn auf? Und zeig am besten mal den ganzen Aufruf.
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Sehr gerne onli:

<a href="https://plusone.google.com/_/+1/confirm ... rlEncoding}" rel="nofollow" target="_blank">

Das ist eine meiner Codezeilen, welche ich in die index.tpl eingebaut habr.
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Ich habe mal die genrelle Funktionsfähigkeit von "rawurlencode" ausprobiert und diese ist gegeben.
Wenn ich eine PHP-Datei erzeuge, dort einen String in einer Variable speichere, mit "rawurlencode" bearbeite und ausgebe, ist der String in dem Format, das ich erwarte.
Grundsätzlich scheint das auf meinem Server zu funktionieren.

Bezugnehmend auf das obige Problem habe ich nun die Smarty-Funktion "escape:'url'" ausprobiert. Auch diese Funktion macht mit den im obigen Beispielcode übergebenen Daten nichts. Soweit ich gelesen habe, soll die auch "rawurlencode" nutzen?

Morgendlicher Gruß,
Jens
onli
Regular
Posts: 2828
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Ganz komisches Problem mit der config.inc.php

Post by onli »

Ich sehe zwei Möglichkeiten: Entweder der Aufruf ist in irgendeiner Hinsicht falsch, oder die Funktion gibt wirklich den String unmodifiziert zurück. Letzteres kann passieren, wenn das Encoding nicht stimmt - wir hatten riesigen Aufwand damit, einen solchen PHP-Bug im Core zu fixen. Flieg mal über https://github.com/s9y/Serendipity/issues/236. Aber das war mit specialchars, und das Problem war ein zurückgegebener leerer String.

Edit: Das könnts wirklich sein. Laut http://www.smarty.net/docs/en/language. ... escape.tpl nutzt das htmlentities, und das hatte auch ein encoding-Problem. Du könntest die Serendipity-Funktionen dafür nutzen, sie liegen in https://github.com/s9y/Serendipity/blob ... at.inc.php
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Ich habe jetzt nach dem drüber lesen keine Ahnung wovon Du sprichst, baer ich lese mich mal durch die Links ;-)
Vielen Dank!
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Also ganz konnte ich Dir noch nicht folgen onli.
Ich hätte jetzt aus dem Ganzen die specialchars-Funktion als die gesehen, welche Sinn machen würde.
Wenn aber der Befehl htmlentities Probleme mit dem Encoding hat, dann laufe ich doch in genau dasselbe Problem, oder? Die oben genannte Serendipity-Funktion nutzt die doch auch ... Oder bin ich hier auf dem Holzweg?

Gruß,
Jens
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Vergiss es onli, es funktioniert!
Ich Idiot ... nicht fragen ... ich habe hier nichts gesagt!

Vielen Dank für Deine Mühe!
*kopfschüttel*
onli
Regular
Posts: 2828
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Ganz komisches Problem mit der config.inc.php

Post by onli »

Nur das bereits encodierte Ergebnis gesehen? :)

Will dir trotzdem noch auf die Frage antworten:
niffchen wrote:Wenn aber der Befehl htmlentities Probleme mit dem Encoding hat, dann laufe ich doch in genau dasselbe Problem, oder? Die oben genannte Serendipity-Funktion nutzt die doch auch ... Oder bin ich hier auf dem Holzweg?
Die Serendipity-Funktionen nutzen die gleichen, rufen sie aber mit dem richtigen Encoding auf. Der Trick ist in https://github.com/s9y/Serendipity/blob ... c.php#L475

Code: Select all

$encoding = LANG_CHARSET
Das wird dann an die PHP-Funktion weitergereicht.
niffchen
Regular
Posts: 88
Joined: Sat Sep 07, 2013 2:53 pm

Re: Ganz komisches Problem mit der config.inc.php

Post by niffchen »

Ah in Ordnung, Denkfehler meinerseits. Jetzt hast Du mich ;-)
Ja so wie ich das Ergebnis kontrolliert habe, sah ich immer den leserlichen Text und habe mich gewundert. Wenn man nur "urlencode" nimmt, dann werden die "+"se anstatt der Leerzeichen auch als normales Zeichen angezeigt. Deswegen dachte ich irrtümlicherweise, dass es funktionieren würde und das "rawurlencode" nicht.
Die Codierung der Zeichen mit diesem Befehl wurde mir nie irgendwo angezeigt, sondern immer schön leserlich übersetzt.
Danke Dir für Deine Zeit! Wieder was gelernt ;-)
Post Reply