Formular mit Session

Das ist mein Formular, mit Abfrage ob Pass und Username richtig sind:

[php]<?php
session_start();
include ‚func.php‘;

if(isset($_POST['login'])){
    $userid=check_user($_POST['username'], $_POST['password']);
    if($userid!=false){
        login($userid);
    }
    else{
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
    }
}
if(!logged_in()){
    echo'<form action="eingeloggt.php" METHOD="POST">
        <label>Username: </label><input type="text" name="username"><br>
        <label>Password: </label><input type="password" name="password"><br>
        <input type="submit" id="login" name="login" value="login">
    </form>';
}

?>[/php]Wenn ich jetzt jedoch auf die eingeloggt.php Seite weitergeleitet werde, merkt er sich das alles ned. Und wenn ich die login.php dann aufrufe bin ich wieder ausgeloggt, ohne das ich mich ausloggen musste.
Woran scheiterts hier!?

Was machen denn die Funktionen login($userid); und logged_in()? Irgendwo muss du den Loginstatus in der Session speichern ($_SESSION[„variable“]) und diese auch abrufen?!

Du hast ja auch keien Session gesetzt :wink:
Wenn ich deinen Code jetzt richtig verstanden habe, ist man in dem part eingeloggt
[PHP]
if($userid!=false){
login($userid);
}
[/PHP]
Wenn du davor jetzt noch
[PHP]
if($userid!=false){
$_SESSOIN[‚userid‘] = $userid;
login($userid);
}
[/PHP]
setzt, ist die Session gesetzt. Nun musst du nur noch auf jeder seite wo man eingeloggt ist überprüfen ob die Session auch aktiv ist.
[PHP]

<? if(isset($_SESSION['userid'])) { echo "eingeloggt"; } else { echo "erst einloggen"; } ?>

[/PHP]
Nicht zu vergessen ist, wenn man sich ausloggt musst du folgendes schreiben
[PHP]

<? session_destroy(); ?>

[/PHP]
Damit die Sessions auch nicht mehr Aktiv sind, so müsste es eigendlich klappen wobei es auch schönere lösungen wie diese gibt

mfg :wink:

Danke…

Das funktioniert leider nicht.

Die Session wird noch immer nicht gesetzt und das hängt noch immer am gleichen Prob wie vorher.

Hast du auf der eingeloggt seite auch
[PHP]

<? session_start(); ?>

[/PHP]
stehen?

Die schaut so aus:

[PHP]<?php
session_start();
include ‚func.php‘;

if(logged_in()){ // oder if(isset($_SESSION['userid']))
	echo 'eingeloggt';
}
else{
	echo 'nope';
}
echo '<form enctype="multipart/form-data" action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" METHOD="POST">';
echo '<input type="hidden" name="max_file_size" value="1000">';
echo 'Datei uploaden:<br>';
echo '<input name="thefile" type="file"><br>';
echo '<input type="submit" value="send"><br>';		
echo '</form><br>';
echo '<a href="logout.php">Log out</a>';

?>[/PHP]

Mhm ka,
also ich bau meine Loginsysteme mit dem ganz einfachen prinzip immer auf
[PHP]

<? //überprüfung der passwörter session_start(); if($pass == $pass2) { $_SESSION['login'] = "drin"; //dann noch ne weiterleitung ect } else { echo "pws stimmen ned"; } ?>

[/PHP]
Und eine geschützte seite sieht dann bei mir so aus
[PHP]

<? session_start(); if($_SESSION['login'] == "drin") { echo "eingeloggt"; } else { echo "bitte einloggen"; } [/PHP]

Kann es sein, dass es deswegen ned klappt, weil ich das ganze über ne MySql Datenbank mache und mir da ne Abfrage fehlt?

Das machen die ganzen Funktionen:

[PHP]<?php
function connect(){
define(‚MYSQL_HOST‘, ‚localhost‘);
define(‚MYSQL_USER‘, ‚xxx‘);
define(‚MYSQL_PASS‘, ‚xxx‘);
define(‚MYSQL_DATABASE‘, ‚xxx‘);
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die(„Es konnte keine Verbindung aufgebaut werden\n“.mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die(„Konnte „.MYSQL_DATABASE.“ nicht benutzen „.mysql_error());
}
function check_user($name, $pass){
$user = „SELECT UserID
FROM users
WHERE UserName='“.$name.“’ AND UserPass=MD5('“.$pass.„')
LIMIT 1“;
$result = mysql_query($user) OR die(mysql_error());

    if(mysql_num_rows($result) == 1){
		$user = mysql_fetch_assoc($result);
		return $user['UserID'];
	}
	else{
		return false;
	}
}
function login($userid){
    $sql="UPDATE users
    SET UserSession='".session_id()."'
    WHERE UserId=".$userid;
	
    mysql_query($sql);
} 
function logged_in(){
    $sql="SELECT UserId
    FROM users
    WHERE UserSession='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
	
    return ( mysql_num_rows($result)==1);
} 
function logout(){
    $sql="UPDATE users
    SET UserSession=NULL
    WHERE UserSession='".session_id()."'";
    
	mysql_query($sql);
} 

connect();

?>[/PHP]