Salve, da stamattina cerco di venire a capo di un problema che, rispetto ad altre procedure, sembra semplice, ma che mi sta bloccando.
Ho questo form di autenticazione, pagina form_accesso.php
Codice PHP:
<form id="form1" name="form1" method="post" action="login.php">
<p><strong>Accesso utenti</strong></p> <p>Username <input type="text" name="username" id="username" /></p> <p>Password <input type="password" name="password" id="password" /></p> <?php if(isset($_GET["cod"])) { $codice=$_GET["cod"]; if($codice=="1") { echo "<font color='#FF0000'>Username o password errati"; } if($codice=="2") { echo "<font color='#FF0000'>Arrivederci!</font>"; } if($codice=="3") { echo "<font color='#FF0000'>Non fare il furbo! Devi prima loggarti!</font>"; } } ?> <p><input type="submit" name="button" id="button" value="Login" /></p></form>
e questa pagina che riceve i dati, login.php
Codice PHP:
<?php
$user = isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''; if (isset($user)) { $username=$user; } else { $username=""; }
$pass = isset($_POST['password']) ? htmlspecialchars($_POST['password']) : ''; if (strpos($pass, '%') !== false) { header("location: http://gaspare.altervista.org/accesso.php?cod=4"); } else if(isset($pass)) { $password=$pass; } else { $password=""; }
session_start();
$db_username = '*****'; $db_password = '*****'; $db_host = '*****'; $db_name = 'my_*****';
$link = mysqli_connect("$db_host", "$db_username", "$db_password", "$db_name") or die("Errore connessione");
if (mysqli_connect_errno()) { echo "Errore apertura database"; }
$sql="SELECT * FROM utenti WHERE username='$username' AND password='$password' AND attivo=1";
$miorecord=mysqli_query($sql);
$count=mysqli_num_rows($miorecord);
if($count==1) { while ($riga = mysqli_fetch_array($miorecord)) { $_SESSION['username']= $riga['username']; $_SESSION['loggato']= "si"; header("location: http://*****/gestione.php"); } } else { header("location: http://*****/form_accesso.php?cod=1"); }?>
Succede che, sebbene nella tabella utenti sia presente il record cercato col SELECT, e attivo sia = 1, l'if finale mi ricarica form_accesso.php con cod = 1.
Non capisco dove sia l'errore, dato che un login.php, privo di campo attivo, funziona perfettamente in un altro sito, anche con codifica md5 della password.