Qualche dettaglio in più:
la pagina che mi dà l'errore descritto è quella di autenticazione alla struttura di backoffice.
Il codice che generava il form è il seguente:
PHP:
<?php // include('connect3.php'); ?>
<!DOCTYPE html>
<html>
<head>
<title>Collegati per amministrare il sito </title>
<!--Pannello di gestione creato da Mel Riccardo-->
<link href="admin.css" rel="stylesheet" type="text/css" />
<link href="backoffice.css" rel="stylesheet" type="text/css">
</head>
<body>
<form id="login" action="verify2.php" method="post">
<fieldset id="inputs">
<input id="username" name="username" type="text" placeholder="Username" autocomplete="off" autofocus required>
<input id="password" name="password" type="password" placeholder="Password" autocomplete="off" required>
</fieldset>
<fieldset id="actions">
<input type="submit" id="submit" value="Collegati">
<a href="../" id="back" class="h7b">Ritorna al sito</a>
</fieldset>
</form>
</body>
</html>
Dopo aver inserito utente e password, entra in gioco la pagina di verifica "Verify2.php":
PHP:
<?php session_start();
include 'connect3.php';
$username = $_POST['username'];
//sha1 cifra la password anche qui in questo modo corrisponde con quella del db
$password = sha1($_POST['password']);
//echo $username . ", " . $password;
if (!$result = $connessione->query("SELECT * FROM utentibo WHERE userName = '$username' AND password = '$password'")) {
echo "Errore della query: " . $connessione->error . ".";
exit();
}else{
// echo "e qui ancora bene"."<br>";
// conteggio dei record
if($result->num_rows > 0) {
// conteggio dei record restituiti dalla query
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
$cod = $row['userName'];
$unico = $row['unico'];
if ($cod == "") {
$trovato = 0;
}else{$trovato = 1;}
/* Username e password corrette */
if($trovato === 1) {
/*Registro la sessione*/
$_SESSION['autorizzato'];
$_SESSION["autorizzato"] = sha1($cod + $unico);
/*Registro il nome dell'utente*/
$_SESSION['cod'] = $cod;
/*Redirect alla pagina riservata*/
echo '<script language=javascript>document.location.href="partenza.php"</script>';
} else {
/*Username e password errati, redirect alla pagina di login*/
echo '<script language=javascript>document.location.href="index.php"</script>';
}
}
// liberazione delle risorse occupate dal risultato
$result->close();
}
}
// chiusura della connessione
$connessione->close();
?>
Gli utenti abilitati erano stati inseriti attraverso la pagine seguente (InserimantoUtentiBO.php):
PHP:
<?php session_start();
if (isset($_POST['esegui']))
inserisci();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DTeatro7|lab : Backoffice - Inserimento utenti BackOffice</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="contenitoreLogo"><img src="../images/logo_t7.gif" width="169" height="88" alt="teatro7" /></div>
<div id="ilform" class="h5b">
<form name="inserimento" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p align="center">
<label>Nome utente: </label><br />
<input name="utente" type="text" size="50" placeholder="Nome Utente" autocomplete="off" autofocus required /><br /></p>
<p align="center">
<label>Password: </label><br />
<input name="password" type="password" size="50" placeholder="Password" autocomplete="off" required /><br /></p>
<p align="center">
<input name="esegui" type="submit" value="Inserisci" />
</form>
<?
function inserisci() {
include 'connect.php';
$nome = $_POST['utente'];
$pass = $_POST['password'];
$c = uniqid (rand (),true);
$unico = sha1($c);
$query = ("INSERT INTO utentibo VALUES ('','$nome', sha1('$pass'), '$unico')");
$result = mysql_query($query);
mysql_close();
echo "<p align='center'>L'utente $nome è stato inserito</p>";
}
?>
</div>
</body>
</html>
Credo di aver capito che il problema sta nel fatto che due o tre anni fa, quando è stato scritto il codice, la password sia stata inserita con una chiave attualmente non più ritenuta sicura...
Di conseguenza FORSE (sempre se ho capito qualcosa...) basta variare il codice di inserimento degli utenti BO (BackOffice) per consentirne l'accesso.
O devo variare la struttura del campo contenente la password?
Grazie per l'aiuto.
A presto (spero)