Bug im AutoLogin

Ok, ab und zu taucht das problem auf (auf jedenfall mit dem Firefox 2.0) - Wär gut, wenn dasein paar weitere Leute testen könnten, damit ich den Fehler irgendwie ausmerzen kann.
 
Ich hab ein neues Problem:

Ich werde trotz gesetztem Cookie nicht eingeloggt auf meiner Website. We kann das sein? ich verzweifel langsam an dem Script :/
 
So wie es aussieht wird ja erstmal erwartet, dass "kecks" per $_GET uebergeben wird, und nur dann wird auch automatisch eingeloggt. Du solltest lieber auf diesen Wert verzichten und einfach pruefen ob es einen entsprechenden Cookie gibt.
Weiterhin solltest Du auch diesen noch mit der Datenbank vergleichen, sonst kann ja jeder mit irgendwelchen gefaelschten Cookies bei Dir rein.

Hier mal der Code den ich hier auf der Arbeit verbaut habe:
PHP:
if ((!empty($_COOKIE['id'])) && (!empty($_COOKIE['password'])) && (empty($_SESSION['id'])))
	{
		$id=$_COOKIE['id'];
		$password=$_COOKIE['password'];
		$users=mysql_query("select * from users where id='".$id."'",$mydb);
		$user=mysql_fetch_assoc($users);
		$sessionid=session_id();
		$logintime=time();
		mysql_query("update users set logintime='".$logintime."' where id='".$user['id']."'",$mydb);
		mysql_query("update sessions set userid='".$user['id']."' where sessionid='".$sessionid."'",$mydb);
		if ($user['password']==$password)
			{
				$_SESSION['id']=$user['id'];
			}
	}
 
Naja, ich prüfe in der index.php, ob der Cookie gesetzt mit folgendem Code:
PHP:
if(isset($_COOKIE['LogIn_Username']) && isset($_COOKIE['LogIn_Password']) && !isset($_SESSION["userid"]))
{
    header ("Location: login_user.php?kecks=true&link=".rawurlencode("http://".$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']));
    exit;
}
Von daher müsste er sich doch einloggen !?
 
Hallo zusammen,

ich scheine immernoch einen Bug im Auto-Login Script zu haben, deshalb hoffei ch, ihr könnt mir vielleicht Code-Zeilen oder Tipps geben, die funktionieren, daher stell ich hier einfach mal meinen Code rein sowie einen Screenshot der lustigen Fehlermeldung, die immer mal wieder auftaucht. Diesmal ist der Cookie erst neu geschrieben worden, manchmal hab ich auch mehr als nur einmal denselben Cookie. Liegt vielleicht auch am Firefox 2.0 !?

index.php
PHP:
<?php 
	session_start ();
	header('Content-Type: text/html; charset=UTF-8'); 
	$now = time();
	
	if(isset($_COOKIE['LogIn_Username']) && isset($_COOKIE['LogIn_Password']) && !isset($_SESSION["userid"]))
	{
        header ("Location: login_user.php?kecks=true&link=".rawurlencode("http://".$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']));
        exit;
    }
    if(isset($_COOKIE['LogIn_Username']) && isset($_COOKIE['LogIn_Password']) && isset($_SESSION["userid"]))
	{
		$pw = $_COOKIE['LogIn_Password'];
		setcookie('LogIn_Username',$_SESSION["nickname"],$now);
		setcookie('LogIn_Password',$pw,$now);
	}

	$myob=isset($_SERVER["HTTP_ACCEPT_ENCODING"])&&eregi("gzip, deflate", $_SERVER["HTTP_ACCEPT_ENCODING"]);
	if($myob)
	{
		ob_start("ob_gzhandler");
	}
	else
	{
		ob_start();
	}
	ini_set('arg_separator.output', '&amp;');
	 
	include("connect.php"); // und dann anderer Code
?>

login_user.php
PHP:
<?php 
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
include("connect.php");

if(isset($_GET["kecks"]) && $_GET["kecks"] == true)
{
	$name = $_COOKIE['LogIn_Username'];
	$pw = $_COOKIE['LogIn_Password'];
	$autologin = 'on';
}
else
{
	$name = $_POST["name"];
	$pw = md5($_POST["pwd"]);
	if(isset($_POST["autologin"]) && $_POST["autologin"] == 'on')
		$autologin = 'on';
	else
		$autologin = 'off';
}
$sql = "SELECT userid, benutzername FROM users WHERE benutzername LIKE '".mysql_real_escape_string($name)."' AND passwort = '".mysql_real_escape_string($pw)."'";
$result = mysql_query ($sql) or die(mysql_error()); 

if (mysql_num_rows ($result) > 0) 
{
	// Benutzerdaten in ein Array auslesen. 
	$data = mysql_fetch_row ($result);
	
	// Sessionvariablen erstellen und registrieren 
	$_SESSION["userid"] = $data[0]; 
	$_SESSION["nickname"] = $data[1];
	
	$sql = "SELECT wgg.websitegruppenglobalname FROM websitegruppenglobal wgg JOIN websitegruppenglobalmitglieder wggm ON wggm.websitegruppenglobalid = wgg.websitegruppenglobalid WHERE userid = ".$data[0];
	$resource = mysql_query($sql) or die(mysql_error());
	$group = mysql_fetch_array($resource);
	$_SESSION["globalgroup"] = $group[0];
	
	$sql = "SELECT sessionid FROM users_online WHERE userid = ".mysql_real_escape_string($data[0]);
	$resource = mysql_query($sql) or die (mysql_error());
	if(mysql_num_rows($resource) > 0)
	{
		$sessionold = mysql_fetch_array($resource);
		session_id($sessionold[0]);
	}
	
	if($autologin == 'on')
	{
		$time = time() + (60*60*24*365*2);
		setcookie('LogIn_Username',$_SESSION["nickname"],$time);
		setcookie('LogIn_Password',$pw,$time);
	}

	header ("Location: ".rawurldecode($_GET["link"]));
	exit;
} 
else 
{ 
	header ("Location: index.php?fehler=1");
	exit;
} 
?>
Ich hoffe mit der genauer spezifizierten Aussage kann mir geholfen werden, denn dieses problem nervt mittlerweile ganz schön, da auf dem Live-System über das Forum wichtige Schritte diskutiert werden für die weitere Entwicklung



Gruß Radhad

Nachtrag:
War zwar absichtlich ein eigener Beitrag, aber mit der Überschrift ist das ja egal - zumindest hilft es wenn jemand nach dem Thema sucht. Sorry wenn das falsch von mir gedacht war.
 

Anhänge

  • 26930attachment.jpg
    26930attachment.jpg
    41 KB · Aufrufe: 7
Zuletzt bearbeitet:
Hat denn wirkilich niemand eine Idee wie man dieses Problem lösen kann? Ich bin auch gewillt den Code komplett neu zu schreiben.



Gruß Radhad
 

Neue Beiträge

Zurück