Ankündigung

Einklappen
Keine Ankündigung bisher.

Sessiondaten in include nutzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sessiondaten in include nutzen

    Hallo,
    habe trotz Suche in diesem Forum nicht die erhoffte Antwort gefunden, auch wenn diese Thema schon x-mal behandelt wurde...

    Meine Seite ist so aufgebaut, dass der "Rahmen" der Seite, also bspweise die Navigation mittels include erstellt wird.

    Starte ich nun eine session innerhalb einer Seite mittles session_start(); und setzte dort variablen wie $_SESSION['angemeldet'] = true; dann kann ich zwar innerhalb der seite darauf zurückgreifen, nicht aber innheralb der include datei (auch wenn ich dort ebenfalls session_start(); mache).

    meine Fragen:
    1. session_start(); startet eine session wenn keine geöffnet ist und übernimmt eine andere falls eine offen ist?
    2. wie kann ich innerhalb meiner include auf die session variablen zugreifen? ich habe nämlich das gefühl, dass dort wieder eine neue session angelegt wird...

    habe auch schon davon gelesen, dass man die sessionID im link mit übergeben muss. wann ist das wichtig?

    ok, hoffe ihr könnt mir helfen
    danke
    Gruß Moonbiker

  • #2
    Also, wenn du eine Datei per include() einbindest kannst du auf alle Variablen zugreifen die vorher bereits gesetzt wurden, natürlich auch auf $_SESSION. Ein weiteres Mal session_start() zu nutzen ist nicht nötig.

    Die session_id muss an die URL angehängt werden wenn der User keine cookies akzeptiert. Allerdings muss das akzeptieren der session via URL auch aktiviert sein.

    Kommentar


    • #3
      danke für deine schnelle antwort!
      ich möchte per:
      PHP-Code:
      <?php
      if (isset($_SESSION['angemeldet']) and $_SESSION['angemeldet'])
      {}
      ?>
      nun Navigationsmenüs "freischalten", nur habe ich keinen Zugriff auf die session, also es wird nie was angezeigt...

      woran kann das liegen?

      Kommentar


      • #4
        Zeig mal bitte, wo du die Variable setzt und dann noch kurz welche PHP-Version du nutzt.

        Kommentar


        • #5
          ich verwende folgende Methode von http://aktuell.de.selfhtml.org/tipps...stem/index.htm:

          meine members_start.php:
          PHP-Code:
          <?php
          session_start
          ();
          $filestamp filemtime($_SERVER["PATH_TRANSLATED"]);
          include (
          "http://www.kleines-helferlein.com/header.inc.php?mainmenu=9&navmenu=1&fooder=0&filestamp=$filestamp");

          if (isset(
          $_SESSION['angemeldet']) and $_SESSION['angemeldet'])
                {
          #angemeldet
          $user $_SESSION['user'];
          echo 
          "
          <p align='left' class='schrift1'>
            Member Bereich
          </p>
          <p align='left' class='schrift2'>
            Anmeldung erfolgreich als 
          $user
          </p>
          [url='logout.php']abmelden[/url]"
          ;
                } else {
          #nicht angemeldet
          echo "
          <p align='left' class='schrift1'>
            Member Bereich
          </p>
          <p align='left' class='schrift2'>
            Hier entsteht oder entstand schon teils ein Bereich, zu dem man einen LOGIN benötigt, den man von mir bekommen kann ;)
            

            Hier nun die Anmeldung:
          </p>
          <form action='login.php' method='post'>
             Benutzer: <input type='text' name='user' />

             Passwort: <input type='password' name='pass' />

             <input type='submit' value='Anmelden' />
            </form>"
          ;}
            
          include (
          "http://www.kleines-helferlein.com/header.inc.php?mainmenu=0&navmenu=0&fooder=1&filestamp=$filestamp"); 
          ?>
          meine login:
          siehe unten

          meine logout:
          PHP-Code:
          <?php
               session_start
          ();
               
          session_destroy();

               
          $hostname $_SERVER['HTTP_HOST'];
               
          $path dirname($_SERVER['PHP_SELF']);

               
          header('Location: http://'.$hostname.($path == '/' '' $path).'/members_start.php');
          ?>
          meine auth.php:
          PHP-Code:
          <?php
               session_start
          ();

               
          $hostname $_SERVER['HTTP_HOST'];
               
          $path dirname($_SERVER['PHP_SELF']);

               if (!isset(
          $_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
                
          header('Location: http://'.$hostname.($path == '/' '' $path).'/members_start.php');
                exit;
                }
          ?>
          und meine Header.inc.php:
          PHP-Code:
          <?php
          <?php 
          #[url]www.kleines-helferlein.com[/url]

          #Zeitdaten
          $timestamp time();
          $datum date("d.m.Y",$timestamp);
          $uhrzeit date("H:i",$timestamp);
          $jetzt $datum."-".$uhrzeit."Uhr";

          $filestamp $_GET['filestamp'];
          $aktualisiert date("d.m.Y",$filestamp)."-".date("H:i",$filestamp)."Uhr";

          #Navigation
          $mainmenu $_GET['mainmenu'];
          $navmenu  $_GET['navmenu']; 
          $fooder  $_GET['fooder'];

          #SeitenSegmente
          ##Oberteil Navileiste links
          $nav1 "
          <table border='0' cellspacing='0' cellpadding='0' width='100%'>
          <tr><td align='left' valign='top' width='200'>
          <table border='0' cellspacing='0' cellpadding='0'>
          <tr><td class='menulogomain'></td></tr>
          <tr><td class='menulogo3'></td></tr>"
          ;
          ##Unterteil Navileiste links
          if (isset($_SESSION['angemeldet']) and $_SESSION['angemeldet'])
                {
          $nav2 "
          <tr><td class='menulogo2'></td></tr>
          <tr><td class='menulogobottom'></td></tr>
          <tr><td align='left'>
          <a class='datum1'>LetzteAktualisierung:

          $aktualisiert


          Seitenaufrufum:

          $jetzt


          Anmeldungals:

          $user
          </a></td></tr>
          </table>
          </td>
          <td align='left' valign='top'>
          <table border='0' cellspacing='0' cellpadding='0'>
          <tr><td>
          <p align='center'></p>"
          ;
                } else {
          $nav2 "
          <tr><td class='menulogo2'></td></tr>
          <tr><td class='menulogobottom'></td></tr>
          <tr><td align='left'>
          <a class='datum1'>LetzteAktualisierung:

          $aktualisiert


          Seitenaufrufum:

          $jetzt
          </a></td></tr>
          </table>
          </td>
          <td align='left' valign='top'>
          <table border='0' cellspacing='0' cellpadding='0'>
          <tr><td>
          <p align='center'></p>"
          ;
          }
          #Start Seitenerstellung
          #
          #...
          #
          if (isset($_SESSION['angemeldet']) and $_SESSION['angemeldet'])
                {
                echo 
          "<tr><td class='menulogo3'>[url='http://www.kleines-helferlein.com/members/members_ddgolfen.php']DD-Golfen[/url]</td></tr>";
                }
          #...

          ?>
          hoffe du kannst damit was anfangen...

          Kommentar


          • #6
            PHP Version 4.3.4, der Code is aber noch in der Bastelphase, also noch recht umständlich an manchen Stellen...

            Kommentar


            • #7
              veränderte Login.php:
              PHP-Code:
              <?php
                  
              if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                    
              session_start();

                    
              $username $_POST['user'];
                    
              $passwort $_POST['pass'];

                    
              $hostname $_SERVER['HTTP_HOST'];
                    
              $path dirname($_SERVER['PHP_SELF']);

                    
              # Benutzername und Passwort werden überprüft
                    
              if ($username == 'a' && $passwort == 'a') {
                     
              $_SESSION['angemeldet'] = true;}
                    
                    
              # Weiterleitung
                    
              header('Location: http://'.$hostname.($path == '/' '' $path).'/members_start.php');
                    }

              ?>

              Kommentar


              • #8
                ok, meine weiteren Erkenntnisse:

                member_start und login funktionieren und dort kann ich auch auf session variablen zugreifen, nur in der header.inc.php nicht...

                Kommentar


                • #9
                  Wenn du die header.inc.php auf diese Weise includest dann wird die Datei bereits vor dem Includen geparst. Er fügt also nur noch die fertige HTML Datei ein. Deshalb haben deine Variablen auch keine Auswirkungen darauf.

                  Probiere mal einen relativen Pfad zu der Datei.
                  Oder den absoluten vom Root aus, Stichwort:
                  $_SERVER['DOCUMENT_ROOT'];

                  Kommentar


                  • #10
                    ich bekomm das relativ ni hin, weil der dann ja nach ner Datei sucht, die die Variablen, die ich hinter dem ? übergebe im Namen enthält...

                    könnte ich die sachen hinterm ? auch per POST übergeben? und wenn ja, wie?
                    habe da mal was von hidden form gelesen, fand das aber zu umständlich

                    Kommentar


                    • #11
                      Ich glaube du hast noch nicht ganz verstanden wie "include" Funktioniert.


                      schreibst du include("header.inc.php"); dann wird der PHP Code der Datei header.inc.php einfach an diese Stelle deiner Datei eingefügt. Und alle Variablen der Hauptdatei sind verfügbar.

                      Das heißt du kannst in der header.inc.php einfach auf "$filestamp" zugreifen falls in deiner Hauptdatei "$filestamp" irgendwo gesetzt wurde. Ohne eine Übergabe wie filestamp=$filestamp...

                      Vorraussetzung dafür ist nur, dass der Pfad nicht mit http:// beginnt sondern so wie ich davor geschrieben habe.

                      Kommentar


                      • #12
                        ja, daran lag es wohl...

                        bin halt noch Anfänger


                        VIELEN VIELEN DANK!

                        Kommentar


                        • #13
                          Zitat von moonbiker
                          ich bekomm das relativ ni hin, weil der dann ja nach ner Datei sucht, die die Variablen, die ich hinter dem ? übergebe im Namen enthält...
                          Dann schau dir bitte einmal folgenden Eintrag in den FAQ an:
                          13.11. Wie übergebe ich Variablen an eine eingebundene Datei?
                          http://www.php-faq.de/q/q-datei-uebergabe.html

                          Kommentar


                          • #14
                            Danke für den Link, aber der hilft mir nicht, da ich 1. das schon so gemacht habe (für externe links, was es ja war) und 2. die andere Lösung funktioniert, bzw ich meine wissenslücken jetzt schließen konnte...

                            naja, danke an alle

                            Kommentar


                            • #15
                              Hallo "moonbiker".

                              Mach mal noch ein session_regenerate_id() vor dein $_SESSION['angemeldet'] = true;

                              Andernfalls übernimmt PHP eine möglicherweise von einem Angreifer übergebene Session-ID für die Benutzer-Sitzung (Stichwort Session-Fixation, siehe das verlinkte Dokument im Manual)

                              Basti

                              Kommentar

                              Lädt...
                              X