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

Main
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

Script Mods
phpBB Adsense Mod

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

Partner
Sprüche Treff

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


clichehosting.c...
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
783 Besucher heute
1235 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.September.2008



Ähnliche News

-
28.08.2008 - [Tutorial] Arbeiten mit Unix-Zeitstempeln, date(),...
27.08.2008 - [Code] Zaehlen, wie häufig ein Wort in einem ...
26.08.2008 - [Code] Banner ausliefern mit PHP (fpassthru)
05.08.2008 - [Video-Tutorial] Mysql Datenbank anlegen im PhpMya...

Letzten Webmaster News

18.12.2009 - Neues Update für die PHP 5.2.x Reihe Online
23.11.2009 - Neue PHP-Version 5.3.1 verfügbar
19.11.2009 - Empfehlenswerte Artikel - Sicherheitslücken W...
18.11.2009 - Wir suchen einen oder mehre Gastautoren
10.11.2009 - Interessante Artikel zum Trinitäts-Operator, ...





 
 
Webhosting Service | Board Features