allora, ho provato ad attivare il discorso del controllo sul cookie ma non mi funziona, non riesco neanche più ad accedere.
Non capisco cosa sbaglio e chiedo gentilmente a qualcuno più esperto di me se può dare un'occhiata a questi script e cosa c'è che non va.
Il problema è che non sempre c'è il cookie, se uno non vuole "ricordarsi" e quindi devo lavorare con le sessioni in modo che resti loggato.
index.php (pagina iniziale)
Codice PHP:
</head>
<?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
Codice PHP:
<html>
<?php
if(!isset($_SESSION))
{
session_start();
}
if (!isset($_SESSION["autorizzato"]) || $_SESSION["autorizzato"] != 1)
{
IF (!isset($_COOKIE['nome'])) {
echo "
<font color=666666 size='4'>Area riservata, accesso negato.
";
echo "
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)
Codice 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
Codice 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">[b]<font color=666666>ACCESSO AREA RISERVATA:</font>[/b]
</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>
<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 ci potrebbero essere un po' di strafalcioni, il fatto è che prima di attivare il discorso controllo cookie funzionava. Non so dove sbaglio....
GRAZIE!