Seite 1 von 1

register_globals: var via URL übergeben

Verfasst: 12.03.2004 17:26
von Wuppi
Hi

Es geht um ein Menu welches ich erstellen möchte:
Aufruf index.php?menu=egal ....

gegooglet hab ich schon ... und auch was gefunden:

Code: Alles auswählen

<a href="<?php echo $_SERVER['$PHP_SELF']?Variable=Wert"; ?>">

if ($_GET['Variable'] == Wert) {
echo "Jetzt klappt das";
}
Das hab ich probiert, geht aber nicht:
Parse error: parse error, unexpected '=' in C:\FoxServ\www\menu.htm on line 8
Die sache ist jetzt so:
Ich rufe die index.php auf, hier mach ich ein

Code: Alles auswählen

require("menu.htm");
Vermute das hier das problem ist?! Wie kann ich das umgehen?

Bis denne
Wuppi

Verfasst: 12.03.2004 17:28
von Xmopf
Hi,

Du hast Anführungszeichen vergessen

Code: Alles auswählen

<a href="<?php echo $_SERVER['$PHP_SELF'] ."?Variable=Wert"; ?>"> 

if ($_GET['Variable'] == Wert) { 
echo "Jetzt klappt das"; 
}
Gruß
Xmopf

Verfasst: 12.03.2004 17:39
von Wuppi
Hi


thx für die prompte Antwort ;)

Die Fehlermeldung hab ich weg ... aber der Link klappt nicht.

Ich hab ne If-Abfrage drin ... das erste If ist für das Hauptmenu - der wird in der index.php gesetzt

Danach kommt:

Code: Alles auswählen

 else if ($_GET['menu'] == "testmenu") {
Link landet immer im Hauptmenu ...

Wieder was vergessen? ... das mit register_globals ist ganz neu für mich ;) auf meinem Testsystem ist das on - aufm Produktiv-System nicht ;)

Bis denne
Wuppi

Verfasst: 12.03.2004 17:42
von Dennis63
Haste evtl in Zeile 21 ein ' vergessen? Poste mal nen bisschen mehr bitte als nur diese eine Zeile...

Grüße
Dennis

Verfasst: 12.03.2004 17:48
von Wuppi
Hi

index.php:

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 


if (isset($menu))  { }
  else {
   $menu = menu; // $menu by braucht vorgabewert, sonst error
  }

// Hauptmenu
 if ($menu == "menu") { require("menu/menu.htm"); }
 else if ($_GET['menu'] == "testmenu") { require("menu/testmenu.htm"); } // Zeile 22

// alternativer Ausstieg (bei falschem Menunamen)
 else require("menu.htm");

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
Das ganze soll in nem phpbb2 eingebunden werden (sieht man ja oben/unten an den includes)

menu.htm ... halt

Code: Alles auswählen

<a href="<?php echo $_SERVER['$PHP_SELF'] ."?menu=testmenu"; ?>">

Verfasst: 12.03.2004 17:51
von Xmopf
Hi,

Zeile 16 fehlen wieder Anführungszeichen.

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 


if (isset($menu))  { } 
  else { 
   $menu = "menu"; // $menu by braucht vorgabewert, sonst error 
  } 

// Hauptmenu 
 if ($menu == "menu") { require("menu/menu.htm"); } 
 else if ($_GET['menu'] == "testmenu") { require("menu/testmenu.htm"); } // Zeile 22 

// alternativer Ausstieg (bei falschem Menunamen) 
 else require("menu.htm"); 

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
Außerdem würde ich die Abfrage umstellen:

Code: Alles auswählen

if (!isset($menu))  { 
   $menu = "menu"; // $menu by braucht vorgabewert, sonst error 
} 
Dann brauchst du die leere Anweisung nicht.

Gruß
Xmopf

Verfasst: 12.03.2004 18:04
von Wuppi
Hi

die " " hab ich gesetzt .... dann hab ich mit $_GET["menu"] und $_GET[
menu'] und $_GET[menu] probiert. Will immer noch net ... ich lande immer auf der Hauptseite :(

Meine Vermutung: ich require für das Menu mit den Links eine datei ... zudem ist das ganze im phpbb2 eingebettet - hier verträgt sich wohl was nicht? EDIT: phpbb2 ist unschuldig - hab ich gerade mal rausgenommen - gleiches ergebniss ...

Bis denne
Wuppi

Verfasst: 12.03.2004 18:24
von Xmopf
Probier es mal bitte so:

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 


if (!isset($_GET['menu']))  { 
     // Hauptmenu
     require("menu/menu.htm");
} 
 else if ($_GET['menu'] == "testmenu")  { 
     require("menu/testmenu.htm"); 
}
else  {
     // alternativer Ausstieg (bei falschem Menunamen) 
     require("menu.htm"); 
}

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>

Verfasst: 12.03.2004 18:29
von Wuppi
Hi

habs gerade hinbekommen ... ich bin deiner empfehlung gefolgt und hab das isset entfernt => am ende kommt ja noch nen else wo das menu eh aufgerufen wird. Jetzt klappt es;)

$menu wurde gefüllt durch "menu" und $menu war auch die erste if-Abfrage die dann natürlich erfolgreich war ...

Thx für die hilfe ;)

Wuppi

Verfasst: 12.03.2004 21:33
von Pyramide
Alternativ gibts auch [php:switch]:

Code: Alles auswählen

switch($_GET['foo']) {
    case 'hallo': include('foo.php'); break;
    case 'irgendwas': include('lalala.php'); break;
    default: include('standard.php'); break;
}