PHP-Problem eines Amfängers: Script ****t nicht nach Serverwechsel bei 1&1

ChrisRau

Grünschnabel
Hallo Zusammen,

gleich vorweg, ich habe so gut wie keine Kenntnisse in PHP und bitte daher schon im Vorfeld um Nachsicht...

Ich habe für einen Bekannten eine Website gestaltet und ein PHP-Script aus dem Netz verwendet, das Bilder, die als Thumbnails im rechten Fenster ausgewählt werden, innerhalb eines anderen Fensters größer anzeigt werden. Die JPGs liegen dazu in zwei verschiedenen Aufösungen vor.

Dieses Script hat bisher einwandfrei funktioniert, bis ich innerhalb 1&1 von einem Hostingpaket auf ein anderes umgestiegen bin. Die Thumbnails rechts werden zwar angezeigt, beim Anklicken passiert aber nichts mehr.

Die Seite läuft problemlos auch auf einem anderen Server bei Hostloco, wo ich sie testweise installiert habe. Der erste Unterschied zwischen Hostloco und 1&1 ist, dass dort lth phpinfo() die Version 4.4.7 läuft, bei 1&1 aber die 5.2.17. Kann das dafür verantwortlich sein?

Hier mal der PHP-Code:
PHP:
<div id="grafikbox">
	<?
	if ($_GET["n"]) { ?>
	<img src="http://www.tutorials.de/images/<? echo $n; ?>" alt="" />
	<? } else { ?>
	<!-- Hier bitte das Startbild eintragen -->
	<img src="http://www.tutorials.de/images/workline1.jpg" alt=""/>
	<? } ?>
	</div>
      
    <div class="Stil1" id="menubox_rechts"> <br />
   <!-- Hier bitte alle weiteren Bilder eintragen eintragen.

Format: ?n= bildname mit endung (ohne Leerzeichen)
 -->
				     
             <a href="<?php echo $PHP_SELF ?>?n=workline1.jpg"><img src="http://www.tutorials.de/images/workline1re.jpg" alt="" width="70" height="70" /></a>
             <a href="<?php echo $PHP_SELF ?>?n=workline2.jpg"><img src="http://www.tutorials.de/images/workline2re.jpg" alt="" width="70" height="70" /></a>
             <a href="<?php echo $PHP_SELF ?>?n=workline3.jpg"><img src="http://www.tutorials.de/images/workline3re.jpg" alt="" width="70" height="70" /></a>
</div>
Habt Ihr eine Idee?

Herzliche Grüße,
Christian
 
Das Script verwendet vermutlich keine Superglobalen sondern verlässt sich darauf, das register_globals eingeschaltet (On) ist. Ab PHP 5 wurde die Option standardmäßig auf Off gestellt. Sehr wahrscheinlich ist das dein Problem. Darauf deutet auch $PHP_SELF hin, was eigentlich ein Element von $_SERVER ist und über $_SERVER['PHP_SELF'] abgerufen werden kann.

Dieses register_globals sorgt also dafür, dass Elemente aus den Superglobalen über den Namen des Indexes innerhalb der Superglobalen erreichbar sind. Vermutlich hast du jetzt kein Wort verstanden.

Lass es einfach damit gesagt sein: Das Script wird auf einem PHP5-Server mit deaktivierten register_globals nicht laufen, ohne angepasst zu werden.
 
Danke für die Info! Ich habe gesehen, dass es wohl Scripts gibt, mit denen man register_globals auf ON setzen kann. Und daß das unter Umständen wohl auch gefährlich sein könnte.

Besteht da in meinem Fall ein echtes Risiko, ich habe ja keine SQL-Datenbank o.ä. in Betrieb?

Alternativ, wie hoch schätzt Du den Aufwand für einen Programmierer ein, damit das Script auch ohne Änderung von register-globals läuft?

Grüße,
Christian
 
Du hast auch zu Beginn den IF-Block nur in "<? ?>" und nicht in "<?php ?>" stehen. Das könnte vielleicht auch ein Grund sein warum es nicht richtig läuft.
 
@ tombe: Danke für den Hinweis, die Änderung hat aber leider nichts gebracht.
@ saftmeister: Ich habe nun eine php.ini erstellt, darin register-globals aktiviert und .... alles läuft wieder wie früher!

Bleibt noch die Frage nach einem pot. Sicherheitsrisiko... das stelle ich mir als nicht besonders groß vor, ist doch diese Bildanzeige die einzige Funktion mit PHP.
 
Zitat von dieser Seite:

Es gibt vier unterschiedliche Paare öffnender und schließender Tags, die in PHP verwendet werden können. Zwei davon, <?php ?> und <script language="php"> </script>, sind immer verfügbar. Die anderen beiden sind Short-Tags und ASP-Tags, die über das php.ini-Konfigurationsfile ein- und ausgeschaltet werden können. Das bedeutet, wenn einige Leute Short-Tags und ASP-Tags bequem finden, sind die daraus resultierenden Skripte nicht überall einsetzbar, so dass diese Tags grundsätzlich nicht empfehlenswert sind.

Würde mir da vielleicht trotzdem mal Gedanken machen auch wenn es mit diesem Fehler nichts zu tun hat!
 
register_globals ist mit Absicht default-mäßig deaktiviert. Ein Sicherheitsproblem ist es auch ohne das eine DB verwendet wird.

Ohne Code kann ich keine Aussage betreffend des Aufwands machen. Du könntest das Script ja einfach mal posten, so geheim wird der Code schon nicht sein ;-)

Je nach Länge des Scripts würde ich zwischen 30 und 2 Stunden tippen, bis das alles adaptiert - hängt aber wie gesagt von der Länge und nicht zu letzt von der Kompetenz des Entwicklers ab :-)
 
Hallo Saftmeister,
der Code ist wohl nicht sehr komplex. Siehe beiliegendes php-text-file.
Danke für Deine Bemühungen!

Herzliche Grüße,
Christian
 

Anhänge

  • 1.txt
    1.txt
    7,1 KB · Aufrufe: 19
Das ist ja einfach ;-)

Da sind allerdings Verlinkungen auf *design.php-Scripte im HTML-Code vorhanden. Gehören die zu diesen Script dazu oder wurden die nachträglich eingebaut? Es könnte nämlich sein, das dort ähnliche Fehler drin sind.
 

Anhänge

  • 1.txt
    1.txt
    7,4 KB · Aufrufe: 12
...das sind Seiten mit dem genau gleichen PHP-Code, also eine Bildauswahl rechts und ein Bereich, in dem das Bild angezeigt werden soll.

Danke für Deine Hilfe!
Christian
 
Zurück