SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.09.2007, 12:52:06
-=Sirius=- -=Sirius=- ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 68
-=Sirius=- eine Nachricht über ICQ schicken
Navigation mit PHP

Hi,
mein erster Post in diesem Forum... und mit Sicherheit nicht der letzte ;)


Ich hab jetzt mit Hilfe des Buches PHP5/MySQL5 von Matthias Kannengieser eine Navigation hinbekommen.
Hier mal der Code in der ID Navi:
Code:
	<div id="navi">
		<?php
			$kategorien = array(
			'Startseite' => 'index.php',
			'Bewerbung' => 'index.php?s=bewerbung',
			
			'Impressum' => 'index.php?s=impressum'
			);
			
			$bewerbung = array(
			'Lebenslauf' => 'index.php?s=lebenslauf',
			'Zeugnis' => 'index.php?s=zeugnis',
			'Urkunden' => 'index.php?s=urkunden',
			'Praktikas' => 'index.php?s=praktika'
			);
			
			
			foreach ($kategorien as $key => $wert) {
				echo "<a href='$wert'>$key</a><br>";
			
			  if(isset($_GET['s']))
			  {
			
				if (($key == "Bewerbung") && ($_GET['s'] == "bewerbung")){
					foreach ( $bewerbung as $key => $wert ) {
							echo "<ul><a href='$wert'>$key</a></ul>";
						  }
					}
			  }
			}
		?>
	</div>
Hier mal der Code im ID Content:
Code:
	<div id="content">
		<?php
		     if(isset($_GET['s']) && file_exists('./'.$_GET['s'].'.php'))
                     {
                      include('./'.$_GET['s'].'.php');
                     }
    
                     else
                     {
                      include('./home.php');
                     }
          ?>
	</div>
Jetzt hab ich ein paar Fragen dazu:

1. Wie und was muss ich ändern oder hinzufügen damit in der Navi, wenn ich auf eine Kategorie klicke (z.b. Bewerbung) und dann auf eine Unterkategorie das dann die Kategorie trotzdem offen bleibt.
Bis jetzt hat sie sich immer geschlossen.

2. Wie kann ich die Unterkategorien weiter links stehen lassen ?
Im Moment sind die nämlich bei manchen Seiten zuweit rechts ^^

3. Ich hab jetzt schon von einigen gehört, das das includen durch ?s= "unsicher" sein soll.
Wie kann ich des also machen das oben in der adressleiste diese Variante steht
domain.de/bilder/galerie1
ohne das in den ganzen Dokumenten die Div's definiert werden müssen ?



Ich hoffe ihr könnt mir helfen und lest das hier immernoch, nicht das ihr abgeschreckt wurdet von meinem langen Text ^^

Danke

mfg
Sirius
__________________
cu Sirius


Meine Projekte:
Maafischer-Viereth.de und noch einige in Bearbeitung :)
Mit Zitat antworten
  #2  
Alt 04.09.2007, 14:00:23
-=Sirius=- -=Sirius=- ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 68
-=Sirius=- eine Nachricht über ICQ schicken
AW: Navigation mit PHP

weiß den keiner was dazu ?
das hier ist doch ein großes Forum mit vielen "könnern" ^^
__________________
cu Sirius


Meine Projekte:
Maafischer-Viereth.de und noch einige in Bearbeitung :)
Mit Zitat antworten
  #3  
Alt 06.09.2007, 13:29:44
FabianWesner FabianWesner ist offline
Junior Member
 
Registriert seit: May 2007
Beiträge: 170
AW: Navigation mit PHP

Hallo,

1. Du könntest eine zweite Variable anlegen mit der du durch die Unternavigation gehst. Du musst dann nur noch die zweite foreach-Schleife anpassen.
PHP-Code:
index.php?s=Bewerbung&sub=Lebenslauf 
2. Bei der Unternavigation erzeugt Du sowas hier (vereinfacht):
HTML-Code:
<ul>Lebenslauf</ul>
<ul>Zeugnis</ul>
<ul>Urkunden</ul>
Das ist nicht korrekt. Schau am besten nochmal nach wie man eine Liste darstellt.

3. Ein include('./'.$_GET['s'].'.php'); ist wirklich sehr unsicher, da JEDER die Variable in der URL einfach ändern kann und so beliebige Dateien auslesen und damit auch PHP-Code ausführen kann. Da musst du mindestens noch eine Whiteliste mit zulässigen Werten für $_GET['s'] anlegen und abfragen.
__________________
Fabian Wesner - Freelancer: Webentwicklung und Programmierung
Mit Zitat antworten
  #4  
Alt 06.09.2007, 23:47:52
Eskayp Eskayp ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 18
AW: Navigation mit PHP

Hiho,

zu 1.

Im Prinzip hast Du zwar eine variable Lösung programmiert, diese durch den Sonderfall des Untermenüs aber doch wieder starr und unflexibel gestaltet. In diesem Fall hätte man sich das Prinzip der Arrays letztendlich doch wieder sparen können.

Um Dein ursprüngliches Konzept, das Menü aus einem Array zu erzeugen, beizubehalten, dürfte es nur ein Array geben das alle Menüpunkte umfasst.

Z.B. so:
PHP-Code:
<?php
  $menu 
= array(
    
'eins' => array('title' => 'Eins''parent' => ''),
    
'zwei' => array('title' => 'Zwei''parent' => ''),
      
'aaa' => array('title' => 'AAA''parent' => 'zwei'),
      
'bbb' => array('title' => 'BBB''parent' => 'zwei'),
    
'drei' => array('title' => 'Drei''parent' => '')
  );
?>
Wie Du siehst, wird das Untermenü über das Feld 'parent' zugeteilt.


Mit diesem Prinzip schlägst Du zwei Fliegen mit einer Klappe. Zum einen kann man aus diesem Array das komplette Menü erzeugen, zum anderen kannst Du Dich leicht aus Deinem Problem zu Frage 3 retten (dazu später).

Das Hauptmenü ist schnell erzeugt. Du musst nur das Array der Reihe nach durchgehen und alle die Elemente ausgeben, deren parent = '' ist.

PHP-Code:
<ul><?php
  
foreach ($menu as $id => $item) {
    if (
$item['parent'] == '') {
      echo 
'<li><a href="index.php?s='.$id.'">'.htmlentities($item['title']).'</a></li>';
    }
  }
?></ul>
Jetzt muss noch das Untermenü eingebaut werden. Dazu bestimmst Du erst, ob Dein Untermenü denn einen Parent (also ein Elternelement) hat. Wenn ja, wird einfach bei diesem Elternelement das Untermenü ausgegeben. Wir hätten also zwei foreach-Schleifen in einander verschachtelt, und beide würden das $menu-Array durchlaufen. Das geht nicht, also erzeugen wir das Untermenü einfach vorher:

PHP-Code:
<?php
  
// erstmal dieses s belegen
  
if (isset($_GET['s']))
    
$s $_GET['s'];
  else
    
$s 'eins';

  
// Dann das Elternelement für das Untermenü bestimmen
  // Es gibt dafür zwei Fälle: Entweder ein Unterelement wurde angeklickt, oder
  // das Hauptelement selbst. Wenn das Menüelement also kein Parent hat,
  // probieren wir einfach mal das Hauptmenüelement. Und wenn das kein
  // Untermenü hat, dann hat's eben keins :)
  
$parent $menu[$s]['parent'];
  if (
$parent == ''$parent $s;

  
// So, jetzt wird das Untermenü erzeugt (wenn es denn eins gibt)
  
$submenu '';
  foreach (
$menu as $id => $item) {
    if (
$item['parent'] == $parent) {
      
$submenu .= '<li><a href="index.php?s='.$id.'">'.htmlentities($item['title']).'</a></li>';
    }
  }
  if (
$submenu != ''$submenu '<ul>'.$submenu.'</ul>';

  
// So, jetzt einfach nur in das Hauptmenü (siehe oben) einbauen...
  
echo '<ul>';
  foreach (
$menu as $id => $item) {
    if (
$item['parent'] == '') {
      echo 
'<li><a href="index.php?s='.$id.'">'.htmlentities($item['title']).'</a>';
      if (
$id == $parent) {
        echo 
$submenu;
      }
      echo 
'</li>';
    }
  }
  echo 
'</ul>';
?>
Naja, habe es einfach nur runtergetippt, also müsstest Du mal testen. Aber so ähnlich sollte es laufen...

Diese Routine gibt jetzt leider noch keine Untermenüs zu Untermenüs her. Das zu erweitern habe ich Dir überlassen :)

2. Zu Deinem Problem mit der Position der Untermenüs hat ja Fabian schon etwas geschrieben. Ansonsten ist das wohl eher ein CSS-Problem, und kein PHP-Problem.

3. Wie Du schon richtig erkannt hast, ist der Aufruf einer über $_GET erhaltenten Variable in einem include nicht sehr schön bzw. bedeutet sogar eine Sicherheitslücke. Davor kannst Du Dich aber ganz einfach schützen, indem Du die Variable auf Gültigkeit prüfst. Wenn diese keinen von Dir definierten Wert enthält, dann setzt Du sie neu.

Diese Werte hast Du im Prinzip schon definiert. Und zwar in Deinem Array $menu. Die Schlüssel (Keys) des Arrays sind alle erlaubten Werte für $s.

Diese Schlüssel erhälst Du mit dem Befehl array_keys und ob $s enthalten ist kann man mit in_array prüfen.

PHP-Code:
<?php
  
if (isset($_GET['s'])) {
    
$s $_GET['s'];
    
// Wenn Wert s nicht in den Schlüsseln des Menüs vorkommt, wird s = "eins" gesetzt.
    
if (!in_array($sarray_keys($menu))) $s 'eins';
  }
  else
    
$s 'eins';
?>
Dieser Block ersetzt den ersten Block im Script oben drüber.



So, und jetzt viel Spaß beim Umsetzen :)

Grüße
Kai

Geändert von Eskayp (06.09.2007 um 23:48:34 Uhr)
Mit Zitat antworten
  #5  
Alt 07.09.2007, 01:34:21
-=Sirius=- -=Sirius=- ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 68
-=Sirius=- eine Nachricht über ICQ schicken
AW: Navigation mit PHP

Danke Eskayp,

klappt 1a ;)

Vielen Dank.
Nur mit dem CSS komm ich nicht wirklich weiter. :(
<li> lässt sich nicht formatieren. das <ul> geht ...

vllt. wisst ihr da noch was ?
Code:
.menuliste {
	display: inline;
	list-style-type: none;
	text-indent: 5px;
}

.untermenuliste {
	list-style-type: none;
}
.menuliste sind die Oberpunkte - also <ul>
und
.untermenuliste sind die Unterpunkte -a also <il>
__________________
cu Sirius


Meine Projekte:
Maafischer-Viereth.de und noch einige in Bearbeitung :)
Mit Zitat antworten
  #6  
Alt 07.09.2007, 09:25:50
Eskayp Eskayp ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 18
AW: Navigation mit PHP

Naja, dafür ist das das falsche Forum hier.

Ich verweise mal auf die Listenformatierung bei SelfHTML und natürlich allgemein auf die Möglichkeiten von CSS.

Für ein paar Anstöße ist vielleicht www.css-menü.de ganz hilfreich. Übrigens auch eine interessante Alternative für Hover-Effekte ist dieses CSS-Menü, das nur ein Bild für beide Zustände (MouseOut und MouseOver) verwendet.

Ansonsten müsste man schon ganz genau wissen, wo das Problem liegt und wie es bei Dir aussehen soll, um weiter zu helfen.

Grüße
Kai
Mit Zitat antworten
  #7  
Alt 08.09.2007, 00:30:10
-=Sirius=- -=Sirius=- ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 68
-=Sirius=- eine Nachricht über ICQ schicken
AW: Navigation mit PHP

Danke ;)

Werde auf den Seiten mal schauen.
Aber das Design ist eh noch nicht ganz fertig,
werde wenn ich mit dem php teil endlich mal fertig bin danach schauen ^^

übrigens ist schon wieder ein neuer thread in diesem Board von mir veröffentlicht worden :P
bin halt noch ein nicht soguter Anfänger :(

mfg
Sirius
__________________
cu Sirius


Meine Projekte:
Maafischer-Viereth.de und noch einige in Bearbeitung :)
Mit Zitat antworten
  #8  
Alt 15.12.2007, 02:55:08
Tumasch Tumasch ist offline
Junior Member
 
Registriert seit: Dec 2007
Beiträge: 151
AW: Navigation mit PHP

Zitat:
Zitat von -=Sirius=- Beitrag anzeigen
Danke ;)
bin halt noch ein nicht soguter Anfänger :(
Nun ja, das haben Anfänger nun mal so an sich ;)

Ändert sich aber schnell ...
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Allgemeine Frage zu Versionen php 4 und 5 hermes PHP Grundlagen 7 19.08.2005 19:16:41
Fehlermeldung in PHP SilverDragon77 PHP Grundlagen 6 27.05.2005 16:11:25
Wie man durch PHP von der Schule fliegen kann?! Jacki Off Topic Area 2 06.08.2004 13:20:39
PHP Navigation/ Menü LouCypher PHP Grundlagen 1 04.05.2003 12:51:30
Einführung in PHP und Datenbanken Lómion PHP für Fortgeschrittene und Experten 7 07.02.2002 14:47:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:46:40 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.


© 2001-2023 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt