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

Main
Home
Fachbuecher
Support Board
Webmaster News
Script Newsletter
Kontakt
Script Installation
Php
Php Tutorials
Impressum

Userbereich
kostenlos Anmelden
Memberliste
Login

Script Datenbank
Script Übersicht
Script eintragen
Script Top 20

Suche

 
Script Seite



Unsere Php Scripts
Counter Script
Umfrage Script
Bilder Upload Script
Terminverwaltung

Script Mods
phpBB Adsense Mod

Tools und Generatoren
.htpasswd Generatoren
md5 Generatoren
base64 Generatoren
ICQ Generatoren
Colorpicker
Unix timestamp Tool
tdl Liste
Webkatalog Verzeichnis

Partner
Sprüche Treff
weiter Partner

Hosterplus.de
Bekommen Sie Webspace, Domains und Rootserver m..


clichehosting..
Webhoster mit recht einfachen Angeboten.


weitere Anbieter

RSS Webmaster Newsfeed von Php Space RSS Webmaster Newsfeed
RSS Script Newsfeed von Php Space RSS Script Newsfeed

Statistik
7 Gäste Online
0 Member Online
718 Besucher heute

 

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

?>


Dies kann so abgeändert werden:


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

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


<?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'"'";
?>


(Quelle: Wolfgang ), Eingetragen am 10.September.2008




Letzten Webmaster News

10.09.2008 - [Tipp] Fehler beim Speichern des Alters eines User...
10.09.2008 - [Tipp] Nach Serverumstellung läuft Script nic...
29.08.2008 - [Tutorial] Verbindung zu MySql und Auswahl einer D...
28.08.2008 - [TIPP] PHP code lesbar gestaltet
28.08.2008 - [Tutorial] Arbeiten mit Unix-Zeitstempeln, date(),...







  Anzeige 

 
 
Webhosting Service | Board Features