WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » problem mit verlinkung » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

problem mit verlinkung
von chip
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.
von Maschinenengel
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???
von languitar
http://de2.php.net/manual/de/reserved.variables.php#reserved.variables.get
von Maschinenengel
bitte einmal erläutern was es mit dem $_GET['schiff'] auf sich hat.
wo muss ich das einbinden???
von chip
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.
von Maschinenengel
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?
von chip
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.
von languitar
Du müsstest uns schon den Code hier her posten (bitte im [code]-Block formatiert)
von Maschinenengel
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!
von subjective
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.
von chip
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.
von Maschinenengel
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

Nach oben