[PHP] AutoLogin

  • Creatore Discussione Creatore Discussione luigi777
  • Data di inizio Data di inizio

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, ho questo autologin che mi stampa i dati solo se faccio "autologin".
Mi dite come mai?

questo è i login.php
PHP:
<?php
session_start();
require_once(dirname(__FILE__) . '/../inc.php');

	if(isset($_POST['Login']))
	{
		if($_POST['username']!='' && $_POST['password']!='')
		{
				$query = mysql_query('SELECT * FROM users WHERE Username = "'.mysql_real_escape_string($_POST['username']).'" AND Password = "'.mysql_real_escape_string(md5($_POST['password'])).'"');
			
			if(mysql_num_rows($query) == 1)
			{
				$row = mysql_fetch_assoc($query);
				if($row['Active'] == 1)
				{
					session_start();
					$_SESSION['user_id'] = $row["ID"];
					$_SESSION['username'] = $row["Username"];
					$_SESSION['password'] = $row["Password"];
					
						if(isset($_POST['autolog'])){
							setcookie('autolog','loggato',time()+864000);
							setcookie('user',$row["Username"],time()+864000);
							setcookie('user_id',$row["ID"],time()+864000);
							setcookie('pass',$row["Password"],time()+864000);
							}
					
					
					header("Location: mem.php");
				}
				else {
					$error = 'Your membership was not activated. Please open the email that we sent and click on the activation link';
				}
			}
			else {		
				$error = 'Login failed !';		
			}
		}
		else {
			$error = 'Please user both your username and password to access your account';
		}
	}
?>

<?php if(isset($error)){ echo $error;}?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
	User<input type="text" id="username" name="username" size="32" value="" />
	Pass<input type="password" id="password" name="password" size="32" value="" />
	Ricordami <input type="checkbox" name="autolog" value="1"/>
	<input type="submit" name="Login" value="Login" />
</form>

questo è il check che sta nelle pagine riservate:
PHP:
<?php
if (!isset($_SESSION['username']) && !isset($_SESSION['password']) && !isset($_SESSION["user_id"])) {
    $loggato = 0; //NON loggato
 
    }else {
        $loggato = 1;  //LOGGATO!
    }
if($_COOKIE['autolog'] == 'loggato'){
    $_SESSION['username'] = $_COOKIE['user'];
    $_SESSION['password'] = $_COOKIE['pass'];
	$_SESSION['user_id']  = $_COOKIE["user_id"];
    $loggato = 1;
    //rinfresca cookies
    $usern = $_SESSION['username'];
    $passw = $_SESSION['password'];
	$userid = $_SESSION['user_id'];
   
	setcookie('autolog','loggato',time()+864000);
	setcookie('user',$usern,time()+864000);
	setcookie('user_id',$userid,time()+864000);
	setcookie('pass',$passw,time()+864000);
					
    }
?>

e questo è l'area riservata:
PHP:
<?php
require_once(dirname(__FILE__) . '/check.php');
?>					
 <strong><?php echo $usern;?></strong>
 <strong><?php echo $userid;?></strong>
 <strong><?php echo $passw;?></strong>
Mi sapete dire come fare prenderli tutte due sia sessioni/cookie nello solito tempo.

Grazie mille.

Per favore uno che mi aiuti.

Grazie.
 
Non ho afferrato bene qual'è il problema.. cmq non salvare i dati dell'utente nei cookie, li devi salvarci solo un valore che sta a dire se vuoi l'autologin o meno (che sarà riconosciuto dal codice php), io avrei dato alle sessioni una lunga vita.. ma se proprio vuoi usare i cookie, devi criptarli..

Nel secondo e terzo codice che hai postato non cè il session_start(), mentre nel primo ce ne sono 2 :P
 
ciao, quindi devo prendere solo username e id ? (senza la password).?

No sai perché questo lo trovato su un'altro forum e lo copiato e modificato alle mie esigenze ... solo che non so cosa devo prendere i cookie.


solo questi dici?

Ho visto anche altri esempi che usano setcookie per fare il Remember login.

Mi dici meglio come fare?

Ho vedo se era il problema dei session_start che non lo messi.

ora controllo

ciao.
grazie mille.
 
ciao, ho provato ma nulla.

ora ti posto i codici modificati:
mem.php (Area riservata):
PHP:
<?php
session_start();
require_once(dirname(__FILE__) . '/check.php');
if(isset($usern)&& isset($userid) && isset($_SESSION["username"]) && isset($_SESSION["user_id"]))
{

?>
 <strong><?php echo $usern;?></strong>
 <strong><?php echo $userid;?></strong>
 <strong><?php echo $passw;?></strong>
<?php
echo $_SESSION["username"];
echo $_SESSION["user_id"];
}else{
echo "Accesso non consentito";
}
?>

login.php
PHP:
<?php
require_once(dirname(__FILE__) . '/../inc.php');

	if(isset($_POST['aggiorna']))
	{
		if($_POST['username']!='' && $_POST['password']!='')
		{
				$query = mysql_query('SELECT * FROM users WHERE Username = "'.mysql_real_escape_string($_POST['username']).'" AND Password = "'.mysql_real_escape_string(md5($_POST['password'])).'"');
			
			if(mysql_num_rows($query) == 1)
			{
				$row = mysql_fetch_assoc($query);
				if($row['Active'] == 1)
				{
					session_start();
					
					$_SESSION['user_id'] = $row["ID"];
					$_SESSION['username'] = $row["Username"];
					$_SESSION['password'] = $row["Password"];
					
						if(isset($_POST["autolog"]) == 1){
							setcookie('autolog','loggato',time()+864000);
							setcookie('user',$row["Username"],time()+864000);
							setcookie('user_id',$row["ID"],time()+864000);
							setcookie('pass',$row["Password"],time()+864000);
							}
					
					
					header("Location: mem.php");
				}
				else {
					$error = 'Your membership was not activated. Please open the email that we sent and click on the activation link';
				}
			}
			else {		
				$error = 'Login failed !';		
			}
		}
		else {
			$error = 'Please user both your username and password to access your account';
		}
	}
?>

<?php if(isset($error)){ echo $error;}?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
	User<input type="text" id="username" name="username" size="32" value="" />
	Pass<input type="password" id="password" name="password" size="32" value="" />
	Ricordami <input type="checkbox" name="autolog" value="1"/>
	<input type="submit" name="aggiorna" value="Login" />
</form>

e il check.php

PHP:
<?php
session_start();
if (!isset($_SESSION['username']) && !isset($_SESSION['password']) && !isset($_SESSION["user_id"])) {
    $loggato = 0; //NON loggato
 
    }else {
        $loggato = 1;  //LOGGATO!
    }
if($_COOKIE['autolog'] == 'loggato'){
    $_SESSION['username'] = $_COOKIE['user'];
    $_SESSION['password'] = $_COOKIE['pass'];
	$_SESSION['user_id']  = $_COOKIE["user_id"];
    $loggato = 1;
    //rinfresca cookies
    $usern = $_SESSION['username'];
    $passw = $_SESSION['password'];
	$userid = $_SESSION['user_id'];
   
	setcookie('autolog','loggato',time()+864000);
	setcookie('user',$usern,time()+864000);
	setcookie('user_id',$userid,time()+864000);
	setcookie('pass',$passw,time()+864000);
					
    }
?>

idee??

Dopo levo il cookie della password . che non so come mai quello che ha postato il codice ha messo pure il cookie della password.

L'ho trovato su altervista. ora non mi ricordo più che post era.

Mi poi dare una mano?

grazie mille.
 

Discussioni simili