if-Bedingungen funktionieren mit XAMPP nicht mehr!??

Alles, was PHP betrifft, kann hier besprochen werden.

if-Bedingungen funktionieren mit XAMPP nicht mehr!??

Postby bleunam » 04. September 2006 13:34

Hallo an die Experten,

ich hätte da mal ein kleines aber feines Problem für euch. Meine Ansprüche an PHP sind aktuell noch nicht sehr groß, denn im Moment möchte einfach nur eine kleine if / else Bedingung schreiben, um den Inhalt meines kleines Projektes lediglich in EINER Datei unterbringen zu können.

Schon für ein paar andere Seiten haben ich daher folgendes "Script" verwendet:

Code: Select all
html-Code.....dann mittendrin:

<?php

if ($seite == '1')
{
?>

weiterer html-Code....

<?php
}

elseif ($seite == '2')
{
?>

wieder html-Code....

<?php
}
?>

restlicher html-Code....


Das hat bisher auch immer funktioniert, wenn ich die verschiedenen "Seiten" z.B. über index.php?seite=1 aufgerufen habe.
Seit ich mir jetzt XAMPP installiert habe, scheint das aber alles nicht mehr zu gehen. Ich bekomme einfach nicht das angezeigt, was angezeigt werden sollte. Es tut sich einfach nichts.
Dachte erst ich hätte bei diesem bisschen Code auch noch Fehler gemacht, aber alte "Scripte" mit solchen if-Bedingungen funktionieren plötzlich auch nicht mehr!?
Habs dann mal auf nen Webserver hochgeladen, weil ich dachte es liegt vllt. an XAMPP....aber da passierte genauso wenig. Keine Fehlermeldung....nichts. Auf diesem Webserver läuft übrigens PHP 4.4.2 falls das von Bedeutung ist.
Also hab ichs wiederum auf einen anderen Webserver hochgeladen mit PHP 5.1.5 ... und siehe da: dort funktioniert es.
Meine XAMPP Version beinhaltet PHP 5.1.4.

Daher nun die Frage: Was läuft da falsch???

Danke schonmal für eure Antworten!

Gruß
BLeuNaM
bleunam
 
Posts: 3
Joined: 04. September 2006 13:03

Postby Wiedmann » 04. September 2006 13:38

Du überprüfst hier den Wert den eine Variable hat. Ich sehe aber nirgends, dass dieser Variablen überhaupt ein Wert zugewiesen wird?

--> Ein Vergleich mit einer undefinierten Variablen wird immer schief gehen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby bleunam » 04. September 2006 14:00

Aber ich rufe doch die Variable in dem Link zur "Seite" auf, wenn ich im Browser angebe: http://www.meineseite.de/index.php?seite=1

Das hat ja wie gesagt bisher auch immer funktioniert!
bleunam
 
Posts: 3
Joined: 04. September 2006 13:03

Postby Wiedmann » 04. September 2006 14:17

Aber ich rufe doch die Variable in dem Link zur "Seite" auf, wenn ich im Browser angebe: http://www.meineseite.de/index.php?seite=1

Jein.
Mit so einem Link erhälst du im $_GET-Array einen Schlüssel mit dem Namen 'seite' der den Wert '1' enthält.

Deine Überprüfungen müssten also z.B. so aussehen:
Code: Select all
if ($_GET['seite'] == '1') { ... }
if ($_GET['seite'] == '2') { ... }
...


Alternativ könntest du auch deine Vergleiche lassen und musst halt der dort benutzen Variablen am Anfang des Scriptes diesen Wert zuweisen:

Code: Select all
<?php
$seite = $_GET['seite'];
if ($seite == '1') { ... }
if ($seite == '2') { ... }
...


Strenggenommen musst dir jetzt nur noch was überlegen, falls dieses Script ohne "?seite=foo" im Link aufgerufen wird. Weil dann ja schon $_GET['seite'] nicht definiert ist. (PHP konvertiert dir diesen Fall aber zu "$_GET['seite'] == null". Wäre aber nomal eine Notice).

BTW:
Jein deshalb, weil es Server geben mag wo auch dein Konstrukt tut. Aber so wie hier steht`s im Manual und tut immer.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby bleunam » 04. September 2006 14:40

Ja super! So klappt's tatsächlich! DANKE!

Wobei ich mich echt frage, warum es bisher IMMER auf diese andere Weise geklappt hat!? Gibt es zufällig einen Hinweis, an dem man über "phpinfo();" sehen kann, dass der Server diese Sache "lockerer" interpretiert?
bleunam
 
Posts: 3
Joined: 04. September 2006 13:03

Postby Wiedmann » 04. September 2006 15:28

warum es bisher IMMER auf diese andere Weise geklappt hat!?

Du meinst zufällig bei dir immer... Normal sollte das schon seit 6-7 Jahren nicht mehr so gehen (ist aber noch nicht bei jedem Provider angekommen).

Gibt es zufällig einen Hinweis, an dem man über "phpinfo();" sehen kann, dass der Server diese Sache "lockerer" interpretiert?

Gibt es. Näheres weiss das PHP-Manual zu diesem Thema (externe Variablen).

Aber eigentlich ist es wie gesagt egal: Macht man es richtig, ist es egal wie der Server eingestellt ist.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Kenshin » 04. September 2006 21:12

bleunam wrote:Ja super! So klappt's tatsächlich! DANKE!

Wobei ich mich echt frage, warum es bisher IMMER auf diese andere Weise geklappt hat!? Gibt es zufällig einen Hinweis, an dem man über "phpinfo();" sehen kann, dass der Server diese Sache "lockerer" interpretiert?


Schau mal in der php.ini nach der Einstellung register_globals. Die dabeistehende Erklaerung sollte dir eigentlich weiterhelfen koennen. Stell den Wert auf On und deine alten Bezeichner funktionieren wieder. Ist aber nicht unbedingt empfehlenswert, da Off eigentlich der Standart ist und deine Seiten auf anderen Servern dann nicht funktionieren wuerden...
User avatar
Kenshin
 
Posts: 23
Joined: 30. August 2006 10:55
Location: Munich (Germany)

Postby KingCrunch » 04. September 2006 22:15

Stell den Wert auf On und deine alten Bezeichner funktionieren wieder. Ist aber nicht unbedingt empfehlenswert, da Off eigentlich der Standart ist[...]
Es ist sogar grundsätzlich eher abzulehnen die Option ausser zu Testzwecken zu aktivieren ;) Die Sicherheitsrisiken, die dadurch entstehen sind gerne mal unüberschaubar. Jemand schickte mir erst letztens URLs zu 3 websites, bei denen man wunderbar per GET in der Datenbank rumfuschen konnte ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25


Return to PHP

Who is online

Users browsing this forum: No registered users and 27 guests