tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
742
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sascha1006 Tutorials.de Gastzugang
    hallo,

    ich habe ein problem mit einem link wie z.B. index.php?area=dbk&content=info
    habe mir das tut dazu angeschaut, welches aber leider nur bis index.php?area=dbk geht.

    wie gesagt würd ich aber gerne längere links haben...

    nun habe ich versucht das ganze bissl umzustellen, was mir nicht ganz gelungen ist...
    hier mal mein ursprünglicher code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?php
     
    include('linkinfo.php');
     
    if(isset($_GET['area']) AND isset($bereich[$_GET['area']]))
    {
     if(!file_exists($bereich[$_GET['area']])) echo "Die Datei ist nicht vorhanden.";
     
     include $bereich[$_GET['area']];
    }
    else
    {
     include $dateien['news'];
    }
    ?>

    diesen code habe ich nun wie folgt geändert.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    <?php
     
    include('linkinfo.php');
     
    if(isset($_GET['area']) AND isset($bereich[$_GET['area']]))
    {
     if(!file_exists($bereich[$_GET['area']])) echo "Die Datei ist nicht vorhanden.";
     
     include $bereich[$_GET['area']];
     
             if(isset($_GET['content']) AND isset($dateien[$_GET['content']]))
             {
             if(!file_exists($dateien[$_GET['content']])) echo "Die Datei ist nicht vorhanden.";
     
             include $dateien[$_GET['content']];
             }
    }
    else
    {
     include $dateien['news'];
    }
    ?>

    und dann hier noch die linkinfo.php

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    <?php
     
    $dateien = array();
     
    //area
    $bereich['dbk'] = "area/dbk/";
    $bereich['bsn'] = "area/bsn/";
    $bereich['prg'] = "area/prg/";
    $bereich['content'] = "area/content/";
     
    //content
    $dateien['news'] = "area/content/news.php";
    $dateien['formular'] = "formular2.php";
    $dateien['info'] = "info.php";
    $dateien['material'] = "material.php";
    $dateien['aufgaben'] = "aufgaben.php";
     
     
    ?>

    hoffe irgendwer kann mir bei meinem problemchen helfen. =)

    Gruss

    Sascha
     

  2. #2
    DeluXe DeluXe ist offline Funkjoker
    Registriert seit
    Jul 2004
    Ort
    Offenburg
    Beiträge
    847
    Es wäre noch sehr vorteilhaft zu wissen, was denn nicht funktioniert, bzw. was du erwartest.

    Allerdings ist folgendes Käse:
    PHP-Code:
    if(isset($_GET['area']) AND isset($bereich[$_GET['area']]))
    {
     if(!
    file_exists($bereich[$_GET['area']])) echo "Die Datei ist nicht vorhanden.";

     include 
    $bereich[$_GET['area']];
    }
    else
    {
     include 
    $dateien['news'];

    Auch wenn die Datei nicht vorhanden ist, versuchst du sie mittels include() zu laden, gibst vorher jedoch aus, dass die Datei nicht existiert. Das ergibt doch keinen Sinn.

    Was du wohl erreichen wolltest ist folgendes:
    PHP-Code:
    if(isset($_GET['area']) AND isset($bereich[$_GET['area']]) and file_exists($bereich[$_GET['area']])) {
     include 
    $bereich[$_GET['area']];
    }
    else
    {
     include 
    $dateien['news'];

    Das selbe gillt für die If-Bedingungen im zweiten Code-Ausschnitt.
     
    mfg

    DeluXe

  3. #3
    Sascha1006 Tutorials.de Gastzugang
    hmm

    also der code..

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?php
     
    include('linkinfo.php');
     
    if(isset($_GET['area']) AND isset($bereich[$_GET['area']]))
    {
     if(!file_exists($bereich[$_GET['area']])) echo "Die Datei ist nicht vorhanden.";
     
     include $bereich[$_GET['area']];
    }
    else
    {
     include $dateien['news'];
    }
    ?>

    hatte eig vorher schon funktioniert.
    nur wenn ich versuch, dass ich den link erweitern kann, also dass ich
    index.php?area=dbk&content=info
    aufrufen kann funktioniert nicht.

    wenn ich den code wie oben bei mir beschrieben änder kommt folgende fehlermeldung.

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Warning: include(D:\wamp\www\seite\area\dbk) [function.include]: failed to open stream: Permission denied in D:\wamp\www\seite\\index.php on line 55
     
    Warning: include() [function.include]: Failed opening 'area/dbk/' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\www\seite\\index.php on line 55
    Die Datei ist nicht vorhanden.
    Warning: include(info.php) [function.include]: failed to open stream: No such file or directory in D:\wamp\www\seite\\index.php on line 61
     
    Warning: include() [function.include]: Failed opening 'info.php' for inclusion (include_path='.;C:\php5\pear') in D:\wamp\www\seite\\index.php on line 61

    also scheint er irgendwie nicht zu verstehen, dass er nach area/dbk/ noch weiter machen soll, dass der link dann area/dbk/info.php ergibt
     

  4. #4
    Sascha1006 Tutorials.de Gastzugang
    huhu,

    erstma sorry für den doppelpost, aber hab hier grad ma bissl überlegt, ist es nicht rein theoretisch irgendwie möglich das wie folgt aussehn zu lassen...?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <?php
     
    include('linkinfo.php');
     
    $link = $bereich[$_GET['area']]$dateien[$_GET['content']]
     
    include $link;
     
    ?>

    das is natürlich nur sehr primitiv, aber irgendwie so müsste das doch sein oder nicht?
    oder ist das technisch gar nicht machbar die teile aneinander zu reihen damit sie nen vernünftigen link ergeben?

    hab ja mal dein beispiel genommen, aber dabei will er ja nur den link index.php/area/dbk/ aufrufen, aber das sind ja nur ordner. da muss ja noch irgendwie die info.php dran...

    hoffe mir kann jmd helfen =)

    Gruss

    Sascha
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du solltest $bereich[] und $dateien[] mit einem "." zusammensetzen. Ebenfalls währe ein ; am Ende noch nützlich.
    Ansonsten sollte es schon gehen.

    Dan ggf noch prüfen ob die Datei vorhanden ist..

    PHP-Code:
    <?php

        
    include('linkinfo.php');
        
        
    $link $bereich[$_GET['area']].$dateien[$_GET['content']];
        
        if (
    file_exists($link)){
            include 
    $link;
        } else {
            echo 
    "File {$link} not found";
        }

    ?>
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    Sascha1006 Tutorials.de Gastzugang
    huhu,

    vielen lieben dank, klappt nun perfekt =)

    hab den code nun noch an das komplexere angepasst. poste den hier nochmal, für leute die das selbe problem haben.

    [code]
    <?php

    include('linkinfo.php');

    if(isset($_GET['area']) AND isset($bereich[$_GET['area']]) and isset($_GET['content']) AND isset($dateien[$_GET['content']]) and file_exists($bereich[$_GET['area']].$dateien[$_GET['content']])){
    include $bereich[$_GET['area']].$dateien[$_GET['content']];
    }
    else
    {
    include $dateien['news'];
    }

    ?>
    [/code
     

  7. #7
    2Pac 2Pac ist offline Mitglied Platin
    Registriert seit
    Jun 2002
    Ort
    Salzwedel
    Beiträge
    605
    Kleiner Sicherheitstipp. Lass keinen direktaufruf der php Dateien zu. Sonst kann ein User der weiß wie die Seite heißt, diese auch anders ansteuern.

    PHP-Code:
    if( $_SERVER['SCRIPT_FILENAME'] == __FILE__ )
    {
     echo 
    "<div class='error'>Die Seite darf nicht direkt aufgerufen werden!</diV>";

    Nur am Rande, falls es dich interessiert
     

  8. #8
    Avatar von queicherius
    queicherius queicherius ist offline ♥ PHP ♥
    Registriert seit
    Oct 2008
    Ort
    Stuttgart
    Beiträge
    439
    Zitat Zitat von 2Pac Beitrag anzeigen
    Kleiner Sicherheitstipp. Lass keinen direktaufruf der php Dateien zu. Sonst kann ein User der weiß wie die Seite heißt, diese auch anders ansteuern.

    PHP-Code:
    if( $_SERVER['SCRIPT_FILENAME'] == __FILE__ )
    {
     echo 
    "<div class='error'>Die Seite darf nicht direkt aufgerufen werden!</diV>";

    Nur am Rande, falls es dich interessiert

    Er ruft doch sowiso aus einer Whitelist auf -.-
     
    Jeder freut sich über eine positive Bewertung oder ein Danke :)

    Wie poste ich falsch
    Nachdem ich Google, die FAQ und die interne Suche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen in den falschen Unterforen, mit kreativen Titel und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann. Helfende Posts anderer Mitglieder ignoriere ich einfach und nörgle, dass mir niemand helfen kann.
    Mein Motto

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 27.01.09, 19:59
  2. Antworten: 6
    Letzter Beitrag: 26.07.06, 14:12
  3. Antworten: 3
    Letzter Beitrag: 18.02.06, 00:53
  4. Navigation index.php?section=links
    Von kalle01 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 01.05.05, 18:39