Ergebnis 1 bis 12 von 12

Thema: Problem mit index.php?action=

  1. #1

    Problem mit index.php?action=

    das kommt in die INdex datei
    Code:
    <?
    
    if (!isset($_GET[$action])) {
    
    include ("main.php");
    
    }
    
    elseif($_GET[$action]=="news"){
    
    include("news.php");
    
    }
    
    elseif($_GET[$action]=="guestbook"){
    
    include("guestbook.php");
    
    }
    
    else {
    
    include("main.php");
    
    }
    
    
    
    ?>
    soweit ich weiß müsste durch
    Code:
    if (!isset($_GET[$action])) {
    
    include ("main.php");
    
    
    
    include("main.php");
    
    }
    
    }
    das immer wenn ein falscher link angegeben wird main.php aufgerufen
    und wenn ich in der adresse Zeile z.b. index?action=news aufrufe müsste normaler weise news.php geöffnet werden, aber es wird nicht, es kommt immer wieder main.php x.x und ich hab keine Ahnung warum
    was ist falsch?

  2. #2
    Du musst auf $_GET['action'] prüfen, nicht $_GET[$action].

  3. #3
    X_X oh man so einfach

    danke hat natürlich geklappt

  4. #4
    Solltest du später dann so 30 seiten haben wird das aber ettttttttttttwas lang das script..
    Darf ich dir was kürzeres geben?!

    PHP-Code:
    <?php
    if ( $action == "" )
    {
    $action "main";
    }


    if ( 
    file_exists($action.php) )
    {
    include(
    "$action.php");
    }else{
    include(
    "main.php");
    }
    ?>

  5. #5
    Kurze Skripte sind zwar gut, aber sie sollten auch funktionieren. Zum einen erfordert dein Skript aktivierte Register Globals. Davon würde ich abraten. Und da bin ich auch nicht der einzige, da Register Globals nunmal als unsicher gelten. Zum anderen funktioniert file_exists($action.php) nur, wenn php vorher als Konstante definiert wurde. Naheliegend wäre aber: file_exists($action."php").

    freundliche Grüße, Rolus

  6. #6
    Kannse mal sehen, war mir nicht sicher ob es file_exists(datei.php) oder file_exists("datei.php") heißt. Naja.
    Für alle Haarspalter:
    PHP-Code:
     <?php
    $action 
    $_GET['action'];
    if ( 
    $action == "" )
    {
    $action "main";
    }


    if ( 
    file_exists($action."php") )
    {
    include(
    "$action.php");
    }else{
    include(
    "main.php");
    }
    ?>

  7. #7
    Hm, stimmt aber immer noch nicht ganz

    Schließlich willst du gucken, ob die Datei site.php existiert, nicht ob der Ordner sitephp existiert - also wohl eher so:

    PHP-Code:
    if (file_exists ($action.'.php')) 

  8. #8
    Hast absolut recht, Tomarus. Aber ich bin mit der Version immer noch nicht zufrieden. Wenn kein 'action' in der URL angegeben wird, kommen Warnmeldungen. Also hier meine kürzere Version:
    Code:
    if(isset($_GET["action"]) && file_exists($_GET["action"].".php")) {
     include($_GET["action"].".php");
    }
    else {
     include "main.php";
    }
    Wichtig ist, dass die isset-Abfrage zuerst überprüft wird. Ist 'action' nicht in der URL vorhanden, wird die Bedingung gleich als falsch angesehen und der else-Teil tritt ein. Falls 'action' aber angegeben ist und die Datei existiert, so wird sie eingebunden.
    Hat noch jemand Vorschläge, wie man es weiter perfektionieren kann?

    freundliche Grüße, Rolus

  9. #9
    Zitat Zitat von Lucleonhart
    Kannse mal sehen, war mir nicht sicher ob es file_exists(datei.php) oder file_exists("datei.php") heißt. Naja.
    Für alle Haarspalter:
    PHP-Code:
     <?php
    $action 
    $_GET['action'];
    if ( 
    $action == "" )
    {
    $action "main";
    }


    if ( 
    file_exists($action."php") )
    {
    include(
    "$action.php");
    }else{
    include(
    "main.php");
    }
    ?>
    Jo danke is auf jedenfall kürzer als meins thx

    Zitat Zitat von Tomarus
    Hm, stimmt aber immer noch nicht ganz

    Schließlich willst du gucken, ob die Datei site.php existiert, nicht ob der Ordner sitephp existiert - also wohl eher so:

    PHP-Code:
    if (file_exists ($action.'.php')) 
    Mir war schon so als ob da was nicht wirklich stimmt :P ^^

    thx an all die geholfen haben mein kleines prob zu lösen

  10. #10
    Zitat Zitat von Rolus
    Hast absolut recht, Tomarus. Aber ich bin mit der Version immer noch nicht zufrieden. Wenn kein 'action' in der URL angegeben wird, kommen Warnmeldungen.
    ? Wassn für Warnmeldungen?!
    http://www.lucleonhart.de/try/test.php <- Da iss mein script, nur mit echo statt include.. was meinst denn du für warnungen wenn man die jetzt so ohne action aufruft? *gespannt ist* (Zum testen gibt es eine "bla.php" ^^ )

    @Tomarus: *ARGH* Irgendwie mag mich das script net.. *g* Irgendwas fehlt imma... *heul*

  11. #11
    Zitat Zitat von Lucleonhart
    ? Wassn für Warnmeldungen?!
    http://www.lucleonhart.de/try/test.php <- Da iss mein script, nur mit echo statt include.. was meinst denn du für warnungen wenn man die jetzt so ohne action aufruft? *gespannt ist* (Zum testen gibt es eine "bla.php" ^^ )
    Ich meinte die Warnmeldung, die man sieht, wenn man die aktuelle PHP-Version hat, bei der error_reporting normalerweise auf all gestellt ist. Wenn man eine ältere Version nutzt bzw. sich nicht alle Meldungen ausgeben lässt, sieht man die Warnung nicht (und hat damit einen schwerer übertragbaren Code).
    Das Problem ist halt, dass der Index action für $_GET unbekannt ist, wenn in der URL kein action angegeben ist. Man versucht also auf ein Array-Feld über einen nichtdefinierten Index zuzugreifen. Deshalb bietet sich da die isset Abfrage an.

    freundliche Grüße, Rolus

  12. #12
    Zitat Zitat von Rolus
    Ich meinte die Warnmeldung, die man sieht, wenn man die aktuelle PHP-Version hat, bei der error_reporting normalerweise auf all gestellt ist.
    *alle 4 Webserver ausprobiert hat*
    Hm.. irgendwie schein ich dann wohl net die aktuellste Version zu haben! *g*
    Aber man lernt nie aus, thx für den Tipp!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •