+ Antworten
Ergebnis 1 bis 12 von 12

Thema: Session Problem...

  1. #1
    -Antichrist.Superstar- Avatar von the_cRu
    Registriert seit
    07.02.2007
    Ort
    .sH!
    Beiträge
    29

    Standard Session Problem...

    hallöchen,
    ich bins mal wieder... mit einem anderen problem.
    habe die sufu scho benutzt, google auch, aber nichts gescheites gefunden.

    ich habe nen kleines login script gebastelt, welches auf sessions aufbaut.
    ich versuch mal alles gut zu erklären.

    ein user surft auf die seite xyz (in diesem falle die index.php),
    dort bekommt er gleich am anfang ein
    PHP-Code:
    session_start();
    $_SESSION["auth"] = 1
    aufgedrückt.
    die login.php wird includiert und beinhaltet auch noch ein
    PHP-Code:
    session_start();
    $_SESSION["auth"] = 1
    .

    er gibt seine daten an und wird eingelogt. die if schleife bei der abfrage (ob die daten ok sind) weißt dann ein $_SESSION["auth"] = 2; an. die session-id wird auch auf der seite angezeigt (mit echo session_id();). der wert von $_SESSION["auth"] ist auch 2 (testweise habe ich mir des ausgeben lassen).

    gut, nun denkt man ja das alles in ordnung sein müsste... naja, pustekuchen. wenn ich z.b. auf eine interne seite möchte, lässt er mich nicht durch. die interne seite wird mit der auth.php geprüft.

    die sieht so aus:

    PHP-Code:
    <?php

        
    if($_SESSION['auth'] != 2) {
            echo 
    "Fehler:<br /> Session ist fehlerhaft! <a href='index.php'>Zurück</a>";
            echo 
    "<br />auth-ID: " $_SESSION["auth"];
            exit;
        }
        
    ?>
    (aus testzwecken habe ich auch hier den wert für "auth" ausgeben lassen, der steht auf 1, was ja schlauerweise den fehler verursacht).

    die interne seite wird mir
    PHP-Code:
        session_start();
        include(
    "auth.php"); 
    gestartet.

    nun hab ich langsam kein plan mehr wo der fehler ist. weil für mich sieht alles richtig aus...

    wenn ihr mehr code oder beschreibungen braucht reich ich sie euch gerne.
    ich hoffe ihr habt das so jetzt verstanden *fg.

    LG

  2. #2
    Erfahrener Benutzer Avatar von Chr!s
    Registriert seit
    04.09.2005
    Ort
    Nürnberg
    Beiträge
    561

    Standard

    Zeig uns doch mal zusammenhängenden Code, da wo $_SESSION['auth']auf 2 gesetzt wird, und anschließend wo es abgefragt wird, das konnte ich aus deinem Code nicht entnehmen.

  3. #3
    -Antichrist.Superstar- Avatar von the_cRu
    Registriert seit
    07.02.2007
    Ort
    .sH!
    Beiträge
    29

    Standard

    oki doki,
    hier ein teil der login.php

    PHP-Code:
            // DB-Verbindung aufbauen
            
    include("inc/config.inc.php");
        
            
    $nickname mysql_real_escape_string($_POST['nickname']);
            
    $password mysql_real_escape_string($_POST['password']);
        
            
    $sql "SELECT nick, pw FROM ik1_user WHERE nick = '".$nickname."' AND pw = '".$password."'";
            
    $result mysql_query($sql);
            
    $row mysql_fetch_array($result);
        
            if(
    $row['nick'] == $nickname AND $row['pw'] == $password) {
            
                    
    $_SESSION["auth"] = 2;    
                    echo 
    "<br />Du hast dich erfolgreich eingeloggt. <a href='index.php?suckz=intern'>Weiter...</a>";
                    echo 
    "<br />auth-ID: " var_dump($_SESSION["auth"]);
                    echo 
    "<br />Deine Session: " session_id();
                    
            } else {
            
                    echo 
    "<br /><b>Fehler:</b><br />Dein Log In ist fehlgeschlagen! <a href=\"index.php\">Zurück</a>";
                    
            }
            
            if(
    $_SESSION['auth'] == 0) {
                    echo 
    "<br /><b>Fehler:</b><br />Session existiert nicht! <a href=\"index.php\">Zurück</a>";
            } 
    ganz oben von der login.php steht:
    PHP-Code:
    session_start();
    $_SESSION["auth"] = 1
    wenn man sich erfolgreich eingeloggt hat wird ja auth = 2 getzt und man bekommt den link zur internen, die so aussieht: intern.php

    PHP-Code:
    <?php
        session_start
    ();
        include(
    "auth.php");
    ?>

    <img src="images/info.gif"> <b>Intern:</b><br />
    und die auth.php, die prüft ob die session vorhanden ist, bzw. der richtige wert gesetzt ist so:

    PHP-Code:
    <?php

        
    if($_SESSION['auth'] != 2) {
            echo 
    "Fehler:<br /> Session ist fehlerhaft! <a href='index.php'>Zurück</a>";
            echo 
    "<br />auth-ID: " var_dump($_SESSION["auth"]);
            exit;
        }
        
    ?>
    (aus testzwecken etwas modifiziert)

    hoffe damit könnt ihr mehr anfangen.

    LG

  4. #4
    Erfahrener Benutzer Avatar von CIX88
    Registriert seit
    18.03.2005
    Beiträge
    709

    Standard

    Hmmm, wenn die index.php schon session_start() hat, und login.php mittels include eingebunden wird, muss in login.php nicht nochmal session_start() stehen.
    Oder hab eich das jetzt falsch verstanden ?

  5. #5
    -Antichrist.Superstar- Avatar von the_cRu
    Registriert seit
    07.02.2007
    Ort
    .sH!
    Beiträge
    29

    Standard

    so, hab die ganzen dateien nochmal überprüft und geändert.

    index.php hat:
    session_start();
    $_SESSION["auth"] = 1;

    login.php (welche included wird) hat:
    am anfang $_SESSION["auth"] = 1;
    wenn aber die if abrage richtig war (login) wird $_SESSION["auth"] = 2; gesetzt. sprich man surft jetzt mit auth = 2 rum (und hat somit eigentlich zugang zum internen bereich).

    die datei intern.php hat:
    nur include("auth.php");

    die auth.php sieht aus wie im ersten post.

  6. #6
    Benutzer Avatar von xabbuh
    Registriert seit
    03.12.2005
    Ort
    Osnabrück
    Beiträge
    98

    Standard

    Hallo,

    hast du dir ganz am Ende der login.php mal den Inhalt des Arrays $_SESSION ausgeben lassen? Ist dort noch der richtige Wert gesetzt?
    Kann es auch sein, dass du die Datei login.php in intern.php mittels include() einbindest und der Wert deswegen überschrieben wird?

    Grüße

  7. #7
    -Antichrist.Superstar- Avatar von the_cRu
    Registriert seit
    07.02.2007
    Ort
    .sH!
    Beiträge
    29

    Standard

    also an der login selber kommt folgendes,

    auth-ID: int(1)
    Deine Session: 1d7b2e9aeefae03af8e1d84061ead1cf

    was ja auch richtig so ist.
    wenn die daten überprüft werden wird ja auth auf zwei gesetzt,
    wenn ich mir dann die session ausgebe wieder, steht auch auth-ID: 2 da

  8. #8
    Erfahrener Benutzer Avatar von Xean
    Registriert seit
    17.08.2005
    Beiträge
    483

    Standard

    Steht am Anfang der index.php
    wirklich
    PHP-Code:
    session_start();
    $_SESSION["auth"] = 1
    wenn ja,
    dann ist hier dein fehler:

    PHP-Code:
    if($row['nick'] == $nickname AND $row['pw'] == $password) {
           
      
    $_SESSION["auth"] = 2;    
      echo 
    "<br />Du hast dich erfolgreich eingeloggt. <a href='index.php?suckz=intern'>Weiter...</a>";
      echo 
    "<br />auth-ID: " var_dump($_SESSION"auth" ]);
      echo 
    "<br />Deine Session: " session_id();
                    

    mit dem link "index.php?suckz=intern" gehst du auf die index.php setzt $_SESSION["auth"] auf 1 und gehst dann weiter auf die interne datei.

    versuch mal mit
    PHP-Code:
    session_start();
    if(
    $_SESSION["auth"] != 2){
      
    $_SESSION["auth"] = 1;

    in der index.php das abzufangen
    "Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, der wird am Ende beides verlieren" (Benjamin Franklin)

  9. #9
    -Antichrist.Superstar- Avatar von the_cRu
    Registriert seit
    07.02.2007
    Ort
    .sH!
    Beiträge
    29

    Standard

    args, denkfehler meinerseits...
    soweit klappts. nur wenn ich die logout.php aufrufe (über index.php?suckz=logout) dann bekomme ich die notice

    Notice: Undefined index: auth in C:\xampp_apache\xampp\htdocs\test\index.php on line 6

    das ist die zeile "if($_SESSION["auth"] != 2){"

    wenn ich des ganze mit isset "prüfe", klappts au net. sprich der fehler kommt immer wieder, ok, der hinweis.

    so habe ichs mal geändert... wie gesagt, gleicher hinweis.
    PHP-Code:
    session_start();
    if(isset(
    $_SESSION["auth"]) != && $_SESSION['auth'] !=2){
      
    $_SESSION["auth"] = 1;


  10. #10
    Erfahrener Benutzer Avatar von Xean
    Registriert seit
    17.08.2005
    Beiträge
    483

    Standard

    wie wäre es mit

    PHP-Code:
    if(!isset($_SESSION["auth"])){
      
    $_SESSION["auth"] = 1;

    dann hättest du das problem los, welches komm wird, wenn du nich $_SESSION["auth"] = 3 oder = 4 usw... haben würdest...

    außerdem stimmt dashier nicht:
    isset($_SESSION["auth"]) != 2 && [...]

    es heißt wenn dann:
    isset($_SESSION["auth"]) && [...]
    "Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, der wird am Ende beides verlieren" (Benjamin Franklin)

  11. #11
    Irgendwas mit e Avatar von Jojo
    Registriert seit
    26.08.2005
    Ort
    Karlsruhe
    Beiträge
    498

    Standard

    Als kleine Anmerkung:
    Diese Konstruktion
    PHP-Code:
    isset($_SESSION["auth"]) != 
    ist sowieso sehr abendteuerlich,

    Überleg mal, was du damit überprüfst:
    Du überprüfst damit, ob der Rückgabewert von isset() ungleich 2 ist, was er aber immer ist, da isset() entweder TRUE (1) oder FALSE (0) zurückliefert.
    Ich denke, das war nicht so gemeint, oder? ^^
    In the beginning was the word
    and the word was content-type: plain/text

    heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int

  12. #12
    -Antichrist.Superstar- Avatar von the_cRu
    Registriert seit
    07.02.2007
    Ort
    .sH!
    Beiträge
    29

    Standard

    danke dir,
    scheint nun richtig zu funktionieren...

    Zitat Zitat von Jojo Beitrag anzeigen
    Als kleine Anmerkung:
    Diese Konstruktion
    PHP-Code:
    isset($_SESSION["auth"]) != 
    ist sowieso sehr abendteuerlich,

    Überleg mal, was du damit überprüfst:
    Du überprüfst damit, ob der Rückgabewert von isset() ungleich 2 ist, was er aber immer ist, da isset() entweder TRUE (1) oder FALSE (0) zurückliefert.
    Ich denke, das war nicht so gemeint, oder? ^^
    ja, wenn man von morgens bis abends code vor sich hat schleichen schnell fehler ein.
    bei mir zumindest ;)

    danke dir

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Session Sicherheitsfrage
    Von phpdev im Forum PHP-Programmierung
    Antworten: 24
    Letzter Beitrag: 23.08.2007, 22:38
  2. Programmierer für kleines Session Problem gesucht
    Von denis_hanke im Forum Gesuche
    Antworten: 2
    Letzter Beitrag: 27.06.2007, 15:07
  3. Mails empfangen / versenden "Access to default session denied"
    Von Robinson im Forum Allgemeine Java-Programmierung
    Antworten: 0
    Letzter Beitrag: 14.12.2005, 15:11
  4. OSX + Eclipse 3.1 Problem
    Von bacarni im Forum Eclipse
    Antworten: 3
    Letzter Beitrag: 29.07.2005, 21:19
  5. [PHP] Daten per Session übergeben
    Von Ben im Forum Tutorials
    Antworten: 0
    Letzter Beitrag: 14.12.2004, 14:34

Lesezeichen

Berechtigungen

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

Impressum · Tutorials · Nutzungsbedingungen · thematisch sortierte Linklisten · Spendenaufruf · Team · Partnerprojekte

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34