login mit session und cookie

L

lape

hallo
ich habe nun ein session basiertes loginsystem programmiert.
wie kann ich es realisieren, dass zusätzlich zu den sessions auch cookies angelegt werden.
wenn ich beides paralel mache bekomme ich die fehlermeldung "...header already sent..."
 
Hi, willkommen im Forum.

Es ist eigentlich kein Problem sowohl Sessions als auch Cookies zu nutzen, auch ohne Nutzung der Output Control. Ich biete auf meiner Seite beim Login auch die Moeglichkeit an Cookies fuer ein automatisches Login beim naechsten Besuch setzen zu lassen.

Hier mal meine login.php als Beispiel. Alles was Du evtl. vermisst (z.B. session_start()) wird bereits in anderen Scripts ausgefuehrt, da bei mir alles in die index.php includet wird (und nicht gerade wenig).
PHP:
<?php
$changesection='main';
$subtitle='Login';
if (isset($_POST['login']))
	{
		if ((!empty($_POST['username'])) && (!empty($_POST['password'])))
			{
				$users=mysql_query("select * from `users` where `username`='".quote_string($_POST['username'])."' limit 1",$db);
				$user=mysql_fetch_assoc($users);
				if (!empty($user))
					{
						$cryptedpassword=sha1($_POST['password']);
						if ($cryptedpassword==$user['password'])
							{
								if (isset($_POST['savelogin']))
									{
										setcookie('id',$user['id'],time()+2592000);
										setcookie('password',$cryptedpassword,time()+2592000);
									}
								$_SESSION['id']=$user['id'];
								$_SESSION['userlevel']=$user['userlevel'];
								mysql_query("update `sessions` set `userid`='".$user['id']."' where `sessionid`='".$sessionid."'",$db);
								header('Location:'.$sessioncheckcaller.$sessionparm);
								exit;
							}
						else
							{
								$changes[$changesection].='Invalid username/password';
							}
					}
				else
					{
						$changes[$changesection].='Invalid username/password';
					}
			}
		else
			{
				if (empty($_POST['username']))
					{
						$changes[$changesection].='No username<br>';
					}
				if (empty($_POST['password']))
					{
						$changes[$changesection].='No password<br>';
					}
			}
	}
$changes[$changesection].='<form method="post" action="'.$sessioncheckcaller.'?subsite=login.php'.$sessionparm_link.'">';
$changes[$changesection].='<table class="vistable">';
$changes[$changesection].='<tr><td>Username:</td><td><input type="text" name="username"></td></tr>';
$changes[$changesection].='<tr><td>Password:</td><td><input type="password" name="password"></td></tr>';
$changes[$changesection].='</table>';
if ($session['cookies']==1)
	{
		$changes[$changesection].='Stay logged in:';
		$changes[$changesection].='<input type="checkbox" name="savelogin"><br>';
	}
$changes[$changesection].='<input type="submit" name="login" value="Login">';
$changes[$changesection].='</form>';
?>
 
Abhängig von der Sitzungskonfiguration wird automatisch versucht, die Sitzungs-ID in einem Cookie zu übermitteln.
Falls du jedoch zusätzlich noch einen Cookie setzen möchtest und die genannte Fehlermeldung erhälst, solltest du mal nach den Stichworten der Fehlermeldung suchen. Diese Thematik wurde bereits ausgiebig behandelt.

Ach und bitte versuche dich an die Regeln der deutschen Rechtschreibung zu halten.
 
Zurück