Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit Session

Einklappen

Neue Werbung 2019

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

  • Probleme mit Session

    Hallo zusammen,

    das ist mein erster Beitrag im Forum. Hoffe Ihr könnt mir helfen.

    Ich habe Probleme mit den Sessions von PHP. Ich würde gerne anhand einer Session weitere Menüpunkte einblenden. Hier geht's um eine private Bildergalerie. Unsere beiden Mädels zeigen gerne Ihren Freundinnen mit Ihren Smartphones Bilder von Ihnen. Da aber in der Galerie auch Familienbilder sind, welche nicht unbedingt mal eben so rumgezeigt werden sollten.

    Ich möchte nun das ganze per Link lösen. Die Galerie wird durch einen Link "bildergalerie.php" aufgerufen. Für mich und meine Frau ist der Link so vorgesehen "bildergalerie.php?MamaPapa=1"

    Trotz etlichen Versuchen und durcharbeiten von Anleitungen haut es einfach nicht hin.

    Hier mein Ansatz:

    PHP-Code:
    if ($MamaPapa == '1') {

            if (!isset(
    $_SESSION['SessionName'])) {
                  
    $_SESSION['SessionName'] = 'MamaPapa';
                
    $_SESSION['ShowMenu'] = '1';
            }
    }

    $ShowMenu $_SESSION['ShowMenu'];

    if (
    $ShowMenu == '1') {

       
    Erweitertes Menü

    } else {

      
    Normales Menü


    Wie erwähnt klappt nicht... Und irgendwie muss ja die Session auch an die folgende Seite übergeben werden. Oder passiert dies automatisch?

    Wäre super wenn mir hier jemand helfen könnte.

    Vielen Dank
    Tobias

  • #2
    Gibt's da auch irgendwo ein session_start?

    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Hallo,

      ja das session_start gibt's, habe ich nur im Post vergessen. Steht am Anfang der Seite direkt nach <?php

      Das richtig debuggen ist ja schon recht, nur bin in ein völliger Leihe was PHP angeht und möchte/kann das auch nicht vertiefen.
      Die PHP-Dokumentation ist ja auch ein mächtiges Ding und ich habe mir das schon angeschaut, da aber wie erwähnt ich ein Leihe bin, verstehe ich nur die Hälfte darin.

      Wenn ich eine Fehlermeldung hätte, dann würde mir das auch schon helfen... Leider erscheint aber keine bei der Ausgabe.

      Vielleicht noch nen Tipp woran es liegen könnte?

      Kommentar


      • #4
        Hallo,

        ja das session_start gibt's, habe ich nur im Post vergessen. Steht am Anfang der Seite direkt nach <?php
        Wenn dir dir hier Freunde machen willst dann BITTE poste immer den vollständigen Code nur dann kann man wirklich konkret helfen! Im zweifel befassen sich 10 Leute mit deinem Problem, 10x kommt raus das es das nicht ist weil in Zeile 9X121X vorhanden aber nicht gepostet und das nervt einfach!

        Das richtig debuggen ist ja schon recht, nur bin in ein völliger Leihe was PHP angeht und möchte/kann das auch nicht vertiefen.
        Hierzu folgendes: http://www.php.de/php-einsteiger/489...nsammlung.html u. http://php-de.github.io/jumpto/leitfaden/

        Die PHP-Dokumentation ist ja auch ein mächtiges Ding und ich habe mir das schon angeschaut, da aber wie erwähnt ich ein Leihe bin, verstehe ich nur die Hälfte darin.
        Sorry aber das zeigt entweder das du Ungeeignet bist oder es einfach eine faule Ausrede ist!

        Wenn ich eine Fehlermeldung hätte, dann würde mir das auch schon helfen... Leider erscheint aber keine bei der Ausgabe.
        Siehe meinen 2. Link - füge entsprechende Befehle ein um das Error-Reporting sowie das anzeigen von Fehlern zu aktivieren!

        -----

        Zu deinem Script:

        PHP-Code:
        if ($MamaPapa == '1') { 
        Wo kommt diese Variabele her?

        PHP-Code:
        $_SESSION['SessionName'
        Wofür benötigst du diese Variabele? Es gibt eine Funktion mit der du der aktuellen Session einen "namen" geben kannst. (http://php.net/session_name)

        PHP-Code:
        $ShowMenu $_SESSION['ShowMenu']; 
        ggf. solltest du irgendwo prüfen ob der Key im Array $_SESSION überhaupt existiert

        PHP-Code:
        if ($ShowMenu == '1') { 
        Oben schon und hier nochmal - wieso 1 in ''? 1 = Zahl -> integer | '1' = string ...
        Gruß,
        SebTM

        Kommentar


        • #5
          Hallo,

          erstmal Danke für deine Hinweise. Wie gesagt, ich hatte das Session Start im Post vergessen, kann passieren. Ich werde mir das Script nochmals genauer anschauen und mich wohl doch tiefer in das ganze einarbeiten müssen.

          Sorry aber das zeigt entweder das du Ungeeignet bist oder es einfach eine faule Ausrede ist!
          Wie erwähnt, ich möchte und kann das nicht vertiefen. Es gibt auch Menschen die einfach mal was in Ihrer Freizeit probieren möchten ohne tief in die Materie einzusteigen. Ich bin selber in Foren für Grafikdesign unterwegs, beherrsche Photoshop im Schlaf, beantworte hier auch Fragen von Anwendern die einfach mal im Photoshop "schnell" was brauchen ohne Ihnen die Grundlagen an die Hand geben zu müssen.

          Ich bin der Meinung dazu sind Foren da...

          Faule Ausrede
          Dann hätte ich wohl kaum angefangen es zu versuchen, sondern geschickt formuliert ob mir einer ein Script schreiben kann

          Kommentar


          • #6
            Für den Anfang schreib doch einfach mal ein
            PHP-Code:
            error_reporting(E_ALL); 
            an den Anfang deines Scriptes. evtl. kommt dann schon ein Fehler.
            Außerdem sollten Variablen immer einen Standardwert bekommen.
            PHP-Code:
            error_reporting(E_ALL);
                
            $_SESSION['ShowMenu'] = isset($_SESSION['ShowMenu']) ? $_SESSION['ShowMenu'] : 0// Menu auf 0 wenn Session Variabel noch nicht gesetzt
                
            $_SESSION['ShowMenu'] = (int) (isset($_GET['MamaPapa']) ? $_GET['MamaPapa'] : $_SESSION['ShowMenu']);

                
            // Debug Ausgabe
                
            var_dump($_SESSION['ShowMenu']);
                if (
            $_SESSION['ShowMenu'] == 1) { 

                   
            //Erweitertes Menü 

                
            } else { 

                  
            //Normales Menü 
                

            Vieles kann, wenig muss.

            Kommentar

            Lädt...
            X