Errore di connessione a DB MySql

Discussione in 'PHP' iniziata da gandalf1959, 5 Giugno 2019.

  1. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    193
    Mi Piace Ricevuti:
    1
    Punteggio:
    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
     
  2. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    193
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    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)
     
  3. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.518
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    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
     
  4. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    193
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    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
     
  5. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.518
    Mi Piace Ricevuti:
    123
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    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
     
  6. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    193
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    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
     
Sto caricando...

Condividi questa Pagina