PHP-Menü

  • #1
N

noah1

Bekanntes Mitglied
Themenersteller
Dabei seit
16.08.2002
Beiträge
1.415
Reaktionspunkte
0
Ort
Hamburg
Hallo, ich stehe gerade vor folgendem Problem:

Ich habe eine Menü das wie folgt aufgebaut ist:

Code:
<?php

$menue = array(
			Home => index.php?go=home,
             ...
             Impressum => index.php?go=impressum
            
            foreach($menue as $eintrag => $datei){

Jetzt soll ja auch der entsprechende Menüpunkt ausgegeben werden, das sieht dann so aus:
Code:
<?php
echo <a href=\$datei\>$eintrag</a>;
?>

Und jetzt kommt mein Problem, ich möchte nämlich daß die aktuell angezeigte Seite zwar auch im Menü weiterhin gezeigt wird aber ohne Link, im Moment sieht das dann so aus:
Code:
<?php

foreach($menue as $eintrag => $datei)
    {
	    if ($datei == basename($_SERVER['HTTP_REFERER'])) 
            {
			echo <a title=''>$eintrag</a>;	
	        }
		else if (substr($datei, 0, 23) == index.php?go=gaestebuch)
            {
			echo <a title='Zur Zeit $count Einträge' href='$datei'>$eintrag</a>;
			}		
		else 
            {
			echo <a href='$datei'>$eintrag</a>;
			}
	}

?>

Vom Prinzip her funktioniert das auch fast - aber halt nur fast.
Wenn ich einen Link im Menü klicke wird die Seite auch aufgerufen, aber im Menü ändert sich nichts.
Wenn ich denselben Link dann nochmal klicke habe ich das was ich will, der Eintrag im Menü erscheint nicht als Link.
Warum also muß ich den Menüeintrag zweimal klicken?
Ich vermute mal daß der HTTP_REFERER zu spät ausgelesen wird, aber wie kann ich es hinbekommen daß er früher ausgelesen wird ?
 
  • #2
Der HTTP_REFFERER ist, von wo Du herkommst, nicht, wo Du bist...

PHP_SELF sollte da helfen, das ist die Datei, wo Du bist.
 
  • #3
Ähm ja,

da die Erklärung von Faroul doch etwas verwirrend war/ist (zumindest für mich, hier mal die Offizielle Erklärung.

'HTTP_REFERER'
Die Adresse der Seite (falls es eine gibt), die den Browser auf die aktuelle Seite verwies. Dieser Header wird vom Browser gesetzt, aber nicht von allen. Einige Browser bieten die Möglichkeit, den HTTP_REFERER zu modifizieren. Kurz, auf diesen Header kann man sich nicht verlassen.

'PHP_SELF'
Der Name des aktuell ausgeführten Skripts, relativ zum Wurzelverzeichnis des Servers. Zum Beispiel gibt $_SERVER['PHP_SELF'] in einem Skript mit der Adresse den Namen /test.php/foo.bar zurück.

Falls PHP auf der Kommandozeile ausgeführt wird, ist diese Variable nicht verfügbar.

Quelle:

Aus oben genannten Gründen bitte immer auf die Verwendung von php_self aufpassen!!! Denn die Adresse die ausgegeben wird ist RELATIV, nicht Absolut. Es soll aber manche Aufgaben geben von absolute Pfadangaben notwendig sind :D ;)
 
  • #4
PHP_SELF hilft/half auch nicht, das hatte ich ursprünglich da stehen und jetzt wollte ich die Funktion ja endlich mal so hinkriegen wie gewollt.
Aber ich hab es jetzt selber hinbekommen:

Code:
<?php
if ($datei == basename($_SERVER['REQUEST_URI'])) 
.....
?>
 
  • #5
Da kommt mir noch eine Idee - mit $_SERVER['HTTP_REFERER']) kann ich ja die Seite auslesen, von der der Besucher auf meine Seite gekommen ist.
Nur leider wird mir nur der Teil hinter dem / angezeigt, nicht wirklich aussagekräftig.
Womit bekomme ich die komplette Adresse ausgelesen, von der der Besucher gekommen ist, bzw. ist das überhaupt möglich?
Reichen würde mir auch schon die Domain.
 
  • #6
$_server['remote_addr']
 
  • #7
Luigi_Tirol schrieb:
$_server['remote_addr']

Damit bekomme ich ja die IP-Adresse, die brauche ich aber, zumindest an dieser Stelle nicht.
Das was ich ermitteln will ist die Web-Adresse von der der User auf meine Domain verlinkt wurde.
 
  • #8
Gesetz dem Fall alle Seiten usw. werden mit dem Parameter go=xxxx aufgerufen, sollte es ziemlich easy sein ;)

Code:
<?php
$menue = array('home' =>->Startseite',
			->gb' =>->Gästebuch', 
			->forum' =>->Forum', 
			->kon' =>->Kontakt', 
			->impr' =>->Impressum');
if(count($menue)) {
 $m =->';
 foreach($menue as $key => $value) {
  if((!$_REQUEST[go] || $_REQUEST[go] == home) && $key == home) {
   $m .=-><p>'.$value.'</p>';
  }
  else {
   $m .= ($key == $_REQUEST[go]) 
     ?-><p>'.$value.'</p>' 
     :-><p><a href=index.php?go='.$key.' title='.$value.'>'.$value.'</a></p>';
  }
 }
}
echo $m;
?>
 
  • #9
Ich glaube da hast Du mich nicht richtig verstanden.
Und zwar geht es mir darum in einer Datenbank zu speichern, von wo die Besucher auf meine Seite verlinkt wurden, einfach nur so interessehalber.
D.h. daß wenn ein Besucher meiner Seite über Google gesucht hat und dann den Link im Ergebnis anklickt soll bei mir gespeichert werden daß er über Google gekommen ist.
Soweit daß ich den hinteren Teil der URL - ab dem->/' gespeichert bekomme bin ich ja schon, aber wie kriege ich die ganze URL ?
 
  • #10
Dann nem doch nen vernünftigen Counter, Angebote gibets da doch wirklich genug ;D

z.B. kann man in 2min. installieren ;)

So ein durcheinander wie du da vorhast, is doch ....... , gelle ;D
 
  • #11
Das ist ja kein Durcheinander, finde ich zumindest.
Einen wie ich meine recht guten Counter habe ich ja.
Und irgendwann ist mir mal der Gedanke gekommen daß ich die Einträge in der DB-Tabelle des Counters auch für eine Statistik ausgeben lassen kann(), und jetzt will ich ihn halt noch um diese eine Funktion erweitern.
Mit dem Aufbau des Menüs hat das ja schon nichts mehr zu tun.
 
Thema:

PHP-Menü

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben