Errore di connessione a DB MySql

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
oltre un anno fa avevo terminato un lavoro di programmazione relativo all'inserimento di ricette in un database.
Ora devo riprendere in mano il progetto e, a parte che dopo un anno non ricordo quasi nulla di PHP, quando effettuo la connessione ricevo l'errore:
"Connessione fallita: Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)."
Ho provato a cercare in rete il significato e le possibili soluzioni, ma le discussioni più recenti risalgono al 2014 e comunque non chiariscono (almeno a me) dove possa essere il problema.
Premetto che fino a qualche mese fa la procedura funzionava correttamente.
A cosa è dovuto questo errore?
Grazie per l'aiuto
 
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)
 
io capisco una cosa diversa,
l'errore é generato dalla connessione al db, non dipende dalla colonna delle password che gestisci nella tabella,
se tu potessi verificare esattamente quale riga php, ovvero comando mysqli genera l'errore,
potresti orientarti meglio nella sua risoluzione
nulla del codice pubblicato aiuta a capire da dove nasce l'errore, che dovrebbe essere generato all'interno di "connect3.php"
in particolare potresti leggere e attuare i suggerimenti della pagina
https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-secure-auth.html

fai sapere
 
Hai ragione.
Ho testato il file connect3.php e l'errore è lì.
Ora sto cercando di capire come mai fino a 5/6 mesi fa funzionava e ora no...
Ho contattato il provider intanto per verificare che i dati di connessione non siano cambiati.
Ti terrò aggiornato
Intanto grazie
 
Ora sto cercando di capire come mai fino a 5/6 mesi fa funzionava e ora no...
Ho contattato il provider intanto per verificare che i dati di connessione non siano cambiati.
io penso che non siano cambiati i dati di connessione, ma la "gestione" della password usata proprio per la connessione
la pagina che ti ho indicato tratta proprio questo argomento
il provider probabilmente ha aggiornato la versione di mySQL facendo nascere il problema
contattali e vedi con loro se possono apportare le modifiche citate nella pagina che ti ho suggerito
 
Ciao,
in effetti il provider mi ha risposto che "evidentemente" la password utilizzata dall'utente in questione non è sicura e mi suggerisce quindi semplicemente di cambiare la password.
Ora provo a farlo.
Comunque grazie per le indicazioni.
Alla prossima
 

Discussioni simili