• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular mit Session

Status
Für weitere Antworten geschlossen.

krackmoe

Neues Mitglied
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>';
    }
?>
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 ;)
Wenn ich deinen Code jetzt richtig verstanden habe, ist man in dem part eingeloggt
PHP:
if($userid!=false){ 
            login($userid); 
        }
Wenn du davor jetzt noch
PHP:
if($userid!=false){ 
$_SESSOIN['userid'] = $userid;
            login($userid); 
        }
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";
}
?>
Nicht zu vergessen ist, wenn man sich ausloggt musst du folgendes schreiben
PHP:
<?
session_destroy();
?>
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 ;)
 
Danke..

Das funktioniert leider nicht.

Die Session wird noch immer nicht gesetzt und das hängt noch immer am gleichen Prob wie vorher.
 
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>';
?>
 
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";
}
?>
Und eine geschützte seite sieht dann bei mir so aus
PHP:
<?
session_start();
if($_SESSION['login'] == "drin") {
          echo "eingeloggt";
} else {
          echo "bitte einloggen";
}
 
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();
?>
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben