• User

    Ok TheDarkita per la pagina di reset nel caso l'utente avesse perso la sua pass, ma non hai ancora risposto nel caso l'utente si vuole cancellare dalla registrazione, sia nel caso della prima registrazione e anche nel caso avesse perso la sua pass come nell'esempio del reset.php, visto che sono due tabelle ben distinte:

    • utenti
      e
    • utenti_recupero
      grazie

  • ModSenior

    Ciao arkom,

    Devi creare un metodo di funzionamento simile al reset della password che invece di reimpostare la password, fa una query di delete dell'utente.


  • User

    Penso di avere capito, lo script dovrebbe essere questo per la tabella **utenti **e cosi lo stesso per la tabella utenti_recupero (io ho cambiato il nome della variabile cho ho chiamato "delete"😞

    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    // Prelevo il codice trasmesso come variabile GET, il contenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
    $delete = $_GET['delete'];

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc())
        $delete = addslashes($delete);
    
    // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice
    $query_recupero = mysql_query("SELECT r_utente FROM utenti WHERE delete = '$delete' LIMIT 1");
    
    // La richiesta non esiste
    if(mysql_num_rows($query_recupero) == 0)
        die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai gi&agrave; effettuato la cancellazione,<br />
    
    • o avevi già reimpostato la password e dovrai<br />
    • usare il secondo form per la cancellazione<br />
      Hai seguito un link errato');
      // La richiesta esiste, elimino la richiesta
      else
      mysql_query("DELETE FROM utenti WHERE delete = '$delete' LIMIT 1");
      ?>
      [/PHP]

    Penso che sia giusto. puoi confermare.
    ciao


  • ModSenior

    Cosi non stai usando la seconda tabella...
    Ma stai solo usando la tabelle utenti, quindi non dovrebbe andare bene.


  • User

    Ciao Thedarkita, sempre io che rompo...

    Adesso mi stampa questo errore:
    Warning: mail() [function.mail]: SMTP server response: 503 5.5.2 Need Rcpt command. in D : \ Inetpub \ webs \ associazioneconsumatorieuropeieu \ auth \ reset.php on line 45
    Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!

    Sulla linea 45 c'è questo:
    [php]
    <?php
    mail($mail, 'Reset Password - Area privilegi Consumatori Europei', $message, $headers);

    die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
    

    ?>
    [php]

    PS: Ho fatto degli spazi solo perchè non mi acettava i link


  • ModSenior

    In $message cosa ci hai messo?


  • User

    image


  • User Attivo

    Ciao Thedarkita ti vorrei fare una domanda riguardo alla creazione di un avatar, io ho letto lo script per l'upload delle immagini
    htp://wwwgiorgiotave*it/forum/scripting-e-risorse-utili/101524-script-classe-per-lupload.html

    però ho notato che questo script mi cairca l'immagine ma io come posso richiamarla mi era venuta un idea, quella che mi permette di rinominare l'immagine con l'id del utente durante l'upload, ma come posso fare?

    GRAZIE SPERO CHE MI RISPONDERAI!!!!!!! :ciauz:


  • ModSenior

    Ciao Zomer,

    Per quanto riguarda l'id dell'utente è contenuto in $_SESSION['login'], per quanto riguarda il resto devi cheidere nel thread dedicato a quel tutorial, perchè qui siamo offtopic.


  • ModSenior

    BlueDragon89,

    Prova cosi, ricontrollando ho visto che la variabile $mail era vuota, ho fatto un join nella query per recuperarmi l'email dell'utente che ha richiesto il recupero password:

    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
    $code = $_GET['code'];

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc())
        $code = addslashes($code);
    
    // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice
    $query_recupero = mysql_query("SELECT utenti_recupero.r_utente,utenti.mail FROM utenti_recupero INNER JOIN utenti ON utente.id=r_utente WHERE code = '$code' LIMIT 1");
    
    // La richiesta non esiste
    if(mysql_num_rows($query_recupero) == 0)
        die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai gi&agrave; modificato la tua password<br />- Hai seguito un link errato');
    

    // La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
    else
    mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");

    // Inseriscol'id dell'utente recuperato mediante la query in un array
    $recupero = mysql_fetch_array($query_recupero);
    
    // Creo una password di 8 caratteri alfanumerici
    $randomcode  = '';
    for($x=1; $x<=8; $x++)
        $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4
    
    // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database
    $hashrandomcode = md5($randomcode);
    
    // Aggiorno la password nel database
    mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error());
    
    // Inviamo l'email all'utente
    $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password &egrave;: '.$randomcode;
        // Header dell'email, per mandarla in formato html
        $headers = "From: NomeSito <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($recupero['mail'], 'Reset password - Tutorial Area Privata', $message, $headers);
    
    die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
    

    ?>
    [/php]


  • User Attivo

    image


  • User

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\associazioneconsumatorieuropeieu\auth\reset.php on line 16
    Link non valido, i motivi potrebbero essere i seguenti:

    • Hai già modificato la tua password
    • Hai seguito un link errato

    [php]
    (line 16) if(mysql_num_rows($query_recupero) == 0)
    die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già modificato la tua password<br />- Hai seguito un link errato');
    [/php]


  • User

    Mi è venuto il dubbio che fosse il server che magari non registrava le modifiche e invece anche scaricando il file e confrontandoli sono uguali.. giusto per togliermi il dubbio.


  • ModSenior

    Ho dimenticato di mettere il nome della tabella nel join.
    Vedi cosi:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
    $code = $_GET['code'];

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc())
        $code = addslashes($code);
    
    // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice
    $query_recupero = mysql_query("SELECT utenti_recupero.r_utente,utenti.mail FROM utenti_recupero INNER JOIN utenti ON utente.id=utenti_recupero.r_utente WHERE code = '$code' LIMIT 1");
    
    // La richiesta non esiste
    if(mysql_num_rows($query_recupero) == 0)
        die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai gi&agrave; modificato la tua password<br />- Hai seguito un link errato');
    

    // La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
    else
    mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");

    // Inseriscol'id dell'utente recuperato mediante la query in un array
    $recupero = mysql_fetch_array($query_recupero);
    
    // Creo una password di 8 caratteri alfanumerici
    $randomcode  = '';
    for($x=1; $x<=8; $x++)
        $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4
    
    // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database
    $hashrandomcode = md5($randomcode);
    
    // Aggiorno la password nel database
    mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error());
    
    // Inviamo l'email all'utente
    $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password &egrave;: '.$randomcode;
        // Header dell'email, per mandarla in formato html
        $headers = "From: NomeSito <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($recupero['mail'], 'Reset password - Tutorial Area Privata', $message, $headers);
    
    die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
    

    ?>
    [/php]


  • User

    @BlueDragon89 said:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Inetpub\webs\associazioneconsumatorieuropeieu\auth\reset.php on line 16
    Link non valido, i motivi potrebbero essere i seguenti:

    • Hai già modificato la tua password
    • Hai seguito un link errato

    [php]
    (line 16) if(mysql_num_rows($query_recupero) == 0)
    die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai già modificato la tua password<br />- Hai seguito un link errato');
    [/php]

    Stessa cosa sai? non è cambiato il risultato... ma solo io ho questo problema o nessuno ha installato lo script?


  • ModSenior

    Vedi cosi:
    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
    $code = $_GET['code'];

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc())
        $code = addslashes($code);
    
    // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice
    $query_recupero = mysql_query("SELECT utenti_recupero.r_utente,utenti.mail FROM utenti_recupero INNER JOIN utenti ON utenti.id=utenti_recupero.r_utente WHERE code = '$code' LIMIT 1") or die(mysql_error());
    
    // La richiesta non esiste
    if(mysql_num_rows($query_recupero) == 0)
        die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai gi&agrave; modificato la tua password<br />- Hai seguito un link errato');
    

    // La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
    else
    mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");

    // Inseriscol'id dell'utente recuperato mediante la query in un array
    $recupero = mysql_fetch_array($query_recupero);
    
    // Creo una password di 8 caratteri alfanumerici
    $randomcode  = '';
    for($x=1; $x<=8; $x++)
        $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4
    
    // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database
    $hashrandomcode = md5($randomcode);
    
    // Aggiorno la password nel database
    mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['id']}' LIMIT 1") or die(mysql_error());
    
    // Inviamo l'email all'utente
    $message = 'Gentile Utente, Abbiamo provvduto a modificare la sua password.<br />La sua nuova password &egrave;: '.$randomcode;
        // Header dell'email, per mandarla in formato html
        $headers = "From: NomeSito <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($recupero['mail'], 'Reset password - Tutorial Area Privata', $message, $headers);
    
    die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
    

    ?>
    [/php]
    Appena ho un attimo mi configuro lo script in locale, che facciamo prima 🙂


  • User

    image


  • User

    @Andrez said:

    Edit
    *Inizia i messaggi con una maiuscola e termina con un punto.

    Grazie di avermi modificato il post e sopratutto di averlo cancellato..mi sembra un po' esagerato ma non discuto... Ok scrivere in italiano e non spezzare le parole (tipo sms) ma non mi sembrava di aver scritto qualche bestialità per cui se invece di un punto ce ne sono due... il messaggio rimane chiaro a chiunque anche ed eventuali "non italiani". Scusate in ogni caso.

    Per non andare off-topic comunque penso di aver scritto che non mi prendeva la nuova password che diversamente da altri tentativi proprio non mi dava. Faccio volentieri da cavia Thedarkita. =]


  • ModSenior

    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Prelevo il codice trasmesso come variabile GET, il cotnenuto della variabile è nell'url della pagina per questo facilmente modificabile da tutti e bisogna fare opportuni controlli quando la utilizziamo
    $code = $_GET['code'];

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc())
        $code = addslashes($code);
    
    // Cerco se c'è un utente registrato che ha effettuato la richiesta ed è stato assegnato questo codice
    $query_recupero = mysql_query("SELECT utenti_recupero.r_utente,utenti.mail FROM utenti_recupero INNER JOIN utenti ON utenti.id=utenti_recupero.r_utente WHERE code = '$code' LIMIT 1") or die(mysql_error());
    
    // La richiesta non esiste
    if(mysql_num_rows($query_recupero) == 0)
        die('Link non valido, i motivi potrebbero essere i seguenti:<br />- Hai gi&agrave; modificato la tua password<br />- Hai seguito un link errato');
    

    // La richiesta esiste, elimino la richiesta e procedo a reimpostare una nuova password
    else
    mysql_query("DELETE FROM utenti_recupero WHERE code = '$code' LIMIT 1");

    // Inseriscol'id dell'utente recuperato mediante la query in un array
    $recupero = mysql_fetch_array($query_recupero);
    
    // Creo una password di 8 caratteri alfanumerici
    $randomcode  = '';
    for($x=1; $x<=8; $x++)
        $randomcode = (($x%2 == 0) ? $randomcode.rand(0,9) : $randomcode.chr(rand(97,122))); // Facciamo un ciclo da 1 a 8, per generare 8 caratteri, sfruttiamo la variabile contatore controllando se è pari o dispari. Se è pari aggiungiamo alla stringa un numero, se è dispari agiungiamo un carattere dell'alfabeto. Avremo cosi in $randomcode una stringa del tipo a1b2c3d4
    
    // Nel database per motivi di sicurezza inseriamo le password in hash md5, quindi la convertiamo in md5 per poter effettuare l'update nel database
    $hashrandomcode = md5($randomcode);
    
    // Aggiorno la password nel database
    mysql_query("UPDATE utenti SET pass = '$hashrandomcode' WHERE id = '{$recupero['r_utente']}' LIMIT 1") or die(mysql_error());
    
    // Inviamo l'email all'utente
    $message = 'Gentile Utente, Abbiamo provveduto a modificare la sua password.<br />La sua nuova password &egrave;: '.$randomcode;
        // Header dell'email, per mandarla in formato html
        $headers = "From: NomeSito <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($recupero['mail'], 'Reset password - Tutorial Area Privata', $message, $headers);
    
    die('Le abbiamo un email contenente la Sua nuova password, controlli la Sua casella email!');
    

    ?>
    [/php]


  • User Attivo

    Salve ragazzi vi volevo chiedere perche mi dà questo errrore!? :bho:

    Parse error: parse error, expecting ','' or ';'' in 😄 \ Programmi \ EasyPHP 3.0 \ www \ login \ registrati . php on line 83Il codice è questo

    [php]
    <?php
    // Includo la connessione al database
    require('../config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
    }
    
    
    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
        die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
        die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {
    
        // Crypt della password per garantire una miglior sicurezza
        $pass = md5($pass);
    
    
        // Genero una stringa casuale di Attivazione
        $attivazione = '';
        for($x=1; $x<=32; $x++)
        $attivazione.=rand(0,9);
        $attivazione = md5($attivazione);
        $message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="ht**://w**.sito*ext/attivazione.php?code='.$attivazione.'">Attiva account</a>';
        // Header dell'email, per madnarla in formato html
        $headers = "From: NomeSito <[email protected]>\r\n";
        $headers .= "Reply-To: [email protected]\r\n";
        $headers .= "Return-Path: [email protected]\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($mail, 'Registrazione Tutorial TheDarkITA', $message, $headers);
    
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (user,pass,mail,attivazione)";
        $strSQL .= "VALUES('$user', '$pass', '$mail', '$attivazione')";
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
    
    
        // Reindirizzo l'utente ad una pagina di conferma della registrazione
       echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    

    <html>
    <head>
    <meta content="text/html; charset=ISO-8859-1"
    http-equiv="content-type">
    <title></title>
    </head>
    <body>
    <div style="text-align: center;"><img
    style="width: 337px; height: 153px;" alt="Zomer"
    src="../logo.png"><br>
    <br>
    <br>
    Ti è stata inviata un email con un link ecco cosa devi fare <br>
    <br>

    1. apri 'email (potrebbe stare in posta indesiderata)<br>
    2. clicca sul link</div>
      </body>
      </html>
      ';
      exit;
      }
      }
      ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htp://ww.w3org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="ht
      p://www3*org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Registrazione</title>
      </head>

    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>
    [/php]Inoltre se era possibile volevo avere la query che ha usato il ragazzo di prima per creare la tabella provincie...:(

    Da qualche parte c'è qualche asterisco o spazio perchè se no non mi faceva inviare il messaggio...