$ _POST leer bei utf-8 Zeichen

8

Ich arbeite an einer mehrsprachigen Website mit CodeIgniter. Es gibt ein Formular, das Daten an den Controller sendet, aber $_POST ist leer, wenn ich anfange, türkische Zeichen wie öçüÜĞ etc. Zu verwenden.

Ich setze den Zeichensatz auf:

%Vor%

Formular:

%Vor%

$_POST und $this->input->post('editor_tr') gibt leer zurück, aber ich kann den rohen Beitrag mit file_get_contents("php://input") sehen.

Dies funktioniert in einem normalen PHP-Test, funktioniert aber nicht mit CodeIgniter. Vielleicht verursacht meine .htaccess-Datei das Problem, aber weiß nicht.

Jede Hilfe wird sehr geschätzt.

UPDATE : Hier ist die Ausgabe für var_dump wie angefordert.

var_dump($_POST) - Ohne türkische Zeichen

%Vor%

var_dump($_POST) - Mit türkischen Zeichen (Die Eingabe war: Türkçe karakter , wird aber nicht in $ _POST angezeigt)

%Vor%

UPDATE 2: Beim Debugging habe ich herausgefunden, dass system.core.Input class die Eingabedaten von _clean_input_data function bereinigt.

%Vor%

Bevor also $_POST für meinen Controller erreicht hat, wird der editor_tr -Wert in dieser Funktion bereits von system.core.Utf8 class bereinigt:

%Vor%     
Ozay 25.04.2011, 22:56
quelle

4 Antworten

6

Da sich die Kommentare häufen und wahrscheinlich übersehen werden, werde ich weitere Vorschläge veröffentlichen.

Leser beachten Sie bitte, dass dies mit $ _POST Datenwerten und nicht mit der Anzeige von Daten auf einer Webseite zu tun hat.

Dieser Benutzer scheint ein ähnliches Problem zu haben:

​​Codeigniter scheint $ _POST des '£' Charakters zu brechen (Pound )

Es gibt hier einen Bericht über Bitbucket von ähnlichem:

Ссылка : Entfernte Verknüpfung: EllisLabs hat dieses Repo für die Öffentlichkeit geschlossen

Vielleicht hilft dies (wahrscheinlich nicht):

ini_set('default_charset', 'UTF-8');

Überprüfen Sie, ob Sie keine Validierungs- oder Vorbereitungsregeln für das Feld ausführen. Dinge wie url_title() streichen diese Zeichen.

    
Wesley Murch 27.04.2011, 08:54
quelle
6

Stellen Sie sicher, dass das Formular-Tag accept-charset:

hat %Vor%

Verwenden Sie dann in der Steuerung utf8_decode () beim Abrufen der gebuchten Werte:

%Vor%     
Fredrik 26.07.2012 18:13
quelle
1

Wenn Sie keine vorherige PHP-Version in Ihrer MAMP-Installation verwenden möchten, können Sie Folgendes verwenden:

  

$_REQUEST

Um die Daten anstelle von $_POST

zu erhalten

$_REQUEST ist ein assoziatives Array, das standardmäßig den Inhalt von $_GET , $_POST und $_COOKIE enthält.

Weitere Informationen: http://php.net/manual/en/reserved.variables.request. php

Und das gibt alle Daten zurück, die aus irgendeinem Grund $_POST brechen!

    
jmserra 13.12.2012 13:05
quelle
-1

Dies ist keine Antwort, aber Sie möchten vielleicht einen Blick darauf werfen, wie alles hereinkommt.

%Vor%

versuchen Sie es mit dem Beitrag von CI

%Vor%     
Peter 26.04.2011 16:44
quelle