php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 12.05.2008, 12:32  
Neuer Benutzer
 
Registriert seit: 12.05.2008
Beiträge: 3
mailux befindet sich auf einem aufstrebenden Ast
Standard Switch/Include - Problem nach Umstellung auf PHP5

Zugegeben: Ich habe keine große Ahnung von PHP. Vor einiger Zeit habe ich von einem Freund ein Script übernommen, das mir auf Anhieb einfach einzubinden erschien. Soweit, so gut. Allerdings wurde nun der Server von PHP4 auf PHP5 umgestellt. Seither tut es nicht mehr. Habe wirklich schon viel im Netz gestöbert, habe leider bisher keine Lösung für das Problem gefunden.

Es handelt sich im Grunde um eine Kombination aus SWITCH und INCLUDE. So sieht es zum Beispiel aus:
Code:
<? switch ($cms){
                   case "bandinfo": include ("bandinfo.php"); break;
                   case "press": include ("press.php"); break;
                   case "members": include ("members.php"); break;
                   case "history": include ("history.php"); break;
 
                   default: include ("bandinfo.php"); break;
   } ?> 
Aufgerufen werden die Seiten mit Links, z.B. so:
Code:
<a href="theband.php?cms=bandinfo">Bandinfo</a>


Wie gesagt, in PHP4 lief das alles einwandfrei, die verschiedenen Inhalte wurden aufgerufen. Jetzt funktioniert es insofern nicht mehr, als dass nur noch die default-Seite angezeigt wird, egal welchen Link ich anwähle.

Habe wie hier angeraten, eingetragen.
Code:
error_reporting (E_ALL); 

Da wird mir mitgeteilt:
Code:
Notice: Undefined variable: cms in /var/www/web140/html/helterskelter/theband/theband.php on line 121

... usw. jweils in den Zeilen, in denen die Cases stehen.

Ok, ich muss etwas ändern, aber wie? Oder liegt es „nur“ an Einstellungen des Servers, die ich ändern kann?`

Vielen Dank schon mal im Voraus für die Hilfe.
mailux ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.05.2008, 14:42  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Es liegt eigentlich an den Einstellungen des Servers, wobei sich die Einstellungen bei der Umstellung zu PHP5 aber eigentlich verbessert haben.
Das Script, wie es vorher war, war zwar korrekt, aber nicht gut.

Schreib einfach vor die SWITCH-Verzweigung folgende Zeilen:

PHP-Code:
if(isset($_POST['cms'])) $cms $_POST['cms'];
else 
$cms ''
Auch das ist nicht perfekt. Eigentlich sollte man den ganzen SWITCH-Teil überspringen, wenn $_POST['cms'] nicht existiert.

Zum Hintergrund des Problems: In der php.ini (wo die Einstellungen für PHP stehen) gibt es eine Einstellunge "register_globals", die bei alten Servern noch auf 'on' ist. Das bedeutet, dass man auf alle per POST (Formular) oder GET (Formular/URL) übergebenen Variablen direkt mit $variablenname drauf zugreifen kann.
Heutzutage wird aber empfohlen, "register_globals = off" zu setzen (aus Sicherheitsgründen). Damit kann man nicht mehr direkt über $variablenname, sondern nurnoch über $_POST['variablenname'] bzw $_GET['variablenname'] drauf zugreifen.
Montellese ist offline  
Alt 12.05.2008, 15:02  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Montellese Beitrag anzeigen
Heutzutage wird aber empfohlen, "register_globals = off" zu setzen (aus Sicherheitsgründen).
Wobei "Heutzutage" spätestens der 22.April 2002 ist.
PHP: PHP 4 ChangeLog
Zitat:
Version 4.2.0
22-Apr-2002

* ATTENTION!! register_globals defaults to 'off' now !!!
Seit PHP 4.2.0 ist es das default-Verhalten von PHP, nur noch _POST, _GET usw. zuzulassen.
David ist offline  
Alt 12.05.2008, 20:02  
Neuer Benutzer
 
Registriert seit: 12.05.2008
Beiträge: 3
mailux befindet sich auf einem aufstrebenden Ast
Standard

Hm, würde ja gerne erfreut berichten, dass es jetzt super läuft. Leider ist dem nicht so. Was ich jetzt auf jeden Fall weiß ist, dass "register_globals" bei "meinem" Server auf "off" steht.

Zitat:
Schreib einfach vor die SWITCH-Verzweigung folgende Zeilen:


PHP-Code:
if(isset($_POST['cms'])) $cms = $_POST['cms'];
else $cms = '';


Bin ja leider wirklich nicht php-fit. Habe es jetzt an diverse Stellen gesetzt, gab immer Fehler. Vermute mal, du meintest es direkt an den Anfang, also noch vor dem switch(cms). In dem Fall gibt es dann nämlich keine Fehlermeldung, allerdings kommt weiterhin nur die default-Seite.

Hm, oder sollte ich komplett auf den switch-Befehl verzichten. Wie könnte eine Alternative aussehen?

Bin momentan etwas ratlos, sorry.
mailux ist offline  
Alt 12.05.2008, 21:22  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Ich meinte es so:

PHP-Code:
<?php

if(isset($_GET['cms'])) $cms $_GET['cms'];
else 
$cms '';

switch (
$cms){
    case 
"bandinfo": include ("bandinfo.php"); break;
    case 
"press": include ("press.php"); break;
    case 
"members": include ("members.php"); break;
    case 
"history": include ("history.php"); break;
 
    default: include (
"bandinfo.php"); break;

?>
Sorry hatte einen Fehler in meinem anderen Code. Es hätte $_GET anstatt $_POST sein sollen. Hoffe, dass es so klappt.
Montellese ist offline  
Alt 12.05.2008, 22:07  
Neuer Benutzer
 
Registriert seit: 12.05.2008
Beiträge: 3
mailux befindet sich auf einem aufstrebenden Ast
Standard

Hurra, es klappt!

Vielen Dank, mal wieder einen Unwissenden ein Stückchen schlauer gemacht.

Na dann werde ich mal ran machen, die neuen Zeilen überall einzubinden. Habe zwei Webpräsenzen, die im Kern darauf basieren.
mailux ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
PHP5 erkennt kein PHP5!? DaOnkel PHP Tipps 2006 4 14.03.2006 11:56
[Erledigt] Seit PHP5 - vB sehr Langsam PHP Tipps 2006 3 02.03.2006 10:11
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Problem mit php5 kazuya PHP Tipps 2006 5 05.02.2006 14:57
Problem beim installieren von php5 Klaus Server, Hosting und Workstations 3 01.11.2005 10:41
[Erledigt] PHP5: &quot;Private Lazy Initialization&quot; mit __get() mo PHP-Fortgeschrittene 10 16.10.2005 16:57
Apache2 und PHP5 Problem Server, Hosting und Workstations 2 09.09.2005 17:14
SOAP in PHP5 für NuSoap deaktivieren PHP-Fortgeschrittene 2 03.08.2005 18:23
[Erledigt] Problem mit Backslash Patrick Schwarz PHP Tipps 2005-2 5 26.07.2005 09:54
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Php5 + Soap unter Win2k + IIS5 PHP-Fortgeschrittene 0 04.08.2004 16:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php5 include, include php5, php5 case, php5 switch, switch case include, switch include, include switch, switch php5, php5 switch case, php include switch, php5 include problem, php 5 include, case php5, php include switch und case, php 5 case, include mit switch, php php5, php 5 switch, php5 <?php, php5 include funktioniert nicht

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum