Dringendes Problem: Kann keine HTML mehr in Formularen...

Alles, was PHP betrifft, kann hier besprochen werden.

Dringendes Problem: Kann keine HTML mehr in Formularen...

Postby Le Thermo » 31. May 2006 09:28

...verwerten.

Hallo zusammen,

erstmal vielen Dank für die Hilfe, die ihr mir bisher gewährt habt. Ich hoffe, dass ihr mir die bei diesem neuen, leider dringendem Problem zuteil werden lasst.

Es passiert folgendes:

Ich habe ein ganz normales HTML-Formular, das auf einem Online-Server liegt. Es umfasst auch eine Textarea, in die ich folgenden Text eingebe:

<p>Text</p>
<p>Hier</p>

Dann übermittle ich das ganze und es wird ausgegeben:

TextHier.

Die HTML-Tags sind verschwunden.

Bis Anfang der Woche war das noch nicht so. Dann habe ich mit einem neuen Gästebuch experimentiert und nun habe ich den Salat. Da muss irgendwas in den Grundeinstellungen verändert worden sein, denn:

Das gleiche Skript, nur auf einem anderen Server (meinem lokalen Rechner) erzeugt die gewünschte Ausgabe:

<p>Text</p>
<p>Hier</p>

Ich habe versucht durch den Befehl phpinfo herauszufinden, wo die Unterschiede zwischen OnlineServer und dem RechnerServer liegen. Einer liegt darin, dass magic_quotes_gpc auf dem localhost "on" ist, auf dem server "off".

Ist das vielleicht eine Möglichkeit? Wenn ja, wie ändere ich das?

Vielen Dank,

mit besten Grüßen,

Christian
Le Thermo
 
Posts: 20
Joined: 16. November 2005 09:43

Postby Le Thermo » 31. May 2006 14:04

Ich würde das ganze gerne noch erweitern, um das Problem zu verdeutlichen. Dazu habe ich ein sehr einfaches Formular geschrieben.

schaut doch mal
http://cardinals2.mastershrimp.com/Test.php

an.

Schreibt

<p>hhh</p>

in das textfeld und drückt auf "senden".

Wenn ihr dann den Seitenquelltext anschaut, dann wird euch auffallen, dass "hhh" ohne HTML-Tags dasteht. Wenn ich das auf meinem Rechner mache, dann sind diese sehr wohl noch da.

Der Code von Test.php ist:
[code]
<form name="form1" method="post" action="">
<textarea name="textarea"></textarea>
<p>
<input type="submit" name="Submit" value="Senden">
</p>
</form>

<?php
if ($_REQUEST["Submit"]=="Senden")
{
$SB=$_REQUEST["textarea"];
echo $SB;
}
?>
[/code]
Mehr Code gibt es nicht und dennoch verschwinden die Tags. Woran kann das liegen?

[b]WICHTIGE ERGÄNZUNG[/b]

Ich habe weiter geforscht und festgestellt, dass generell ALLES, was innerhalb von "<" und ">" steht rausgeschmissen wird... Das scheint wohl was damit zu tun zu haben und nicht mit HTML, oder?

Vielen Dank,

Christian[/code]
Le Thermo
 
Posts: 20
Joined: 16. November 2005 09:43

Postby nullplan » 31. May 2006 19:56

Wenn man zwischen den ersten und den zweiten Teil ein <br /> setzt, ist sogar ein Leerzeichen zwischen den zwei Teilen. Konkretes Beispiel:
Eingabe:
Code: Select all
<p>Michse<br />
Duse</p>

Ausgabe:
Code: Select all
Michse Duse

Also wird nicht alles in spitzen Klammern rausgeworfen.
Tschö,
nullplan
Lernen ohne zu denken ist sinnlos, aber denken ohne zu lernen ist gefährlich. - Konfuzius
nullplan
 
Posts: 22
Joined: 14. May 2006 10:19

Postby stanlus » 26. September 2006 15:30

Dann würde mich brennend interessieren wie du das Problem in den Griff bekommen hast, ich hab nämlich seit gestern exakt das gleiche merkwürdige Problem.
stanlus
 
Posts: 4
Joined: 26. September 2006 15:11

Postby deepsurfer » 26. September 2006 16:25

Auf deinem LINK sind die TAGs bei der Ausgabe vorhanden, im Quelltext sind die in UNIcode Codiert sichtbar.

Hier bei mir mit XAMPP 1.5.3a erscheint die Ausgaben nach absenden
ohne TAG zeichen (also nur hhh) und im Quelltext sehe ich die TAG Anweisungen.

Der Unterschied dürfte an der Serverseitigen Sprachcodierung liegen.


Daher die frage: was für ein ergebnis möchtest du denn ?

a) Ausgabe = ohne TAG / Quell: mit TAG
b) Ausgabe = mit Tag / Quell mit Tag
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby Le Thermo » 26. September 2006 20:23

Hallo zusammen,

mein Problem mit den Tags habe ich ganz einfach gelöst oder nicht gelöst, je nach Standpunkt.

Die HTML-Tags verschwinden einfach. Warum, weiß ich bis heute nicht. Mein Vorschlag ist recht einfach. Bevor ich einen Text in die datenbank einlese ersetze ich mit str_replace alle "<" und ">" durch "[" und "]". Wenn ich den Text wieder "raushole", ersetze ich die Zeichen wieder andersrum!

Ich hoffe, dass das auch bei euch hilft!

Gruß
Le Thermo
 
Posts: 20
Joined: 16. November 2005 09:43

Postby stanlus » 27. September 2006 08:14

Vielen Dank für Deine Antwort.

Leider hilft mir das nicht weiter. Ich hab auf meinem Rechner ein paar Dutzend Virtual-Hosts laufen, unterschiedlichste Web-Anwendungen. Und immer muss ein HTML-Text in eine Datenbank eingefügt werden. Ich kann das nicht in jeder Anwendung faken.

Es muss doch irgendwo eine Einstellung geben so wie EAT_ALL_HTML_TAGS=true :wink: .

Wenn ich phpmyadmin aufmache und einen beliebigen Text mit HTML eingebe (z.B. <span>Text</span>) dann kommt in der DB einfach nur 'Text' an. In der Konsole geht alles ohne Probleme.

Also muss doch irgendwas zwischendrin meine HTML-Tags fressen.
stanlus
 
Posts: 4
Joined: 26. September 2006 15:11

Postby deepsurfer » 27. September 2006 11:32

http://de.selfhtml.org/html/formulare/eingabe.htm wrote:Beachten Sie außerdem, dass innerhalb von <textarea> keine weiteren HTML-Elemente erlaubt sind. Sämtliche Zeichen, die in HTML eine Sonderbedeutung haben, wie <, > und &, müssen zwingend als Entity &lt;, &gt; und &amp; geschrieben werden


Dann geht es wenn die TAGs entweder in UNIcode oder NAMEbefehle benutzt werden.

Code: Select all
NAMEvariante: &lt;p&gt;hhh&lt;/p&gt;
UNIcode Variante: & #60; p &# 62; hhh & #60; /p & #62; (die lerrzeichen sind zuviel, weil die Forensoftware UNIcode umwandelt, auch im CODE eintrag)
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby juergen&lx » 30. September 2006 14:16

Vieleicht hilft dies :)

http://de2.php.net/manual/de/function.h ... decode.php

Code: Select all
<?php
$str = "Ein 'Anführungszeichen' ist <b>fett</b>";

// Gibt aus: Ein 'Anf&uuml;hrungszeichen' ist &lt;b&gt;fett&lt;/b&gt;
echo htmlentities($str)."<br>";

// Gibt aus: Ein 'Anf&uuml;hrungszeichen' ist &lt;b&gt;fett&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);
?>

<br><br><H1>Umkehrung</H1><br><br>

<?php
$orig = "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now
echo "<br>";

echo $b; // I'll "walk" the <b>dog</b> now
echo "<br>";


// Usern mit einer PHP-Version vor 4.3.0 hilft folgender Workaround:
function unhtmlentities($string)
{
   // Ersetzen numerischer Darstellungen
   $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
   $string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);
   // Ersetzen benannter Zeichen
   $trans_tbl = get_html_translation_table(HTML_ENTITIES);
   $trans_tbl = array_flip($trans_tbl);
   return strtr($string, $trans_tbl);
}

$c = unhtmlentities($a);

echo $c; // I'll "walk" the <b>dog</b> now

?>
Jürgen
juergen&lx
 
Posts: 154
Joined: 18. February 2004 21:36
Location: in einem Dorf am Rande des Strombergs
Operating System: Linux

Postby stanlus » 01. October 2006 10:01

Also, bevor Ihr Euch den Kopf zermartert... ich habs gefunden.
Das ganze ist ein PECL-Modul Namens pecl-filter . Kam bei mir mit der Installation der ezComponents als Abhängigkeit mit.

Das Modul filtert serverseitig alle HTML-Tags aus den $_POST Variablen (XSS-Protection), was ja ansich nicht schlech ist. Allerdings ist die Default-Einstellung so, dass ohne weitere Warnung systemweit alle html-Tags "gefressen" werden. Als Folge davon funktionierte kein Web-Anwendung (Wordpress, Jommla etc.) mehr vernünftig. Nachdem ich das Modul pecl-filter nicht bewußt installiert habe, war das eine ziemlich Aktion den Fehler zu finden.

Das ganze ist auf pecl.php.net auch schon als Bug bekannt, hat mir aber trotzdem meine letzten Haare gekostet.
@see http://pecl.php.net/bugs/bug.php?id=7571

Inzwischen ist das Packet dev-php5/pecl-filter im Gentoo-Portage hart maskiert.

Danke an alle die Ihre grauen Zellen bemüht habe.

Viele Grüße
stanlus
 
Posts: 4
Joined: 26. September 2006 15:11

Pecl-Filter

Postby Armer_willi » 04. October 2006 10:41

Hi Stanlus!
Kannst Du bitte erklären, wie ich den pecl-Filter deactiviere?

Der Begriff "Inzwischen ist das Packet dev-php5/pecl-filter im Gentoo-Portage hart maskiert. "

sagt mir nichts, da ich jetzt erst ganz neu xampp installiert habe und den alten "lokalen" Apache auch nicht so gut kenne.
Ich bemühe mich aber, zu lernen :lol:
Ich bin froh, dass es dieses Forum gibt
User avatar
Armer_willi
 
Posts: 2
Joined: 04. October 2006 10:34
Location: Altenbögge

Postby stanlus » 04. October 2006 11:04

Dafür bin ich wiederum mit XAMPP nicht so fit.
In Deinem PHP Verzeichnis (z.B. Programme/xampp/php/) gibt es irgendwo eine filter.ini

Unter der normalen gentoo-Installation von PHP und PECL liegt die in:
/etc/php/apache2-php5/ext/

Die Datei enthält eine Zeile:
Code: Select all
extension=filter.so


Vor die Zeile einfach ein Semikolon setzen.

Dadurch wir das Laden des Filters verhindert.
Es sollte allerdings auch eine Möglichkeit geben die Einstellungen des Modules zu ändern. Da ich dies nicht benötige hab ich mich auch nicht weiter damit beschäftigt.

Grüße
stanlus
 
Posts: 4
Joined: 26. September 2006 15:11

Postby Armer_willi » 08. October 2006 12:18

fertig!
Vielen Dank und läuft! :lol:
Ich bin froh, dass es dieses Forum gibt
User avatar
Armer_willi
 
Posts: 2
Joined: 04. October 2006 10:34
Location: Altenbögge


Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests