Запомняне на потребителско име в login форма

bganonymous

Registered
Някой може ли да направи във този login.php файл, функция за запомняне на потребителското име (без паролата). Тоест: когато потребителя е затворил браузъра си без да е натиснал logout бутона - следващия път на полето потребителско име да пише потребителското име с което се е логнал. Тоест: да стане ето така:
Код:
<input name="username" type="text" size="30" class="usernamebg" value="тук потребителското име" />

Но, без да е нужно checkbox за отбелязване за да се запомни...

Ето кода на PHP формата:
Код:
<?php
if($_POST['login']) {
if($_POST['username'] != NULL && $_POST['password'] != NULL) {
$username = ($_POST['username']);
$password = ($_POST['password']);
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$my = mysql_fetch_array($do);
$do = mysql_query($query);
$row = mysql_fetch_array($do);
if($username == $row['username'] && $password == $row['password']) {
session_register("username");
session_register("password");
$iplastlogin = $_SERVER['REMOTE_ADDR'];
$datelastlogin = date('d.m.Y H:i:s');
$query=mysql_query("UPDATE `users` SET `iplastlogin` = '$iplastlogin', `datelastlogin` = '$datelastlogin', `logintimes` = logintimes + 1 WHERE `id` = $row[id]") or die(mysql_error());
echo "<div class='success-box'>Вие влязохте успешно! Ще бъдете пренасочени към вашият акаунт след броени секунди...</div>";
echo "<meta http-equiv='refresh' content='0; url=my.php' />";
}
else { echo '<div class="error-box">Въвели сте грешно потребителско име и/или парола! Моля, опитайте отново.</div>'; }
}
}
ob_end_flush();
?>

Ето HTML формата:
Код:
<form action="" method="POST">
<p class="textbg">Потребителско име / Играч:</p>
<p class="textbg"><label><input name="username" type="text" size="30" class="usernamebg" value="" /></label></p>
<p class="textbg">Парола на акаунта:</p>
<p class="textbg"><label><input name="password" type="password" size="30" class="passwordbg" value="" /></label></p>
<input type="submit" name="login" value="Влизане" tabindex="3" class="big-btn grey" /><br />
</form>

Благодаря предварително! :)
 
Това може да го направиш, като сетнеш една бисквитка, после във формата, проверяваш ако е има тази бисквитка, покажи му името или го логни направо.

setcookie();


Ако потребителя си е изключил бисквитките, този метод няма да работи.
 
няма такива хора.. ако има значи .. или са ботове .. или .. няма друго обяснение .. що някой БИ си изключил бизквитките .. ?!

Както и дае .. ето ти кода
PHP:
<form method='post' action=''>

	Потребител:
	<br/>
	<input type='text' name='username' value="<?php echo $_COOKIE['ses_username'];?>"/>
	<br/>
	
	Парола: 
	<br/> 
	<input type='password' name='password' value=""/>
	<br/>
	 
	 <label><input type='checkbox' checked  name='rememberme' value="true"/> Запомни ме </label>
	 
	 <br/>
	 <br/>
	 <input type='submit' name='login'	value='Вход' />
</form>
<?php
if($_POST['login']) {

	if($_POST['username'] != NULL && $_POST['password'] != NULL) {
	
		$username = ($_POST['username']);
		$password = ($_POST['password']);
		$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
		$my = mysql_fetch_array($do);
		$do = mysql_query($query);
		$row = mysql_fetch_array($do);
		
		if($username == $row['username'] && $password == $row['password']) {
			session_register("username");
			session_register("password");
			$iplastlogin = $_SERVER['REMOTE_ADDR'];
			$datelastlogin = date('d.m.Y H:i:s');
			
			if($_POST['rememberme'] == "true") // правим проверка дали е цъкнато "Запомни ме"
			{  
			  $dni = 10; // Колко дни да важи .. . м/у 10 и 50 .. е нормалното
			  setcookie("ses_username", $row['username'], (time() + (84600 * $dni)),  "/" ); // тука се слага бисквитката
			}
			
			$query=mysql_query("UPDATE `users` SET `iplastlogin` = '$iplastlogin', `datelastlogin` = '$datelastlogin', `logintimes` = logintimes + 1 WHERE `id` = $row[id]") or die(mysql_error());
			echo "<div class='success-box'>Вие влязохте успешно! Ще бъдете пренасочени към вашият акаунт след броени секунди...</div>";
			echo "<meta http-equiv='refresh' content='0; url=my.php' />";
		}
		else 
		{
		echo '<div class="error-box">Въвели сте грешно потребителско име и/или парола! Моля, опитайте отново.</div>'; 
		}
}
}
ob_end_flush();
?>


За повече инфо -> http://bg2.php.net/manual/bg/function.setcookie.php
 
Мерси много! :) А как става това: когато потребителя е натиснал чекбокса за запомняне - сесията да трая примерно 7 дни, а когато не е натиснал чекбокса за запомняне - когато затвори браузъра и отвори сайта - пак да трябва да се логва? Благодаря предварително!
 
сесията НЕ може да трае 7 дни .. тя може да трае само и единствено до затваряне на браузара ..
 
M1tq96 каза:
сесията НЕ може да трае 7 дни .. тя може да трае само и единствено до затваряне на браузара ..
Точно за това се слагат бисквитки с потребителското име и паролата, ако е натиснал чекбокс-а. Задължително минаваш паролата през md5 функцията преди да я запишеш. Така всеки който влезе го проверяваш за тази бисквитка и ако я има сравняваш с даните от ДБ. Ако всичко е точно му дигаш сесията.
 

Back
Горе