"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP help please ( $_GET Funktion)

x37 15.05.2006 - 00:57 985 6
Posts

x37

xxx-xxxxxxx
Registered: Aug 2000
Location: near by Graz
Posts: 1642
Ich arbeite gerade an einer kleine Page.
Und jetzt hab ich ein problem mit php wo ich leider nix im inet gefunden hab, und mein php wissen ist luschenhaft.

index.php is die hauptseite, diese sollte mit hilfe von so erweiterungen den inhalt laden.
zb index.php?inhalt=blabla

nur wie bekomm ich diese "Variable" jetzt in den code rein das es funkt? ich bin immer an: "Notice: Undefined variable: inhalt in" gescheiter

mein jetziger code:
<?php
error_reporting(E_ALL); // alle Fehler anzeigen
If ($inhalt=="1234") {echo "juhu";}
else {echo "nein";}

echo $inhalt;
include ("inc/$inhalt.php");
?>

mein ziel ist es eine datei zu includen die genau so heist. (das obere is nur zum testen)

kann mir da wer helfen oder hat wer nen guten link? ich find leider nix.

tia
Bearbeitet von x37 am 16.05.2006, 23:24

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
ich helfe dir, aber du solltest dennoch einsehen, dass dies eine echt n00bfrage ist, die problemlos mit irgendeinem tutorial über variablen in php beantwortet werden kann.

auf deinem webserver ist die environmentvariable "register_globals" ausgeschalten und das ist auch gut so, sonst hätte dein code bei kleinen unsauberkeiten schnell eine sicherheitslücke.

deshalb brauchst du die superglobal arrays. die sind $_POST, $_GET usw. deine variable "inhalt" kannst du also über $_GET['inhalt'] erreichen.

bitte nimm dir oben geschriebenes zu herzen.

btw: überleg dir schon mal was passieren würde, wenn ich über den request string deiner inhaltsvariable zB "../index" zuweisen würde.

dosen

Here to stay
Avatar
Registered: Feb 2003
Location: Wien
Posts: 5602
würde auch mit $_GET aufpassen. wenn du die seiten mit index.php?site=bla.html und dann einfach über eine variable einen include machst ist man trotzdem ziemlich unsicher. mat hats ja eh schon gesagt, die erklärung ist aber sehr dürftig und die tuts die ich durchgemacht hab habens auch nicht richtig erklärt (vielleicht genau die falschen durchgemacht. aufjedenfall nicht so:

also
site = $_GET["site"];
include $site;

sollte man nicht verwenden (auch wenn man normalerweise ein if und else herum schreibt).
das:
Code: PHP
  $files = array
   ("bla" => "bla.html",
    "bla2" => "bla2.html");

 if (!isset($_GET["site"]){
    $site = "start";
 } else {
    $site = $_GET["site"];
  }

  include $files[$site];

würde sicher(er) sein.

ich wollte dir jetzt zwar nix schreiben, da das aber eh nur ein kleiner schnipsel ist und ich dir sowieso nicht v erspechen kann das es funzt (da ich immer zeichen vergesse ;)) las ich es mal stehen. mach ein paar tutorials durch und dann kapiert man es eh schnell was dieses und jenes macht.
Bearbeitet von dosen am 11.07.2006, 14:06

x37

xxx-xxxxxxx
Registered: Aug 2000
Location: near by Graz
Posts: 1642
thx für die tipps ich werd mich heut am abend nochmals hinsetzen.

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Zitat von mat
aber du solltest dennoch einsehen, dass dies eine echt n00bfrage ist

Das ist auch ein echtes n00b-Subject, deshalb helfe ich dir nicht. Du könntest den Threadtitel editieren, oder zumindest beim nächsten Mal einen aussagekräftigen Titel wählen.


(außerdem kenn ich mich mit PHP nicht aus ;) )

x37

xxx-xxxxxxx
Registered: Aug 2000
Location: near by Graz
Posts: 1642
@that ein besser titel is mir zuerst leider net eingefallen sorry

leider bin ich erst heute dazugekommen.
Das hab ich aus euren Tipps und Tutorials aus dem inet zusammengestoppelt.(wenn man weis wie die funktion heist is viel leichter was finden :D )
Code: PHP
<?php
//index.php
error_reporting(E_ALL); // alle Fehler anzeigen
$inhalt2 = "start";
$nummer = "0";
include "inhalt/_daten.php";
	if(isset($_GET['inhalt'])) {
		$inhalt1 = $_GET['inhalt'];
        if(isset($daten[$inhalt1])) {
			$inhalt2 = $_GET['inhalt'];
			}
    }
	if(isset($_GET['n'])) {
		$nummer = $_GET['n'];
    }
include $daten[$inhalt2];
echo $nummer;
?>
Code: PHP
<?php
// inhalt/_daten.php
$daten = array
(
"start" => "inhalt/start.php",
"test" => "inhalt/test.php",
"nix" => "inhalt/nix.php"
);
?>
es scheint zu funktionieren.
Bitte erbarmt euch nochmal und sagt mir ob des in ordnung sprich halbwegs sicher ist.
tia

edit: oder sollte ich die abfrage ob der wert im array vorhanden ist eher mit einer "in_array" funktion machen?
Bearbeitet von x37 am 17.05.2006, 01:02

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
statt

Code: PHP
    if(isset($_GET['inhalt'])) {
        $inhalt1 = $_GET['inhalt'];
        if(isset($daten[$inhalt1])) {
            $inhalt2 = $_GET['inhalt'];
            }
    }
 

würd ich folgendes schreiben

Code: PHP
if (isset ($_GET['inhalt']) and isset $daten[$_GET['inhalt']] {
include .......
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz