php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.04.2005, 01:56  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard [Forum-Projekt] Verständnisfrage zu htmlentities

Es ist so, ich programmiere ein Forum. Da habe ich mir überlegt, wenn jemand jetzt einen Beitrag postet, dann mache ich mit dem Text vor dem Speichern in der DB kein htmlentities($text).

Wird der text aber bearbeitet, zB vom Admin und in ein Inputfeld in das value-Attribut geschrieben, dann muss ich ja htmlentities($text) anwenden, oder ?

Ich bin nur ins Grübeln gekommen, weil wenn der Beitrag dann abgespeichert wird, ist er ja doch quasi "konvertiert".

Ist meine Vermutung richtig?

Ich mach zur Verdeutlichung schnell ein Beispiel:

> User gibt in das Inputfeld "text" ein Wort ein; zB 'Müller & Partner'
> ich speichere das ohne Konvertierung per htmlentities in der DB
> ein Admin oder der User selber will den Text ändern
> damit es keine Probleme gibt, muss ich für das value-Attribut die Variable Text per htmlentities konvertieren
> der Admin/User updatet nun den Beitrag
> jetzt ist er aber konvertiert

Gruß
Stephan
aktionkuba ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.04.2005, 08:26  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

-> für ein formularfeld musst du nur htmlspecialchars verwenden
robo47 ist offline  
Alt 08.04.2005, 09:14  
Erfahrener Benutzer
 
Registriert seit: 01.06.2004
Beiträge: 721
suendesizer
Standard

Ich würde an deiner Stelle den übergebenen Text schon vor dem ersten Eintrag in die Datenbank mit htmlspecialchars() konvertieren.
__________________
If you read this message backward, Satan will force you to smoke marijuana.
Gute Tutorials
suendesizer ist offline  
Alt 08.04.2005, 09:16  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von suendesizer
Ich würde an deiner Stelle den übergebenen Text schon vor dem ersten Eintrag in die Datenbank mit htmlspecialchars() konvertieren.
wenn du dann aber htmlentities drüberjagst bei der ausgabe bekommst du sicherlich nicht mehr das was du willst.
robo47 ist offline  
Alt 08.04.2005, 09:27  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard

also mir geht es in erster linie um diese komischen hochkommata die neben dem ? stehen. keines der beiden kann ich per str_replace durch ein ' ersetzen. da steigt mir php aus. diese beiden machen probleme.

und dann nochmal zu meinem ablauf. ich habs jetzt so probiert wie robo47 vorgeschlagen hat. nur beim formular die entities drüberlaufen lassen.
aber dann speichert er ja beim bearbeiten eines beitrags die " nicht als " sondern als " usw... und wenn man dann den beitrag ein weiteres mal bearbeiten möchte, dann macht er draus &ampquot; und das versteht er nicht.

wer hat ne idee?

danke, stephan
aktionkuba ist offline  
Alt 08.04.2005, 09:32  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

eben nciht, die " kannst du in nem textfeld ja z.b. garnicht benutzen, weil du damit ja das textfeld beendest, in ner area gehts, aber soweit ich weis, geschieht automatisch die umwanldung der " nach " beim abschicken des formulars.

mfg
robo47
robo47 ist offline  
Alt 08.04.2005, 09:41  
Erfahrener Benutzer
 
Registriert seit: 01.06.2004
Beiträge: 721
suendesizer
Standard

Zitat:
Zitat von robo47
eben nciht, die " kannst du in nem textfeld ja z.b. garnicht benutzen, weil du damit ja das textfeld beendest, in ner area gehts, aber soweit ich weis, geschieht automatisch die umwanldung der " nach " beim abschicken des formulars.

mfg
robo47
Ein " beendet den Inhalt eines Textfeldes nur dann, wenn eine Vorbelegung der Angaben durch value="text" geschieht. Hier sollte natürlich vermieden werden, dass ein Text aus der DB ein " enthält. Wenn du also den Text vor der Abspeicherung in der DB mit htmlspecialchars() oder htmlentities() formatierst, dann darfst du diesen beim wiederholten eintragen natürlich nicht mehr machen. Da bietet es sich an, den String vor dem Abspeichern mit preg_replace() oder str_replace() zu bearbeiten, siehe dazu auch:
php.net/manual/de/function.str-replace.php
__________________
If you read this message backward, Satan will force you to smoke marijuana.
Gute Tutorials
suendesizer ist offline  
Alt 08.04.2005, 09:46  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard

also ich bin mal frech. könnten wir eine ablaufliste aufstellen, wann man was macht? folgende punkte

a) beitrag in DB eintragen
b) beitrag bearbeiten -> Formularanzeige
c) abgeänderten Beitrag in DB updaten
d) bearbeiteten Beitrag bearbeiten -> Formularanzeige
e) abgeänderten Beitrag in DB updaten

Wäre mir eine Superhilfe!
Gruß
Stephan
aktionkuba ist offline  
Alt 08.04.2005, 09:55  
Erfahrener Benutzer
 
Registriert seit: 01.06.2004
Beiträge: 721
suendesizer
Standard

Ähm, hmm... Kannst du evtl. ein paar Tage warten? Eigentlich lohnt sich das Thema sogar, dafür ein kleines Tutorial zu erstellen welches dann auf php-info.org bereitgestellt werden kann.
__________________
If you read this message backward, Satan will force you to smoke marijuana.
Gute Tutorials
suendesizer ist offline  
Alt 08.04.2005, 10:00  
Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 45
PHP-Kenntnisse:
Fortgeschritten
aktionkuba
Standard

also ich habs jetzt hinbekommen. der knackpunkt war wirklich das ´ zeichen ohne shift-taste neben dem ?

hier mein ablauf jetzt:

a) beitrag in DB eintragen

Code:
  $text  = addslashes($_POST["text"]);
  $text  = str_replace("\n","
",$text);
  $titel = addslashes($_POST["titel"]);
b) beitrag bearbeiten -> Formularanzeige
Code:
   $text  = stripslashes($beitrag['text']);
   $text  = str_replace("
","\n", $text);
   $titel = stripslashes($beitrag['titel']);
   $titel = str_replace("´","'",$titel);
   $titel = htmlentities($titel);
c) abgeänderten Beitrag in DB updaten
Code:
    $text  = addslashes($_POST["text"]);
    $text  = str_replace("\n","
",$text);
    $titel = addslashes($_POST["titel"]);
d) bearbeiteten Beitrag bearbeiten -> Formularanzeige
Code:
   $text  = stripslashes($beitrag['text']);
   $text  = str_replace("
","\n", $text);
   $titel = stripslashes($beitrag['titel']);
   $titel = str_replace("´","'",$titel);
   $titel = htmlentities($titel);
e) abgeänderten Beitrag in DB updaten
Code:
    $text  = addslashes($_POST["text"]);
    $text  = str_replace("\n","
",$text);
    $titel = addslashes($_POST["titel"]);
gruß
Stephan
aktionkuba ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
htmlentities bei post notyyy PHP Tipps 2006 1 04.03.2006 01:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zend htmlentities, zend db und htmlenties, htmlentities anwenden, htmlentities() anwenden, wann ist htmlentities, zend speichert htmlentities

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.