php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 4 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 15-12-2011, 13:50
anna28
 Registrierter Benutzer
Links : Onlinestatus : anna28 ist offline
Registriert seit: Sep 2011
Beiträge: 40
anna28 befindet sich auf einem aufstrebenden Ast
Standard UTF-8 MySQL Umlaute

Ich habe mein Projekt auf UTF-8 umgestellt und alle Maßnahmen ergriffen, die das Internet vorschlägt. Alles klappt ganz gut, dass heißt Worte mit ü,ö,ä,ß werden aus der Datenbank gelesen und richtig angezeigt. Allerdings ändert sich das nach einem UPDATE der Daten aus einem Formular heraus. Dass heißt, Straße wird als Straße aus der Datenbank geladen und angezeigt und nach einem
PHP-Code:
mysql_query("UPDATE tblXYZ SET `Strasse` = '$data[Strasse]' WHERE id='$_SESSION[user_id]'") or die(mysql_error()); 
steht inder Datenbank Tabelle Straà und angezeigt wird im Webbrowser danach StraÃ
Könnte es damit zusammenhängen das mein Loginscript die Variablen vor dem Update über eine page_protect(); Funktion durch einen Filter jagt? Dort gibt es u.a. eine Funktion
PHP-Code:
function filter($data) {
    
$data trim(htmlentities(strip_tags($data)));
    
    if (
get_magic_quotes_gpc())
        
$data stripslashes($data);
    
    
$data mysql_real_escape_string($data);
    
    return 
$data;

Hab irgendwo als stupid Anfänger mal aufgeschnappt, dass htmlentities und UTF-8 nicht geht ????? Oder woran kann mein Problem liegen?
Mit Zitat antworten
  #2 (permalink)  
Alt 15-12-2011, 13:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Was hat da das htmlentities() verloren? Das gehört nicht in die Datenbank.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-12-2011, 14:07
anna28
 Registrierter Benutzer
Links : Onlinestatus : anna28 ist offline
Registriert seit: Sep 2011
Beiträge: 40
anna28 befindet sich auf einem aufstrebenden Ast
Standard

Als Anfänger benutzt man manchmal Scripte, die man nicht komplett versteht. Blöd, ich weiß. In meinem Formular werden alle POST Variablen so verpackt
PHP-Code:
foreach($_POST as $key => $value) {
    
$data[$key] = filter($value); 
und davor wird eine dbc.php include't' und die Funktion page_protect(); auf dieser Seite aufgerufen. Die arbeitet u.a. die bereits erwähnte
PHP-Code:
function filter($data
ab. Hab folgendes entdeckt, aber weiß nicht, wie ich meine Filterfunktion damit verändern muss.
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $charset [, bool $double_encode = true ]]] )
Mit Zitat antworten
  #4 (permalink)  
Alt 15-12-2011, 15:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Nochmal: Werte die in eine Datenbank gespeichert werden, dürfen nicht mit htmlentities() oder htmlspecialchars() behandelt werden. Du musst bei deiner Filter-Funktion htmlentities() komplett entfernen. Außerdem ist deine Funktion falsch benannt. Sie sollte eher getPostValueAndRemoveMagicQuotesAndSqlEscape() heißen. Jetzt wirst du sicher sagen, dass der Name viel zu lang ist. Darauf werde ich dir sagen, dass die Funktion zu viele Aufgaben erledigt. Eine Funktion sollte für _eine_ Aufgabe zuständig sein und der Name der Funktion sollte verständlich ausdrücken, was diese macht.

Geändert von h3ll (15-12-2011 um 15:50 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 15-12-2011, 15:48
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
, aber weiß nicht, wie ich meine Filterfunktion damit verändern muss.
Ich würde die html*() da weg lassen und die Rohdaten speichern.
Und die Sonderzeichenumwandlung erst vor der Ausgabe machen. Denn erst dann weiß ich, ob das ein HTML, PDF oder gar ein Bild wird.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #6 (permalink)  
Alt 15-12-2011, 15:57
anna28
 Registrierter Benutzer
Links : Onlinestatus : anna28 ist offline
Registriert seit: Sep 2011
Beiträge: 40
anna28 befindet sich auf einem aufstrebenden Ast
Standard

So klappt es jetzt. Danke an alle und alle Tips.

Code:
trim(htmlentities(strip_tags($data), ENT_QUOTES, 'UTF-8'))
Mit Zitat antworten
  #7 (permalink)  
Alt 15-12-2011, 16:10
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Das ist falsch.
Mit Zitat antworten
  #8 (permalink)  
Alt 16-12-2011, 10:20
anna28
 Registrierter Benutzer
Links : Onlinestatus : anna28 ist offline
Registriert seit: Sep 2011
Beiträge: 40
anna28 befindet sich auf einem aufstrebenden Ast
Standard

Was kann so passieren ???
Mit Zitat antworten
  #9 (permalink)  
Alt 16-12-2011, 10:39
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Dass du Datenmüll in die Datenbank schreibst.
Mit Zitat antworten
  #10 (permalink)  
Alt 16-12-2011, 11:02
anna28
 Registrierter Benutzer
Links : Onlinestatus : anna28 ist offline
Registriert seit: Sep 2011
Beiträge: 40
anna28 befindet sich auf einem aufstrebenden Ast
Standard

Nöö - passiert eigentlich momentan nicht. Ich werde es mal eine weile testen. Danke Dir
Mit Zitat antworten
  #11 (permalink)  
Alt 16-12-2011, 11:21
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von anna28 Beitrag anzeigen
Nöö - passiert eigentlich momentan nicht. Ich werde es mal eine weile testen. Danke Dir
Warum wehrst du dich so den Fehler zu korrigieren? Ein erfahrener Programmierer erkennt ganz eindeutig den Fehler und du sagst quasi drauf "ich wart mal ab, bis was passiert, erst dann mach ich was". Wenn du immer so "ordentlich" programmierst, will ich nicht wissen, wie der Rest von deiner Applikation aussieht. Vermutlich gespickt mit haufenweise Sicherheitslücken und sonstige Grauslichkeiten. Aber solange nix passiert, ist ja alles gut %-)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
mysql, update, utf-8, utf8


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
UTF-8 und deutsche Umlaute beginner123 PHP Developer Forum 6 25-01-2011 13:15
Umlaute mit UTF-8 die 5920. naitsab SQL / Datenbanken 24 26-12-2008 20:07
Array in DB, UTF-8 Umlaute SonicCGN SQL / Datenbanken 6 20-08-2006 20:49
utf-8_decode kann nicht alle utf-8 zeichen?? mael15 XML 6 08-12-2005 18:37
umlaute, utf-8 hinkmaster PHP Developer Forum 2 31-03-2005 01:27

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:44 Uhr.