variablen werte mit der URL weitergeben?!

Cynic110

Mitglied
HI, ich habe ein kleines problem! ich habe in der index.php if schleifen gemacht um verschiedene Inhalte mit dem include befehl anzeigen zu lassen, wenn mit der variable "mod" ein bestimmter wert kommt. Das klappte auch mal bei einer früheren Seite von mir, die war aber auf Tripod. Jetzt hab ich meinen eigenen Server mit apache und PHP4**(ka) dort klappt das aber irgendwie nicht. woran könnte das liegen? oder nach welchem eintrag müsste ich suchen wenn ich "phpinfo()" in eine Datei schreib und diese Ausführe? Um mal zu überprüfen ob diese Funktion überhaupt an ist.

Also der Inhalt der Datei "home.php" wird immer angezeigt, klicke ich aber auf den Link "Links" passiert nichts, die seite ladet neu behält aber den Inhalt der Datei "home.php". :-/

hier meine Quellcodes:
index.php:
....
<?
if($mod == "")
{
include ("sites/home.php");
}
if($mod == "links")
{
include ("sites/links.php");
}
?>
.....
und hier noch ein teil der Datei mit der URL die die Var. übergibt -> links.php:
....
<a href="index.php?mod=links">links</a>
....
 
probier es mal so:
PHP:
<?
if($mod == "")
{
include ("sites/home.php");
}
elseif($mod == "links")
{
include ("sites/links.php");
}
else {}
?>
 
ne das funktioniert auch nicht, der zu übertragende wert wird auch garnicht übertragen, so wies aussieht. Ich hab nähmlich jetzt nur mal so zum test "echo $mod;" in index.php eingebaut, und da wird dann auch nach dem Klick auch Links nicht "links" angezeigt, also geh ich mal davon aus das es bei mir, auf dem Linux rechner(server), in der php.ini nicht aktiviert ist. Ich weiß aber nicht welchen eintrag ich dort ändern soll, habs bis jetzt nicht gefunden...
 
Ich tippe darauf, dass bei dir register_globals auf off gesetzt ist.
Probier es mal mit $_GET["mod"] oder $_REQUEST["mod"]
Und wenn du nicht alles im Script umändern willst reicht soetwas wie:
$mod = $_GET["mod"]; oder $mod = $_REQUEST['"mod"];
 
YEAH BIGBIG THANKS! dieses register_globals war wirklich Off, hab eben auf On gestellt und jetz klappt es! :D *freu* hab aber vorher auch noch die $_GET["mod"] und $_REQUEST["mod"] ausprobiert und das klappte auch! Nur mal so noch nebenbei, was genau bewirken diese beiden methoden? suchen sie in der URL nach der variable "mod" und dessen wert? oder suchen sie auf der zuvorbesuchten seite nach einem wert? oder wie ist das

Und nochmal DANKE!
 
Habe ungefähr das gleiche Problem, meine Variablen kommen über die URL nicht an. Auch nicht, wenn ich register_hlobals auf "on" setze. Kann ja eigentlich auch nicht sein oder? GET doch immer, egal ob auf "on" oder "off"....:rolleyes:
 
Also bei mir war es so, das die beiden Funktionen $_GET["variable"] und $_REQUEST["variable"] klappten ohne das ich register_globals auf "on" setzen musste. Wenn du aber ohne diese beiden funktionen auf die variable zugreifen willst. Musst du register_globals auf "on" haben.
Haste denn auch den Link richtig geschrieben? einen rechtschreibfehler bei der variable gemacht?

nochmal ein beispiel:
der Link zu der seite wo die Variable verwendet werden soll:
PHP:
<a href="seite.php?variable=wert">LINK</a>

wenn du jetzt auf den link gehst wird also in die variable "variable" der wert "wert" eingetragen ;). Du musst die variable vorher nicht deklarieren.

auf der seite die die variable braucht:
Hier kannst du entweder, wenn du register_globals auf "on" gesetzt hast. einfach das mal eingeben
PHP:
<? echo $variable ?>

Wenn du register_globals aber nicht auf "on" gesetzt hast, musst du es so machen:
PHP:
<?
$variable2 = $_GET["variable"];
echo $variable2;
?>
hier wird der variable "variable2" der inhalt der variable "variable" aus der URL übergeben. Du kannst dort natürlich auch anstatt "variable2" wieder "variable" nehmen, das ist kein problem, oder du machst es mit $_REQUEST["variable"]. geht genau so^^.
 
Also so langsam aber sicher bekomm ich Kopfschmerzen beim Lesen des Threads ;)

$_GET, $_REQUEST, $_POST, $_SERVER, $_SESSION, $_COOKIE, $_ENV , usw. sind die in PHP 4.2.x eingeführten superglobalen Arrays. Es sind keine Funktionen sondern von PHP global angelegte Arrays in denen sich die Werte von verschiedenen Umgebungsvariablen, also auch GET und POST Variablen finden.

register_globals ist in den meisten Fällen auf off und sollte dies auch bleiben, bzw darauf gesetzt werden, wenn es auf on steht. Das hat Sicherheitstechnische Gründe. Näheres dazu hier.

Des weiteren solle in den Elementklammern dieser Arrays mit Singlequotes, statt mit Doublequotes gearbeitet werden. Also

$_SERVER['QUERY_STRING'] und NICHT $_SERVER["QUERY_STRING"]

Ausserdem halte ich bei einer umfangreichen Fallunterscheidung eine switch-Abfrage evtl. für performanter als ein ellenlanges if elseif Konstrukt.
 
Zuletzt bearbeitet:
Dazu hätt ich noch eine Frage:

@Tim: Du schreibst, dass man mit Singlequotes arbeiten soll - mich würd interessieren, warum!

Bisher arbeitete ich immer mit "normalen" Anführungszeichen (was aber nichts heißen soll, bin kein wahrer Profi bzw. Insider in PHP) - hat das Sicherheitsaspekte, warum man das nicht soll?

Thanks :)
 
Mit Sicherheitsaspekten hat das sicherlich nichts zu tun, aber ... ich finde jetzt grade nicht die Seite wo es festgelegt ist und kann auch sein, dass ich mich täusche, aber ich meine das war so eine Sache ... Naja man machts halt nicht ;)

PS: kann mir mal grade wer auf die Sprünge helfen ? Ich hab nirgends auf die schnelle ein passendes Dokument gefunden, was meinen Standpunkt be- oder wiederlegt.
 
Zurück