WinFuture-Forum.de: Php - Muß Ich Jedem Link Eine Eigene Id Geben? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php - Muß Ich Jedem Link Eine Eigene Id Geben?


#1 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

  geschrieben 13. September 2006 - 10:07

Hi,
ich habe eine einfache PHP-Seite gemacht. Das meiste ist HTML, nur einige Dinge werden mit include eingefügt. Außerdem sind die Links alle in PHP. Dazu habe ich noch 2 Div-Container, einer beinhaltet die Menüleiste und der andere den content (wird durch die Links unten gefüllt).

Nun muß ich ja in meiner index.php für jeden Link eine eigene ID vergeben:
 <?php
    switch($_GET['id'])
{
   case 1: include("010_home.php"); break;
   case 2: include("020_hauskonzepte.php"); break;
   case 3: include("030_haeuserauswahl.php"); break;
   case 4: include("040_aktuelle_objekte.php"); break;
   case 5: include("050_anbauvarianten.php"); break;
   case 6: include("060_ausstattung.php"); break;
   case 7: include("070_pluspunkte.php"); break;
   case 8: include("080_galerie.php"); break;
   case 9: include("090_wichtiges.php"); break;
   case 10: include("100_kontakt.php"); break;

   case 21: include("021_0_family_haeuser.php"); break;   
   case 22: include("022_0_classic_haeuser.php"); break;  
   case 23: include("023_0_doppelhaus.php"); break;  
   case 211: include("021_1_0_family_haus_101.php"); break;
   case 2111: include("021_1_1_family_haus_101_dg.php"); break;
   case 2112: include("021_1_2_family_haus_101_eg.php"); break;
   case 2113: include("021_1_3_family_haus_101_kg.php"); break;
   case 212: include("021_2_0_family_haus_123.php"); break;
   case 2121: include("021_2_1_family_haus_123_dg.php"); break;
   case 2122: include("021_2_2_family_haus_123_eg.php"); break;
   case 2123: include("021_2_3_family_haus_123_kg.php"); break;   
   case 213: include("021_3_0_family_haus_136.php"); break;
   case 2131: include("021_3_1_family_haus_136_dg.php"); break;
   case 2132: include("021_3_2_family_haus_136_eg.php"); break;
   case 2133: include("021_3_3_family_haus_136_kg.php"); break;   
   case 221: include("022_1_0_classic_haus_149.php"); break;   
   case 222: include("022_2_0_classic_haus_162.php"); break;
   case 223: include("022_3_0_classic_haus_164.php"); break;   
   case 231: include("023_1_0_doppelhaus_115.php"); break;
...
   default: include("010_home.php");
}
  ?>



Das finde ich sehr unübersichtlich, da ich mittlerweile schon ca. 80 solcher Links habe und es noch mehr werden. Wie kann man das anders machen?

Dieser Beitrag wurde von Bib bearbeitet: 13. September 2006 - 10:10

0

Anzeige



#2 Mitglied ist offline   NightTiger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 701
  • Beigetreten: 19. März 06
  • Reputation: 0
  • Wohnort:Bern
  • Interessen:Webdesign -&gt; (X)HTML, CSS, ein bisschen PHP und ein bisschen JavaScript ;))

geschrieben 13. September 2006 - 10:18

Theoretisch könntest du diese "Linkliste" auch einfach per include includen und dann haste das in einer seperaten Datei, was dann aber auch nicht viel übersichtlicher ist.. Ich kenne keine Methode, mit der man eine switch verkleinern kann... :ph34r:
0

#3 Mitglied ist offline   Eardy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 90
  • Beigetreten: 04. September 06
  • Reputation: 0
  • Wohnort:Linz/Rhein (Deutschland)

geschrieben 13. September 2006 - 10:19

ich würde das so machen, das so machen, als id den dateinamen nehmen wie z.b home oder hauskonzepte und die dann in einer variablen speichern und dann einfach aufrufen in dem du dann einfach sagst include(id.".php").


das erspart dir jede menge arbeit, da du dann vieleicht nur ein oder 2 if abfragen brauchst.

wenn du noch fragen hast kannst du dich gerne auch ber pm oder mail bei mir melden.

mfg

Eardy
0

#4 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 13. September 2006 - 10:43

Also in etwa so?

<a href="index.php?id=hauskonzepte.php">Hauskonzepte</a>


<?php
switch($_GET['id'])
{
case home.php: include("home.php"); break;
case hauskonzepte.php: include("hauskonzepte.php"); break;
case haeuserauswahl.php: include("haeuserauswahl.php"); break;
case aktuelle_objekte.php: include("aktuelle_objekte.php"); break;
case anbauvarianten.php: include("anbauvarianten.php"); break;

0

#5 Mitglied ist offline   Eardy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 90
  • Beigetreten: 04. September 06
  • Reputation: 0
  • Wohnort:Linz/Rhein (Deutschland)

geschrieben 13. September 2006 - 11:11

nein, das is immernoch viel zu statisch udn zu viel schreiberrei.
<a href="index.php?id=hauskonzepte">Hauskonzepte</a>


<?php
  $id = $_GET['id'];
  include(id.".php");
?>


das war es eigentlich schon
du kannst natürlich noch ein paar abfragen zur sicherheit einbeuen, z.b.

<?php
  $id = $_GET['id'];
  if(isset(id))  //Überprüft ob eine ID übergeben wurde oder vorhanden ist
  {  
	include(id.".php"); // includet die Datei
  }
  else // wenn keine ID übergeben wurde wird home aufgerufen
  {
	include("home.php");
  }
?>


aber was die sicherheitsafragen betrifft musst du selber schon wissen was du brauchst


aber das was ich geschrieben habe müsste so schon laufffähig sein.

mfg

Eardy
0

#6 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 13. September 2006 - 11:31

Hm, wenn ich jedem Link eine id zuweise, dann kann doch da gar kein Fehler auftauchen?

Oder meinst du, wenn ich mich z.B. im Quelltext beim Linkname verschrieben hätte?


Oder wäre das eher für den Fall, daß jemand Fremdes in der Adresszeile des Browsers einfach eine willkürliche ID eingibt?

Dieser Beitrag wurde von Bib bearbeitet: 13. September 2006 - 11:33

0

#7 Mitglied ist offline   asko 

  • Gruppe: aktive Mitglieder
  • Beiträge: 144
  • Beigetreten: 17. November 02
  • Reputation: 0

geschrieben 13. September 2006 - 11:31

@ Eardy
Will Dir nicht zu nahe treten aber dein Code ist totaler Bullshit, weil es ein EXTREM gigantisches Sicherheitsloch darstellt (abgesehen davon das Syntax-Fehler drin sind).
Dein Schnipsel bindet einfach jede x-beliebige PHP-Datei auf dem Server (sowie auch auf Remote-Server) ohne jegliche Sicherheitsabfrage oder Definition in die Seite ein. Das was Du da gepostet hast mag bequem sein, ist aber reiner Suizid und nur eine Frage der Zeit bis es zum GAU kommt!
0

#8 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 13. September 2006 - 11:36

Wie kann man dann noch eine Abfrage einbauen, der überprüft, ob der Link erlaubt ist?

Welche sicheren Methoden gibt es denn sonst noch? Die Methode wäre natürlich super, weil ich mir das Führen der Linkliste sparen könnte, aber wenn das so unsicher ist, dann wäre das nicht so schön.
0

#9 Mitglied ist offline   Eardy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 90
  • Beigetreten: 04. September 06
  • Reputation: 0
  • Wohnort:Linz/Rhein (Deutschland)

geschrieben 13. September 2006 - 11:38

das sehe ich nicht so, erstens kann man eine sub domain drüber legen, so das von den pfadangaben nichts mehr gesehen werden kann, auserdem kann man auch noch einige sicherheitsabfragen machen.

hab auch extra dabei geschrieben das er die abfragen nach seinem sicherheits bedürfnis gestalten soll.

und selbst wenn man noch einen baum aus sicherheitsabfragen baut ist das immernoch besser und dynamischer als wenn man für jeden link ein eigenes case anlegen soll.


übrigens wenn du mir sagst das mein code nichts taugt, was ist denn dann dein lösungsvorschlag?
0

#10 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 13. September 2006 - 11:48

Wie wäre es, wenn ich z.B. einfach die ID "home" benenne und dann aber folgendes übergebe und die Links eben entsprechend in homexxx.php umbenenne?

include(id."xxx.php");


Wäre das dann sicherer?
0

#11 Mitglied ist offline   Eardy 

  • Gruppe: aktive Mitglieder
  • Beiträge: 90
  • Beigetreten: 04. September 06
  • Reputation: 0
  • Wohnort:Linz/Rhein (Deutschland)

geschrieben 13. September 2006 - 11:55

diese lösung bietet ein klein wenig mehr sicherheit, aber wenn einer dahinter kommt is es das selbe. aber du kannst z.b. die id, die übergeben wird auf inhalt prüfe, z.b. ob www oder http: oder andere sachen vorkommen, damit kannst du dann schonmal ausschließen das dateien von einem anderen server aufgerufen werden.
0

#12 Mitglied ist offline   asko 

  • Gruppe: aktive Mitglieder
  • Beiträge: 144
  • Beigetreten: 17. November 02
  • Reputation: 0

geschrieben 13. September 2006 - 12:17

Der korrekte Weg ist nach wie vor ein Switch. Nur so ist sicherzustellen das Dateien eingebunden werden die es auch dürfen. Der ganze Heckmeck mit Subdomain und gucken ob www davor ist etc. ist alles Pfusch und Nonsense.
Bei so vielen Links liegt da schlicht ein Verwaltungsfehler vor, denn Seiten mit so viel -nennen wir es mal- Unterseiten schreien ja förmlich nach Datenbank/Flatfile aus der die Navigation automatisch generiert wird.
Wenn euch das aber zu "kompliziert" ist, dann erfasst die Namen wenigstens in einem Array und prüft ob der erlaubte Name darin vorkommt. Also etwas in dieser Art:

<?php

$erlaubte_dateien = array("home", "hauskonzepte", "haeuserauswahl");
$id = trim($_GET['id']);
if(isset($id) && in_array($id, $erlaubte_dateien)) {
	include($id. '.php');
	}else{
	include('home.php');
}

?>


$erlaubte_dateien muß natürlich mit allen erlaubten Namen gefüttert werden.
0

#13 Mitglied ist offline   NightTiger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 701
  • Beigetreten: 19. März 06
  • Reputation: 0
  • Wohnort:Bern
  • Interessen:Webdesign -&gt; (X)HTML, CSS, ein bisschen PHP und ein bisschen JavaScript ;))

geschrieben 13. September 2006 - 16:49

Beitrag anzeigenZitat (asko: 13.09.2006, 13:17)

.... Also etwas in dieser Art:

<?php

$erlaubte_dateien = array("home", "hauskonzepte", "haeuserauswahl");
$id = trim($_GET['id']);
if(isset($id) && in_array($id, $erlaubte_dateien)) {
	include($id. '.php');
	}else{
	include('home.php');
}

?>


$erlaubte_dateien muß natürlich mit allen erlaubten Namen gefüttert werden.


Wie sicher ist das? Kann man eig. keine Arrays manipulieren? :D
0

#14 Mitglied ist offline   asko 

  • Gruppe: aktive Mitglieder
  • Beiträge: 144
  • Beigetreten: 17. November 02
  • Reputation: 0

geschrieben 13. September 2006 - 17:06

Beitrag anzeigenZitat (NightTiger: 13.09.2006, 17:49)

Wie sicher ist das? Kann man eig. keine Arrays manipulieren? :D


Nein kann man nicht, sofern Arrays nicht mutwillig zur Laufzeit durch Usereingaben manipulierbar gemacht werden. Wenn Du weiß wie das gehen soll laß es uns wissen. Ich bin sicher die PHP-Welt wartet auf diese Erkenntnis, weil das das Aus für so ziemlich jede etwas größere Seite wäre die mit PHP erstellt wurde :D
0

#15 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 13. September 2006 - 17:10

ich lager die seitenwahl auch einfach nur aus. in der index.php steht dann an der stelle zum beispiel nur inlude("seitenwahl.php"); und die datei seitenwahl.php liegt extra irgendwo rum und enthält das ganze switch-käse-gedöns. ob und wie man sich dann die datei seitenwahl.php noch optimiert kann man sich dann ja zusätzlich überlegen.
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0