PHP Eigenleben - automatisches htmlentities

Michael Engel

Erfahrenes Mitglied
Ich habe ein Problem auf 2 Webservern die scheinbar automatisch auf alle Variablenzuweisungen htmlentities() machen.

Beispiel:

PHP:
<?
$url = "http://www.domain.de/index.php?s=4&test=wert&page=1";
fopen($url,'r');
?>

wirft die errormessage:
<b>Warning</b>: fopen(http://www.domain.de/cgi-bin/htseach.cgi?s=4&amp;amp;test=wert&amp;amp;page=1) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in <b>test.php</b> on line <b>3</b><br />

man achte auf die &amp;`s

Genau das gleiche ist es wenn ich E-Mail Templates mit file_get_contents() öffle und direckt per mail weitersende, dann werden alle umlaute die vorahanden waren gegen &uuml; getauscht und der gleichen.

An was für einstellungen kann ein solches verhalten liegen?
 
Wird beides möglicherweise als Klartext ausgegeben/behandelt? Denn dann ist das normal. Dass du das HTML-Markup kopieren konntest, untermauert diese Vermutung nur.
 
Im Markup sind die &amps; doppelt enthalten, im Serverlog an sich halt eben nur einmal.

Wie gesagt es tritt bei 2 Servern in fast allem auf das von Variablen verarbeitet wird.
 
Was spuckt denn
PHP:
print(ini_get('tidy.clean_output'));
aus?
Wäre das einzige, was mir so auf die Schnelle in der php.ini aufgefallen ist...
Was passiert, wenn du eine Variable einer weiteren zuweist? Wird der Effekt verdoppelt oder wirkt er nur bei der ersten "Anwendung"?
 
im regelfall ist die anwendung darauf einzigaritg bisher :> ich habe bei vielen verwendungen von varablen nen html_entity_decode() eingebaut das es wieder funktionierte.


Mehrfach hatte ich es noch nicht erlebt. das mit dem iniding werd ich morgen testen. Der Server ist ohnehin sehr seltsam ^^
 
Ich hatte das Problem auch.
Es lag daran, dass das php-Script nur so " <? " eröffnet wurde.
Ersetzt man das ganze durch " <?php " funktioniert es wieder normal.
War bei mir zumindest so.
 
Zurück