Session wird nach Formular nicht angezeigt

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

  • Session wird nach Formular nicht angezeigt

    Ich habe folgendes Problem:
    - Ich sende ein Formular ab das [COLOR=red]login.php[/COLOR] aufruft.
    - [COLOR=red]login.php[/COLOR] setzt [COLOR=red]$_SESSION['s_grundberechtigung']=1;[/COLOR] und geht dann zu [COLOR=red]kunde.php[/COLOR]
    - [COLOR=red]kunde.php[/COLOR] sollte jetzt einfach [COLOR=red]$_SESSION['s_grundberechtigung'][/COLOR] ausgeben.

    Das tut es aber nicht. Wenn ich aber zurück gehe auf [COLOR=red]index.php[/COLOR], den normalen Link zu [COLOR=red]kunde.php[/COLOR] betätige wird dann [COLOR=red]$_SESSION['s_grundberechtigung'][/COLOR] ausgegeben.


    Im "richtigen Leben" hängt eine DB dran etc... aber zum Fehler finden erst mal vereinfacht.

    INDEX.PHP:
    PHP-Code:
    <?PHP
    session_start
    (); // session starten
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>-</title>
    </head>
    <body>
    <form name="form1" method="post" action="login.php">
    <input type="text" name="benutzer" id="benutzer" size="10" maxlength="20" />
    <input type="password" name="passwort" id="passwort" size="10" maxlength="20" />
    <input type="image" src="links/but_login.gif" name="submit" id="submit" value="Senden" />
    </form>

    <a href="kunde.php">Test</a>


    </body>
    </html>
    LOGIN.PHP:
    PHP-Code:
    <?PHP
    session_start
    ();

    if(isset(
    $_POST['submit_x']) AND isset($_POST['submit_y']))
    {
    $_SESSION['s_grundberechtigung']=1;
    //echo ($_SESSION['s_grundberechtigung']);
    header('Location: [url]http://[/url]'.$_SERVER['SERVER_NAME'].'/kunde.php');
    }
    else
    {
    header('Location: [url]http://[/url]'.$_SERVER['SERVER_NAME'].'/index.php');
    }
    ?>
    KUNDE.PHP:
    PHP-Code:
    <?PHP
    session_start
    ();
    echo 
    $_SESSION['s_grundberechtigung'];

    ?>

  • #2
    Ich gehe mal davon aus, dass die <a>-Tags im header vom Forum gemacht wurden, oder?


    Wie es aussieht überträgst du nich die SessionID. Die brauchst du aber. Außerdem musst du auf genau die Domain weiterleiten auf der der Benutzer grade war. Also z.B. würde http://www.example.com weitergeleitet auf http://example.com die Session sofort zerstören.

    Kannst dir ja mal die Konstante PHPSESSID ausgeben lassen und die ggf. einfach an die URL dranhängen.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      wenn ich die weiterleitung mit [COLOR=red]header('Location: kunde.php');[/COLOR] gehts.
      aber ich habe mal gelesen das bei [COLOR=red]header('Location:[/COLOR] immer ein [COLOR=red]http[/COLOR] dazu gehört.
      Laut PHP Doku funktioniert die weiterleitung in einigen clients sonst nicht.

      Um die Session mit header location weiterzugeben steht folgendes:
      [COLOR=blue]Anmerkung: Die Session-ID wird nicht mit dem Location-Header übermittelt, außer Sie haben session.use_trans_sid eingeschaltet. Sie muss daher manuell durch Verwendung der SID-Konstante hinzugefügt werden.[/COLOR]

      Wie mach ich das?
      Zuletzt geändert von kendal; 20.03.2007, 09:33.

      Kommentar


      • #4
        Original geschrieben von kendal
        Sie muss daher manuell durch Verwendung der SID-Konstante hinzugefügt werden.

        Wie mach ich das?
        Fragst du das ernsthaft - wie du an einen String eine Konstante anhängst ...?


        Mit dem wundervollen, leider viel zu unbekannten Verkettungsoperator, dem .
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          ja leider weiss ich nicht was ich da genau anhängen muss

          Kommentar


          • #6
            Original geschrieben von kendal
            Sie muss daher manuell durch Verwendung der SID-Konstante hinzugefügt werden.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Wenn das Manual von "der SID-Konstante" spricht - was meinst du wohl, wie die dann heisst? HUGO? OTTO? ...?

              Ausserdem hättest du das Kapitel über Sessions ja mal aufmerksam und vollständig lesen können ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Beispiel:

                PHP-Code:
                "<a href=http://www.blablubblablub/login.php?" SID ">Login</a>" 

                Kommentar

                Lädt...
                X