Portal > Foren > PHP > PHP-Programmierung > Session Problem...
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 10.02.2007, 14:53 Nach oben    #1
-Antichrist.Superstar-
 
Benutzerbild 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
the_cRu ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.02.2007, 15:18 Nach oben    #2
Christian Mühlroth
 
Benutzerbild 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.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.02.2007, 15:22 Nach oben    #3
-Antichrist.Superstar-
 
Benutzerbild 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
the_cRu ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.02.2007, 19:18 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
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 ?
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.02.2007, 20:06 Nach oben    #5
-Antichrist.Superstar-
 
Benutzerbild 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.
the_cRu ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.02.2007, 20:56 Nach oben    #6
Benutzer
 
Benutzerbild von xabbuh
 
Registriert seit: 03.12.2005
Ort: Osnabrück
Beiträge: 76
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
xabbuh ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.02.2007, 22:39 Nach oben    #7
-Antichrist.Superstar-
 
Benutzerbild 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
the_cRu ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.02.2007, 16:49 Nach oben    #8
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 428
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
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.02.2007, 19:56 Nach oben    #9
-Antichrist.Superstar-
 
Benutzerbild 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;

the_cRu ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.02.2007, 20:03 Nach oben    #10
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 428
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"]) && [...]
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.02.2007, 20:09 Nach oben    #11
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 403
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
Jojo ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.02.2007, 20:20 Nach oben    #12
-Antichrist.Superstar-
 
Benutzerbild 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
the_cRu ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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 35 36 37 38 39 40 41 42 43 44 45