Tolwyn: Probleme mit $_SERVER["REQUEST_URI"]

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;">

  1. Hellihello Tolwyn,

    lass dir doch erstmal serverrequesturi ausgeben...;

    Gruß,

    frankx

    1. 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.

      1. 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

        1. 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'))

          1. 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

            1. 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.

              1. Hellihello

                hmm... weil ich relativ wenig Ahnung von php habe? :)

                ???
                <td width="315" valign="top" height="300">
                var_dump($_SERVER["REQUEST_URI"]);

                Gruß,

                frankx

              2. 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

                1. 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!
                  
                  1. 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?

                    1. 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

                      1. 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">

                        1. 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

                    2. 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

  2. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }