Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    158
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Evidentemente le metti nel posto sbagliato

    $row = mysql_fetch_array($result);
    va prima di
    if ( $row['attivato'] == 1 )

    mentre
    $this->login_iduser = $row['id'];

    va prima di
    return TRUE;
    Grande si , era proprio quello il problema , e questa è fatta pure ... devo sistemare adesso soltanto il file php di conferma registrazione che mi va a modificare lo 0 in attivato ad 1 quando confermo l-email... pensavo che richiamando lo script responsabile della connessione a MySQL
    require 'Users.class.php';

    avrebbe fatto tutto lui ma a quanto pare c'è un problema...io comunque nello script responsabile della connessione ,
    nel campo password ho dovuto inserire la password per connettermi al dat
    abase altrimenti non mi funzionava, quindi presumo di si, utilizzo una password per la connesione al db
    ho anche qualche dubbio nella correttezza del codice del file conferma_reg.php... sto seguendo guide e bozze sparse un po ovunque nel web, quindi potreb
    be esserci qualche errore...a lei come sembra il codice?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    158
    intanto sono riuscito a implementare l invio della e-mail di registrazione...soltanto che quando l utente clicca sul link di conferma salta fuori un messaggio del genere :


    Warning: mysql_query(): Access denied for user 'u686410779'@'10.1.2.59' (using password: NO) in /home/u686410779/public_html/conferma_reg.php on line 23

    Warning: mysql_query(): A link to the server could not be established in /home/u686410779/public_html/conferma_reg.php on line 23
    Errore nella query SELECT id,username FROM users: Access denied for user 'u686410779'@'10.1.2.59' (using password: NO)



    il codice del file conferma_reg.php è il seguente:
    codice:
    <?php
    // richiamo lo script responsabile della connessione a MySQL
    require 'Users.class.php';
    
    if($_POST && isset($_GET['id']))
    {
        aggiorna_record();
    }
    
    else
        mostra_lista();
    
    function mostra_lista()
    {
        // mostro un eventuale messaggio
        if(isset($_GET['msg']))
            echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
    
        // preparo la query
        $query = "SELECT id,username FROM users";
    
        // invio la query
        $result = mysql_query($query);
    
        // controllo l'esito
        if (!$result) {
            die("Errore nella query $query: " . mysql_error());
        }
    
        echo '
        <table border="1">
            <tr>
                <th>username</th>
                <th>&nbsp;</th>
            </tr>';
    
        while ($row = mysql_fetch_assoc($result))
        {
            $username = htmlspecialchars($row['username']);
    
            // preparo il link per la modifica dei dati del record
            $link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
    
            echo "<tr>
                    <td>$username</td>
                    <td><a href=\"$link\">modifica</a></td>
                </tr>";
        }
    
        echo '</table>';
    
        // libero la memoria di PHP occupata dai record estratti con la SELECT
        mysql_free_result($result);
    
        // chiudo la connessione a MySQL
        mysql_close();
    }
    
    function aggiorna_record()
    {
        // recupero i campi di tipo "stringa"
        $username      = trim($_POST['username']);
        $email     = trim($_POST['email']);
        $messaggio = trim($_POST['messaggio']);
    
        // verifico se devo eliminare gli slash inseriti automaticamente da PHP
        if(get_magic_quotes_gpc())
        {
            $username     = stripslashes($username);
            $email     = stripslashes($email);
            $messaggio = stripslashes($messaggio);
        }
    
        // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        $username      = mysql_real_escape_string($username);
        $email     = mysql_real_escape_string($email);
        $messaggio = mysql_real_escape_string($messaggio);
    
    
        // preparo la query
        $query = "UPDATE users SET
                    attivato = 1 ,
                    WHERE id = $id";
    
        // invio la query
        $result = mysql_query($query);
    
        // controllo l'esito
        if (!$result) {
            die("Errore nella query $query: " . mysql_error());
        }
    
        // chiudo la connessione a MySQL
        mysql_close();
    
        $messaggio = urlencode('Registrazione avvenuta con successo');
        header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    }
    ?>

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Warning: mysql_query(): Access denied for user 'u686410779'@'10.1.2.59' (using password: NO) in /home/u686410779/public_html/conferma_reg.php on line 23
    Ti sta dicendo che c'è un problema di connessione al DB.
    Nello specifico ti stai collegando senza password, il tuo DB prevede l'uso di password per la connessione? Se la risposta è sì, allora aggiungila nel codice che esegue la connessione.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    158
    ho cambiato codice, ho fatto in questo modo :

    conferma_reg.php (il file a cui verranno rimandati gli utenti che cliccano nel link di conferma e che si occuper� di accedere al database e cambiare il valore dell utente nella colonna attivato da 0 a 1 )


    codice:
     <?php
    session_start();
    
    // controllo sul parametro d'invio
    if( isset($_POST['submit']) && (trim($_POST['submit']) == "Conferma") )
    { 
      // controllo sul formato dell'email
      if((!isset($_POST['email'])) || (!preg_match("/^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$/i", $_POST['email'])))
      {
        echo "Attenzione, formato email non valido.";
      }
      // controllo sul formato della password
      elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
      {
        echo "Attenzione, password non corretta.";
      }else{
        // se i parametri sono in formato corretto interroghiamo il database
        $email = $_POST['email'];
        $password = $_POST['password'];
    
        // includiamo il file di configurazione
        @include "Users.class.php";
    
        // controlliamo se i parametri sono presenti in tabella
        $ctrl_login = @mysql_query("SELECT id FROM users WHERE email='$email' AND password='$password'") or die (mysql_error());
        if(@mysql_num_rows($ctrl_login)==0)
        {
          // esito login negativo
          echo "Login incorretto.";
        }else{
          // esito login positivo quindi rendiamo l'utente attivo
          $obj = @mysql_fetch_object($ctrl_login) or die (mysql_error());
          $query_attivo = @mysql_query("UPDATE users SET attivato='1' WHERE id=".$obj->id) or die (mysql_error());
    
          // creiamo un id di sessione corrispondente all'utente
          $_SESSION['id'] = $obj->id;
    
          // redirect alla pagina degli iscritti
          @header("Location: iscritti.php");
        }
      } 
    }else{
      // form per la conferma
      ?>
    <h1>Modulo di conferma:</h1>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Email:<br>
    <input name="email" type="text" size="20"><br>
    Password:<br>
    <input name="password" type="password" size="20"><br>
    <input name="submit" type="submit" value="Conferma">
    </form>
      <?
    }
    ?>
    cosa fa questo script..praticamente l utente clicca nel link di registrazione, viene riportato nella pagina conferma_reg.php dove si trova davanti 2 form , uno per l email e uno per la password...per attivare l account deve inserirli e poi fare click sul tasto conferma....fino a qui tutto bene... il problema sorge appunto appena clicco nel tasto conferma... se i dati sono giusti una volta cliccato su conferma lo script dovrebbe entrare sul db e modificare il valore nella colonna attivato da 0 a 1 e nel frattempo rimandare l utente ad un pagina che ti dice che la registrazione � andata a buon fine (io l ho chiamata iscritti.php)

    iscritti.php
    codice:
    <?php
    session_start();
    
    // controlliamo se � stata inizializzata la sessione
    if(isset($_SESSION['id']))
    {
      //controllo id con esito positivo
      echo "Benvenuto! Processo di attivazione concluso positivamente!";
      $link_address = 'http://sitoprova.96.lt/login.php';
      echo "<a href='".$link_address."'>Clicca qui per andare nella pagina di accesso!</a>";
    }else{
      //controllo sessione con esito negativo
      @header("Location: conferma_reg.php");
    }
    ?>
    il problema � che quando clicco sul tasto conferma, mi salta fuori il famoso access denied

    codice:
    Access denied for user 'u686410779'@'10.1.2.59' (using password: NO)
    lo script quindi non riesce ad accedere al db e moficiare il valore dell utente

    dov� che sbaglio...su conferma_reg.php ho messo un

    codice:
     @include "Users.class.php";
    nel file users.class.php la parte di codice che si occupa della connesione al db dovrebbe essere questa...

    codice:
     // error_reporting(E_ALL | E_DEPRECATED | E_STRICT);  
          
        Class Users{  
            /******************************** 
            SETTING 
            *********************************/  
            // le credenziali di accesso al database  
            private $host_db = 'XXXXXXXXXX';  
            private $user_db = 'XXXXXXXXXX';  
            private $pass_db = 'XXXXXXXXXX';  
            private $name_db = 'XXXXXXXXXX';  
              
           
            /*risorse di connessione*/  
            protected $conn;  
            protected $selezione_db; 
       
              
            // il costruttore attiva la connessione a mysql  
            public function __construct(){  
                $this->connessione();  
                }  
    
            /****************** 
            CONNESSIONE A MYSQL 
            ******************/  
            protected function connessione(){  
                $this->conn = mysql_connect($this->host_db, $this->user_db, $this->pass_db) or die(mysql_error());  
                $this->selezione_db = mysql_select_db($this->name_db, $this->conn) or die(mysql_error());  
                return TRUE;  
                }
    ai tempi ho dovuto inserire la password per accedere al db perch� lasciando il campo vuoto dava problemi con registrazione e login degli utenti.. help

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    158
    uuuuuuuh ho risolto il problema della connessione al db..... rimane SOLTANTO un piccolo problemino ....quando inserisco e-mail e password nei form di attivazione mi riporta al messaggio di errore "login incoretto"...allora ho pensato...non è perchè la password sul database è criptata in SHA1 ...allora ho inserito la password criptata e va tutto a buon fine!! come faccio a criptare la password in sha1 su conferma_reg.php?


    questo è il codice

    codice:
     <?php
    session_start();
    
    // controllo sul parametro d'invio
    if( isset($_POST['submit']) && (trim($_POST['submit']) == "Conferma") )
    { 
      // controllo sul formato dell'email
      if((!isset($_POST['email'])) || (!preg_match("/^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$/i", $_POST['email'])))
      {
        echo "Attenzione, formato email non valido.";
      }
      // controllo sul formato della password
      elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
      {
        echo "Attenzione, password non corretta.";
      }else{
        // se i parametri sono in formato corretto interroghiamo il database
        $email = $_POST['email'];
        $password = $_POST['password'];
    
        // richiamo il file di configurazione
    require 'config.php';
    
    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';
    
        // controlliamo se i parametri sono presenti in tabella
        $ctrl_login = @mysql_query("SELECT id FROM users WHERE email='$email' AND pass='$password'") or die (mysql_error());
        if(@mysql_num_rows($ctrl_login)==0)
        {
          // esito login negativo
          echo "Login incorretto.";
        }else{
          // esito login positivo quindi rendiamo l'utente attivo
          $obj = @mysql_fetch_object($ctrl_login) or die (mysql_error());
          $query_attivo = @mysql_query("UPDATE users SET attivato='1' WHERE id=".$obj->id) or die (mysql_error());
    
          // creiamo un id di sessione corrispondente all'utente
          $_SESSION['id'] = $obj->id;
    
          // redirect alla pagina degli iscritti
          @header("Location: iscritti.php");
        }
      } 
    }else{
      // form per la conferma
      ?>
    <h1>Modulo di conferma:</h1>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Email:<br>
    <input name="email" type="text" size="20"><br>
    Password:<br>
    <input name="password" type="password" size="20"><br>
    <input name="submit" type="submit" value="Conferma">
    </form>
      <?
    }
    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2017
    Messaggi
    158
    risolto anche questo potete chiudere.

    codice:
    $password = sha1 ($_POST['password']);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.