php, codeschnipsel, php beispielen
[Tipp] Nach Serverumstellung läuft Script nicht mehr

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

Userbereich
kostenlos Anmelden
Memberliste

Script Datenbank
Script Archiv
Script Top 20
Screenshots
Testberichte

Suche

 
Script Seite

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
ICQ Generator
Colorpicker
Unix timestamp Tool
TLD Liste
Webkatalog Verzeichnis

Partner
Sprüche Treff

kr2domains.de
Bei diesen Anbieter bekommen sie verschiedene Länd...

Goneo.de
Bei diesen Anbieter bekommt man Webspace, Domains,...

weitere Anbieter
PHP Space Community auf Facebook PHP Space Community auf Twitter RSS Feeds der PHP Space Community

 

Statistik
6 Gäste Online
0 Member Online
43 Besucher heute
1209 Besucher gestern
 

[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:

Quelltext: PHP
1

<?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:

Quelltext: PHP
1

<?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:

Quelltext: PHP
1

<?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:

Quelltext: PHP
1

<?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:

Quelltext: PHP
1

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

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

?>


Dies kann so abgeändert werden:

Quelltext: PHP
1

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

?>

oder so:
Quelltext: PHP
1

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

if ($_GET['seite'== 1include 'start.php';
if (
$_GET['seite'== 2include 'impressum.php';
if (
$_GET['seite'== 3include '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:

Quelltext: PHP
1

<?php
  $sql 
"SELECT url from links WHERE seite '$seite'";
?>
wird bei unkontrollierter automatischer Ersetzung zu:
Quelltext: PHP
1

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

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

Quelltext: PHP
1

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

(Quelle: Wolfgang ), Eingetragen am 10.09.2008


Schreib ein Kommentar

Name
Mail
Webseite
Kommentar



 
 
Webhosting Service | Board Features