Ciao a tutti,
sono nuovo del forum e volevo gentilmente chiedervi un aiuto per quanto riguarda uno script che uso per l'autenticazione. Funziona tutto fino a quando non provo ad attivare la funzione "ricordami".
Prima lavoravo solo con le sessioni, pass criptata sha1 sul db di mysql, creavo la sessione ok.
Avevo bisogno di poter accedere senza ridigitare le pass e ho pensato bene (?) di creare un cookie se l'utente scelglie la casella "ricordami" e se le credenziali sono corrette. Un cookie per l'user e uno per la pass in sha1, ogni volta che l'utente torna sul sito controllo con il db su mysql le credenziali contenute nei cookie.
Ma non va, non ho nessun cookie nel pc, inserisco le credenziali corrette ma mi torna sempre nella pagina di login....
posto il tutto....
index.php (pagina iniziale)
check_login.php
(verifica se l'utente ha già una sessione loggata o un cookie
login_verify.php
fa la verifica delle credenziali inserite nel form o del cookie memorizzato (lo controllo ogni volta che accede l'utente anche se ha il cookie)
e in ultimo, se dovesse servire riporto anche il file del form per l'inserimento delle credenziali....
main_login.php
Essendo uno script aggiustato un po' alla volta (non creato da me neofita in materia) ci potrebbero essere un po' di strafalcioni, il fatto è che prima di attivare il discorso controllo cookie funzionava. Non so dove sbaglio....
sono nuovo del forum e volevo gentilmente chiedervi un aiuto per quanto riguarda uno script che uso per l'autenticazione. Funziona tutto fino a quando non provo ad attivare la funzione "ricordami".
Prima lavoravo solo con le sessioni, pass criptata sha1 sul db di mysql, creavo la sessione ok.
Avevo bisogno di poter accedere senza ridigitare le pass e ho pensato bene (?) di creare un cookie se l'utente scelglie la casella "ricordami" e se le credenziali sono corrette. Un cookie per l'user e uno per la pass in sha1, ogni volta che l'utente torna sul sito controllo con il db su mysql le credenziali contenute nei cookie.
Ma non va, non ho nessun cookie nel pc, inserisco le credenziali corrette ma mi torna sempre nella pagina di login....
posto il tutto....
index.php (pagina iniziale)
PHP:
<?php
include("check_login.php");
#$nick = $_SESSION['nick']; non so se serve questa definizione
?>
<body>
Benvenuto nell'area riservata!
</body>
....
check_login.php
(verifica se l'utente ha già una sessione loggata o un cookie
PHP:
<html>
<?php
if(!isset($_SESSION))
{
session_start();
}
if (!isset($_SESSION["autorizzato"]) || $_SESSION["autorizzato"] != 1)
{
IF (!isset($_COOKIE['nome'])) {
echo "<br><br><font color=666666 size='4'>Area riservata, accesso negato.<br>";
echo "<p>Per effettuare il login clicca <a href='main_login.php'><font
color='blue'>qui</font></a>.</p>";
die;
}
echo '<script language=javascript>document.location.href="login_verify.php"</script>';
}
?>
</html>
login_verify.php
fa la verifica delle credenziali inserite nel form o del cookie memorizzato (lo controllo ogni volta che accede l'utente anche se ha il cookie)
PHP:
<html>
<head></head>
<body>
<?php
ob_start();
if(!isset($_SESSION))
{
session_start();
}
$log = mysql_connect("localhost","root","") or die("cannot connect");
mysql_select_db("sito", $log) or die("cannot select DB");
IF (isset($_COOKIE['nome'])) {
$nick = $_COOKIE['nome'];
$pass = $_COOKIE['password'];
goto a;
}
# PRIMA DI SALVARE I DATI, EFFETTUA UN CONTROLLO DEI CAMPI
if (!isset($_POST['nick']) || !isset($_POST['pass'])) {
exit;
}
if (empty($_POST['nick']) || empty($_POST['pass'])) {
echo '<script language=javascript>document.location.href="main_login.php"</script>';
}
// username and password inviati dal form
$nick=strip_tags($_POST['nick']);
$pass=strip_tags($_POST['pass']);
a:
// protezione MySQL injection
$nick = stripslashes($nick);
$pass = stripslashes($pass);
$nick = mysql_real_escape_string($nick);
$pass = mysql_real_escape_string($pass);
$pass = sha1($pass);
$sql="SELECT * FROM users WHERE nickname='$nick' and passsword='$pass'";
$result=mysql_query($sql);
# SE NON TROVA TALE OCCORRENZA EFFETTUA REDIRECT AL LOGIN
if(mysql_num_rows($result) != 1){
mysql_close();
echo '<script language=javascript>document.location.href="main_login.php"</script>';
}
# CREDENZIALI OK - NEL CASO IN CUI L'OCCORRENZA ESISTE CREA LA SESSIONE
$_SESSION["autorizzato"] = 1;
$_SESSION['nick'] = $nick;
if (isset($_POST['ricorda'])) {
setcookie("nome", $nick, time()+2592000);
setcookie("password", $pass, time()+2592000);
}
// Redirect alla pagina riservata
echo '<script language=javascript>document.location.href="index.php"</script>';
mysql_close();
ob_end_flush(); ?>
</body>
</html>
e in ultimo, se dovesse servire riporto anche il file del form per l'inserimento delle credenziali....
main_login.php
PHP:
<html>
<head>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="apple-touch-icon" href="icon_ipad.jpg"/>
<title>PANEL CONTROL</title>
</head>
<body>
<form name="form1" method="post" action="login_verify.php">
<td>
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong><font color=666666>ACCESSO AREA RISERVATA:</font></strong><br><br></td>
</tr>
<tr>
<td width="100"><font color=666666>Nome utente</font></td> <td width="12">:</td>
<td width="100"><input name="nick" type="text" id="nick"></td>
</tr>
<tr>
<td><font color=666666>Password</font></td> <td>:</td>
<td><input name="pass" type="text" id="pass"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td align="right"><input type="submit" name="Submit" value="Entra"></td>
</tr>
<tr>
<td><br><input type="checkbox" name="ricorda"><font color=666666>ricordami</font></td>
<td> </td>
<td> </td>
</tr>
</table>
</td>
</form>
</body>
</html>
Essendo uno script aggiustato un po' alla volta (non creato da me neofita in materia) ci potrebbero essere un po' di strafalcioni, il fatto è che prima di attivare il discorso controllo cookie funzionava. Non so dove sbaglio....