Probleme mit $_SERVER["REQUEST_URI"]
Tolwyn
- php
Hallo,
ich habe ein kleines Problem hier:
meine Webseite hat folgende Struktur
/
index.php
seite1.php
seite2.php
seite3.php
...
momentan ist sie so programmiert, dass ein zus. Submenü auf jeder Seite, außer index.php angezeigt wird. Irgendwie kann ich die Funktion nicht mit mehreren Variablen füttern, da "OR" Boolean als false gewertet wird und das menü sogar auf der Indexseite angezeigt. Ich möchte aber mehrere Seiten definieren, auf denen das Menü nicht angezeigt wird. Da ich mich mit PHP kaum auskenne würde ich mich über jede Hilfestellung freuen.
Gruß
Tolwyn
<!-- start left -->
<td width="315" valign="top" height="300">
<? if ($_SERVER["REQUEST_URI"] != '/') { ?>
<div class="submenu">
<div style="background: url(images/corn_rb.gif) no-repeat right bottom; padding:0px 30px 30px 0px;">
<h3 class="white">???????<</h3>
<a href="about01.php">???????<</a>
<a href="about02.php">???????<</a>
<a href="about03.php">???????<</a>
<a href="about04.php">???????<</a>
<a href="about05.php">???????<</a>
<a href="about06.php">???????<</a>
<a href="about07.php">???????<</a>
<a href="about08.php">???????<</a>
<a href="about09.php">???????<</a>
<a href="about10.php">???????</a>
</div>
</div>
<div><img src="images/form_shad.jpg" width="315" height="53" alt="" border="0"></div>
<? } ?>
<div style="background:url(images/form_bg1.jpg) no-repeat;">
Hellihello Tolwyn,
lass dir doch erstmal serverrequesturi ausgeben...;
Gruß,
frankx
Hellihello Tolwyn,
lass dir doch erstmal serverrequesturi ausgeben...;
Gruß,
frankx
hallo,
das Problem ist, dass es sich um ein Template für das CMS von Bitrix handelt. Ich habs bereits mit ODER versucht, dabei wird das Menp auf jeder Seite angezeigt.
Hellihello Tolwyn,
das Problem ist, dass es sich um ein Template für das CMS von Bitrix handelt. Ich habs bereits mit ODER versucht, dabei wird das Menp auf jeder Seite angezeigt.
Deshalb dachte ich, es wäre vielleicht schlau, erstmal anzuschauen, was du da mit oder vergleichtst.
Dank und Gruß,
frankx
Hellihello Tolwyn,
das Problem ist, dass es sich um ein Template für das CMS von Bitrix handelt. Ich habs bereits mit ODER versucht, dabei wird das Menp auf jeder Seite angezeigt.
Deshalb dachte ich, es wäre vielleicht schlau, erstmal anzuschauen, was du da mit oder vergleichtst.
Dank und Gruß,
frankx
Nun, ich habs einfach mit oder verknüpft
also (wenn ich mich jetzt nicht vertippt habe)
(($_SERVER["REQUEST_URI"] !='/') OR ($_SERVER["REQUEST_URI"] !='about.php'))
Hellihello Tolwyn,
(($_SERVER["REQUEST_URI"] !='/') OR ($_SERVER["REQUEST_URI"] !='about.php'))
fehlt da vor dem about.php ein Slash. Warum baust Du nicht davor mal ein var_dump($_SERVER["REQUEST_URI"]); ein, damit du sicher weißt, was dadrinne steckt?
Dank und Gruß,
frankx
Hellihello Tolwyn,
(($_SERVER["REQUEST_URI"] !='/') OR ($_SERVER["REQUEST_URI"] !='about.php'))
fehlt da vor dem about.php ein Slash. Warum baust Du nicht davor mal ein var_dump($_SERVER["REQUEST_URI"]); ein, damit du sicher weißt, was dadrinne steckt?
Dank und Gruß,
frankx
hmm... weil ich relativ wenig Ahnung von php habe? :)
wie gesagt, wenn man Request_Uri so modifiziert:
<td width="315" valign="top" height="300">
<? if (($_SERVER["REQUEST_URI"] != '/') || ($_SERVER["REQUEST_URI"] != '/about.php')){ ?>
<div class="submenu">
dann wird alles als true gewertet und das Menü wird überall angezeigt.
Hellihello
hmm... weil ich relativ wenig Ahnung von php habe? :)
???
<td width="315" valign="top" height="300">
var_dump($_SERVER["REQUEST_URI"]);
Gruß,
frankx
Hellihello
<? if (($_SERVER["REQUEST_URI"] != '/') && ($_SERVER["REQUEST_URI"] != '/about.php')){ ?>
<div class="submenu">
statt || && , denn es ist doch eine und-verknüpfung. dass die uri entweder nicht "/" oder nicht "/about.php" ist, dürfte immer wahr sein.
Gruß,
frankx
Hellihello
<? if (($_SERVER["REQUEST_URI"] != '/') && ($_SERVER["REQUEST_URI"] != '/about.php')){ ?>
<div class="submenu">
>
> statt || && , denn es ist doch eine und-verknüpfung. dass die uri entweder nicht "/" oder nicht "/about.php" ist, dürfte immer wahr sein.
>
> Gruß,
>
> frankx
Danke dir! Das wars tatsächlich. Ich habe diese Version auch ausprobiert, aber dabei, wie du vorher schon richtig angemerkt hast, vergessen den Slash einzubauen (also != 'about.php' statt != '/about.php').
Jetzt funktioniert alles!
Danke dir! Das wars tatsächlich. Ich habe diese Version auch ausprobiert, aber dabei, wie du vorher schon richtig angemerkt hast, vergessen den Slash einzubauen (also != 'about.php' statt != '/about.php').
Jetzt funktioniert alles!
noch eine kleine Frage: was ist aber, wenn die URL so aussieht:
about.php?ID=9841 ?
Das es sich um eine Unterseite handelt wäre es mühsam alle 20 Links einzubauen. Ginge es nicht etwas einfacher?
Hellihello
Danke dir! Das wars tatsächlich. Ich habe diese Version auch ausprobiert, aber dabei, wie du vorher schon richtig angemerkt hast, vergessen den Slash einzubauen (also != 'about.php' statt != '/about.php').
Jetzt funktioniert alles!
noch eine kleine Frage: was ist aber, wenn die URL so aussieht:
about.php?ID=9841 ?
Mit strpos abfragen, ob "about.php" da drin steckt, das gibt eine boolsches "false", wenn der string nicht da drinne steckt. Das Ergebnis dann statt dem Vergleich im Zweiten Teil der logischen Verknüpfung einbauen.
Gruß,
frankx
Mit strpos abfragen, ob "about.php" da drin steckt, das gibt eine boolsches "false", wenn der string nicht da drinne steckt. Das Ergebnis dann statt dem Vergleich im Zweiten Teil der logischen Verknüpfung einbauen.
in etwa so?
<? if (($_SERVER["REQUEST_URI"] != '/') && strpos(($_SERVER["REQUEST_URI"] != '/about.php'))){ ?>
<div class="submenu">
Hellihello
Mit strpos abfragen, ob "about.php" da drin steckt, das gibt eine boolsches "false", wenn der string nicht da drinne steckt. Das Ergebnis dann statt dem Vergleich im Zweiten Teil der logischen Verknüpfung einbauen.
in etwa so?
<? if (($_SERVER["REQUEST_URI"] != '/') && strpos(($_SERVER["REQUEST_URI"] != '/about.php'))){ ?>
<div class="submenu">
$mystring = $_SERVER["REQUEST_URI"];
$findme = 'about.php';
$about = strpos($mystring, $findme); // false, wenn nicht vorhanden
<? if (($_SERVER["REQUEST_URI"] != '/') && $about===false))){ ?>
<div class="submenu">
ungetestet, das prinzip sollte aber stimmen,
Gruß,
frankx
Hellihello
Danke dir! Das wars tatsächlich. Ich habe diese Version auch ausprobiert, aber dabei, wie du vorher schon richtig angemerkt hast, vergessen den Slash einzubauen (also != 'about.php' statt != '/about.php').
Jetzt funktioniert alles!
noch eine kleine Frage: was ist aber, wenn die URL so aussieht:
about.php?ID=9841 ?
Mit strpos abfragen, ob "about.php" da drin steckt, das gibt eine boolsches "false", wenn der string nicht da drinne steckt. Das Ergebnis dann statt dem Vergleich im Zweiten Teil der logischen Verknüpfung einbauen.
Gruß,
frankx
hi,
Irgendwie kann ich die Funktion nicht mit mehreren Variablen füttern, da "OR" Boolean als false gewertet wird und das menü sogar auf der Indexseite angezeigt.
Wenn du eine Variable mit mehreren Werten vergleichen willst, dann kannst du diese Bedingungen natürlich mit Oder verknüpfen.
if($var == "wert1" || $var == "wert2" || ...)
Ich möchte aber mehrere Seiten definieren, auf denen das Menü nicht angezeigt wird.
Lege die Vergleichswerte in einem Array ab, und nutze in_array().
gruß,
wahsaga