Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

[Tipp] Nach Serverumstellung läuft Script nicht mehr

Sie befinden sich: Home > Webmaster News

Nach einer Serverumstellung läuft ein Script nicht mehr?

Vor allem alte PHP-Scripte bekommen dann Probleme, wenn Ihr Provider auf eine neue PHP-Version umgestellt hat, oder sonstige Änderungen an Ihrem Server oder Webspace vorgenommen hat. In den allermeisten Fällen ist die Einstellung für 'register globals' die Ursache für Ihr Problem.

Machen Sie zunächst den folgenden Test: Erstellen Sie sich eine kleine PHP-Datei mit folgendem Inhalt:


<?php
phpinfo();
?>



und speichern Sie diese unter dem Namen phpinfo.php auf Ihren Webspace. Wenn Sie diese dann aufrufen, so sehen Sie sehr viele Informationen über Ihre Installation.

Unter der Überschrift "Configuration" finden Sie dann die Einstellung, die uns hier besonders interessiert. Dort steht:

register_globals Off oder register_globals On

Was bedeutet dies nun? Die Einstellung Register Globals = On bewirkt unter anderem, dass an ein Script übergebene variabeln sofort unter Ihrem Namen verfügbar sind. Beispiel:


<?php
// test.php - wird aufgerufen mit test.php?seite=(seitennummer)
echo $seite;
?>



Mit register_globals = on steht nach test.php?seite=4 die Variable $seite unmittelbar im Script zur Verfügung, weshalb die echo-Anweisung uns die übergebene 4 ausgibt. Bei register_globals = off ist $seite nicht vorhanden.

Unabhängig von der Einstellung für register_globals steht aber der Superglobale Array $_GET zur Verfügung. Wir finden die übergebene Variable in diesem Array unter dem Schlüssel des genutzten Namens:


<?php
// test.php - wird aufgerufen mit test.php?seite=(seitennummer)
echo $_GET['seite'];
?>



Achten Sie auf die korrekte Schreibweise: $GET oder $get oder $_Get sind falsch.

Wenn Ihr Script die Werte nicht mit ?variable=wert entgegennimmt (per GET), sondern aus einem Formular mit POST, dann stehen Ihre gesuchten Übergabewerte im Array $_POST:


<?php
// test.php - wird aufgerufen aus einem Formular mit method="post"
echo $_POST['seite'];
?>



Um Ihr Script nun ans Laufen zu bringen, müssen Sie die gesuchten Werte nun aus dem Array holen. Schauen Sie sich genau an, welche Werte das Script erwartet, und ändern Sie dann die entsprechenden Stellen ab. Beispiel:


<?php
// index.php - wird aufgerufen mit index.php?seite=(seitennummer)

if ($seite == 1) include 'start.php';
if ($seite == 2) include 'impressum.php';
if ($seite == 3) include 'galerie.php';

?>



Dies kann so abgeändert werden:


<?php
// index.php - wird aufgerufen mit index.php?seite=(seitennummer)
$seite = $_GET['seite'];
if ($seite == 1) include 'start.php';
if ($seite == 2) include 'impressum.php';
if ($seite == 3) include 'galerie.php';

?>


oder so:


<?php
// index.php - wird aufgerufen mit index.php?seite=(seitennummer)

if ($_GET['seite'] == 1) include 'start.php';
if ($_GET['seite'] == 2) include 'impressum.php';
if ($_GET['seite'] == 3) include 'galerie.php';

?>



Auch in den includierten Dateien müssen Sie ggf. auch prüfen, ob Variablen gegen die Elemente aus dem GET-Array ersetzt werden müssen.

Empfehlung: Wenn Sie nicht triviale Scripte aus dem Web installieren möchten, bei denen Usereingaben verarbeitet werden, dann müssen Sie in diesen Scripten Konstruktionen mit $_GET oder $_POST vorfinden. Finden Sie diese Array nicht, obwohl Daten in Formularen erfasst und gespeichert werden, dann installieren Sie dies Script besser nicht. Es wird nicht ordentlich funktionieren.

Abzuraten ist davon, Ihre PHP-Installation dahingehend zu ändern, dass register_globals wieder auf on gestellt wird. Spätestens ab PHP6 wird es diese Einstellung nicht mehr geben und dann werden alle Scripte, die auf diese Einstellung setzen, definitiv nicht mehr laufen.

Seien Sie vorsichtig mit einem automatischen Esetzen von $variable auf $_GET['variable']. Es könnten sich Syntaxfehler ergeben:


<?php
  $sql = "SELECT url from links WHERE seite = '$seite'";
?>

wird bei unkontrollierter automatischer Ersetzung zu:


<?php
  $sql = "SELECT url from links WHERE seite = '$_GET['seite']'";
?>


was durch die Hochkomma-Struktur falsch ist. Richtig wäre:


<?php
  $sql = "SELECT url from links WHERE seite = '" . $_GET['seite'] . "'";
?>

(Autor: WolfgangWolfgang), Eingetragen am 10.09.2008


Schreib ein Kommentar

Name
Mail
Webseite
Kommentar