kostenloser Webspace werbefrei: lima-city


index.php?site=

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gil-galad

    gil-galad hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage


  3. <?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
  4. Autor dieses Themas

    gil-galad

    gil-galad hat kostenlosen Webspace.

    geht nicht :D

    folgende fehlermeldung kommt

    Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in urlbla\index.php on line 29
  5. Dann les die tuts durch
    bin zu müde zum proggen und zu wach zum pennen :D
  6. Autor dieses Themas

    gil-galad

    gil-galad hat kostenlosen Webspace.

    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
  7. 193372380
    Add mich mal...
  8. t****y


    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 *******
  9. 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
  10. t****y


    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 *******
  11. Autor dieses Themas

    gil-galad

    gil-galad hat kostenlosen Webspace.

    @*******:
    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 ^^
  12. t*****b

    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";
         }
        ?>
  13. addlebrainedcity

    addlebrainedcity hat kostenlosen Webspace.

    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
  14. s********n

    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 ;)
  15. 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.
    }
  16. addlebrainedcity

    addlebrainedcity hat kostenlosen Webspace.


    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.

    include ("content/" . $page . ".php");
    ist kaum gefährlich, solange man im Verzeichniss "content" wirklich NUR Inhalte "lagert".

    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
  17. mondfinsternis

    mondfinsternis hat kostenlosen Webspace.

    oder man macht so wie ich:

    //
    // seiten und deren dateien:
    $sites = array(
    	'home' => array('title' => "Startseite", 'file' => "inh/home.php"),
    	'gb'   => array('title' => "G&auml;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");
    }
    //
  18. Autor dieses Themas

    gil-galad

    gil-galad hat kostenlosen Webspace.

    sooo :D

    & jetzt mal

    Wie ist es am aller besten einfachsten und am sichersten? :D
  19. t*****b

    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 -.-
  20. Autor dieses Themas

    gil-galad

    gil-galad hat kostenlosen Webspace.

    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
  21. 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...
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!