index.php?site=
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
action
anweisung
array
beitrag
break
datei
error
fehler
funktion
inhalt
kommentar
meinst
page
parameter
parsen
startseite
umstndlichen eindruck
variable
verfhrt
verzeichnis
-
Guten Abend
Ich will ne HP mit index.php?site=text haben
Jetzt hab ich folgendes...
Aber irgendwie wird immer ne Fehler meldung ausgegeben ~> es geht nicht so wie ich das will ^^
Hier mal der Code
<? if(empty($_GET['site']) || !file_exists($_GET['site'].".php") || $_SERVER["HTTP_HOST"]!="www.deinedomain.de") { $_GET['site']="start"; } ?> <table border="1"> <tr> <td><a href="index.php?site=test"></a>Link</td> <td><? include($_GET['site'].".php"); ?></td> </tr> </table>
Hoffentlich kann mir jemand helfen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
<?php if(!isset($_GET['site'])) { $site = home ; } else { $site = $_GET['site']; } ?> <table border='1'> <tr> <td><a href='index.php?site=test'></a>Link</td> <td><?php include($site'.php.'); ?></td> </tr> </table>
$_SERVER['HTTP_HOST']!='www.deinedomain.de') <- was willst du damit bezwecken???
ungetestet, müsste abba gehen. In den Tutsektion gibbet 2 schöne Artikel dazu. Hab beide kombiniert :P
Beitrag geaendert: 26.12.2006 0:43:08 von mergener -
geht nicht :D
folgende fehlermeldung kommt
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in urlbla\index.php on line 29 -
Dann les die tuts durch
bin zu müde zum proggen und zu wach zum pennen :D -
hm okay mach ich dann mal...ich hoff ichs versteh..
das was ich eigentlich nur will nen grundgerüst mit php für meine homepage ich hab mir selbst schon was gemacht aber es ist nen weng blöd ^^
ich hätts lieber gern so -
193372380
Add mich mal... -
Guten Abend
Ich will ne HP mit index.php?site=text haben
Jetzt hab ich folgendes...
Aber irgendwie wird immer ne Fehler meldung ausgegeben ~> es geht nicht so wie ich das will ^^
Hier mal der Code
<? if(empty($_GET['site']) || !file_exists($_GET['site'].".php") || $_SERVER["HTTP_HOST"]!="www.deinedomain.de") { $_GET['site']="start"; } ?> <table border="1"> <tr> <td><a href="index.php?site=test"></a>Link</td> <td><? include($_GET['site'].".php"); ?></td> </tr> </table>
Hoffentlich kann mir jemand helfen
Bitte tue mir den gefallen und editier den Beitrag, weil das so Schwachsinn und unsicher ist. Aber ich versuche dir mal zu helfen!
<?php
switch ($_GET['site']) {
case 'blub':
include('blub.php');
break;
case 'test':
include('blabla.php');
break;
case 'aaa':
include('aaa.php');
break;
default:
include('home.php');
break;
}
?>
Nun zur Erklärung, also mit einer Switch-Abfrage kannst du eine bestimmte Variable auf verschiedene Werte überprüfen lassen.
Überprüfen lassen wir also $_GET['site']
Wenn site also blub ist, wird blub.php includet! (...site=blub)
Case und das was includet werden soll kann natürlich auch unterschiedliche namen haben, also wenn site=test ist wird mit der Abfrage blabla.php includet...
Wenn es weder blub, noch test, noch aaa ist... dann wird home.php inkludet ( default ). Also bei default sollte man einfach die startseite hinschreiben, wenn also $_GET['site'] garnicht gesetzt ist, dann wird trotzdem was includet, nämlich home.php
Das kannst du nach belieben erweitern, einfach bei case hinschreiben was "site" beinhalten soll und bei include, die Datei, die dann dementsprechend inkludet werden soll.
Den PHP Code schreibst du an die Stelle, wo die Dateien dann letztendlich auch includet werden sollen. Mit deinem Code könnte man auch Dateien von außerhalb inkludieren, mit bösem Code, deswegen vergiss das lieber.
Hier noch ein Link, wo das mit den Switchabfragen nochmal gut erklärt wird:
http://tut.php-q.net/switch.html
EDIT:
Der Fehler von mergener übrigens:
<td><?php include($site'.php.'); ?></td>
das muss so aussehen:
<td><?php include($site.'.php'); ?></td>
Beitrag geaendert: 26.12.2006 1:19:05 von ******* -
Hat sich erledigt, hab ihm das per ICQ geschickt...
edit:
is aber trotzdem interresant was du geschrieben hast!
und jetzt weiss ich auch was der fehler war :P
Beitrag geaendert: 26.12.2006 1:22:20 von mergener -
Hat sich erledigt, hab ihm das per ICQ geschickt...
edit:
is aber trotzdem interresant was du geschrieben hast!
und jetzt weiss ich auch was der fehler war :P
Beitrag geaendert: 26.12.2006 1:22:20 von mergener
Ich wäre mal dafür, dass du das hier postest, was du ihm per ICQ geschickt hast. Wenn ich eure Ansätze da sehe, dann könnte dies fatale Folgen haben ;), weil das so einfach unsicher ist und es geht nunmal viel einfacher ( mit einer Switch-Abfrage )...
EDIT: @gil-galad: Das sollte mein Ansatz sein, natürlich kann man das noch belieb erweitern mit Funktionen, die überprüfen ob die Datei vorhanden sind, man kann natürlich auch noch ein Adminpanel dazu programmieren, um das zu verwalten -.-... So wie ich es gepostet habe funktionierts, wer da noch Spielereien mit einbauen will der soll dies tun.
Beitrag geaendert: 26.12.2006 16:58:50 von ******* -
@*******:
das von dir hat auch nen kleines manko
Denn wenn man das falsche eingibt wird immer home angezeigt ;)
Es wäre besser wenn man das noch rein tun würde das z. b. Seite nicht gefunden oder so was ^^ -
Wieso so umständlich?
<?php $site = $_GET["site"]; if (file_exists("inh/".$site.".php")) { include("inh/".$site.".php"); } else { echo "ERROR 404: Die Seite existiert nicht"; } ?>
-
So ist es imho auch am Besten!
Aufgrund des Verzeichnisses (inh/) ist es "sicher", niemand kann gefährliche PHP-Dateien ausführen, und eine switch-case-Anweisung braucht man auch nicht mehr..
Beitrag geaendert: 27.12.2006 10:19:32 von addlebrainedcity -
es ab bereits einen tread...:
http://www.lima-city.de/boards.php?mode=thread&id=56253&page=0#518527
l sebi
ps meine lösun ist am besten ;) -
WAHHHHHHH! *ANGST*
Bitte, bitte, hört auf Variablen in include-Anweisungen zu schreiben!
Damit kann jeder der will PHP-Code auf eurem Webspace ausführen und somit euren gesamten Space löschen!
Wie man es richtig macht :
Zuerst muss festgelegt werden, welche Seiten existieren und wie die Namen heißen, worüber sie angesprochen werden.
Wenn die GET-Variable nicht gesetzt ist, dann muss sie mit einem Standardwert - der Startseite - initialisiert werden.
Danach wird die Datei includet.
=>
/* home => start.php gb => gb.php con => contact.php usw. am einfachsten kann man dies in ein Array schreiben (siehe dazu mein Tutorial) */ $action = (isset ($_GET['action']) && trim ($_GET['action'])) ? $_GET['action'] : 'home'; switch ($action) { case 'home' require_once ('start.php'); // oder "include ()", "include_once ()", "require ()" break; casae 'gb'; require_once ('gb.php'); break; // usw. }
-
WAHHHHHHH! *ANGST*
Bitte, bitte, hört auf Variablen in include-Anweisungen zu schreiben!
Damit kann jeder der will PHP-Code auf eurem Webspace ausführen und somit euren gesamten Space löschen!
Man kann auch die Variable mit Verzeichnis ergänzen, so wie oben geschehen.
ist kaum gefährlich, solange man im Verzeichniss "content" wirklich NUR Inhalte "lagert".include ("content/" . $page . ".php");
Außerdem muss es auch nicht immer PHP sein, was eingebunden wird:
include ("content/" . $page . ".html");
Oder:
$content = Pseudo_RueckgabeDesDateiInhaltes("content/" . $page . ".content"); eval ($content);
Wobei die Endung .content natürlich ersetzt werden kann und nur der Verschleierung dient (aber streng genommen auch nicht viel bringt :D)
Mfg
addlebrainy -
oder man macht so wie ich:
// // seiten und deren dateien: $sites = array( 'home' => array('title' => "Startseite", 'file' => "inh/home.php"), 'gb' => array('title' => "Gästebuch", 'file' => "inh/gb.php") ); if( isset ($_GET["s"])) { if( $_GET["s"] == "") { $site = "home"; }else{ $site = $_GET["s"]; } }else{ $site = "home"; } if(!isset($sites[$site])) { $site = "404"; }else{ if(!file_exists($sites[$site]['file'])) { $site = "404"; } } if( $site == "404" ) { header("HTTP/1.0 404 Not Found"); } //
-
Eure ganzen Scripte mit Swtch/Case-Verknüpfungen oder Arrays usw. sind ja ganz nett, aber für große Projekte überhaupt nicht geeignet.
Macht es einfach so wie ich geschrieben hatte, darüber kann man keinen Code einschleußen, da es nicht include($site), sondern include("ordnermitinhalt/".$site.".php"); lautet -.- -
Aber sind da nicht fehler drin?
<? $site = $_GET['site']; if (file_exists('inh/'.$site.'.php')) { include('inh/'.$site.'.php'); } else { echo 'ERROR 404: Die Seite existiert nicht'; } ?>
Einmal ist doch am anfang <?php und am bende ?> zuviel?
Und es fehlt wenn es einfach heißt index.php das da home.php geladen wird.
Edit: sorry zum ersten mahc das forum ^^ :D
Beitrag geaendert: 26.12.2006 12:36:04 von gil-galad -
BOAH!
NOCHMAL GANZ DEUTLICH :
KEINE VARIABLEN IN INCLUDE-ANWEISUNGEN!!!
Egal ob ein Verzeichnis davor steht oder was auch immer.
Schon einmal etwas von "../" u.ä. gehört?
Ein "file_exists ()" ist für Sicherheitsabfragen genauso blödsinn!
Also legt bitte fest, welche Dateien es gibt.
[...]
ist kaum gefährlich, solange man im Verzeichniss 'content' wirklich NUR Inhalte 'lagert'.
[...]
Dann gibt mal jemand etwas anderes ein und schon hast du den Salat.
Gebe zum Beispiel mal "../index.php" ein. Aliendwarfs Apaches ist dabei immer abgeschmiert. =)
Eure ganzen Scripte mit Swtch/Case-Verknüpfungen oder Arrays usw. sind ja ganz nett, aber für große Projekte überhaupt nicht geeignet.
[...]
Wenn man keine Ahnung hat... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage