Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Registrazione utenti con link di conferma via email

    Ciao a tutti.
    Sto cercando un modo per far registrare gli utenti ad un sito con conferma registrazione tramite email.

    Ho trovato questo navigando:
    http://greenweb.netsons.org/visualizza_post.php?id=211

    ...e promette cose davvero carine, come la cancellazione dopo un tot di tempo se l'utente cono conferma cliccando sul link dell'email.

    Così che ho fatto... ho preso i 4 files del pacchetto, ho configurato i dati del database, ho creato la tabella in MySQL e l'ho lanciano da FF.

    Niente, non va...
    Questo è quello che mi genera:

    Codice PHP:
    Warningmysql_connect() [function.mysql-connect]: Access denied for user 'SqlXXXXX_2'@'XXX.XXX.XXX.XXX' (using passwordYESin /web/htdocs/www.miosito.it/home/provautenti/reguserFunc.php on line 16

    Warning
    mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /web/htdocs/www.miosito.it/home/provautenti/reguserFunc.php on line 17

    Warning
    mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /web/htdocs/www.miosito.it/home/provautenti/reguserFunc.php on line 60

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /web/htdocs/www.miosito.it/home/provautenti/reguserFunc.php on line 60
    problemi/errori 
    Il database è MySQL in remoto.
    Inoltre l'indirizzo IP nascosto dalle X non è quello del database

    Sapreste dirmi qual'è il problema?

    Oppure in alternativa sapreste dirmi come raggiungere lo stesso risultato?
    (registrazione utente, invio mail con link, se clicca ok registrato, se non clicca dopo un po cancellato)

    Grazie a tutti!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    Scrivici il reguserFunc.php dato che gli errori sono generati dal mancato colelgamento con il DB

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ciao Ophy, grazie mille per l'interessamento.

    Riporto di seguito il codice:

    Codice PHP:
    <?php
        
    ## Script per REGISTRAZIONE UTENTI con attivazione via email con php/mysql ########
        ## autore: U.Alessandro - email: [email]xxxxxxxx@yahoo.it[/email] - ultima modifica: 6-3-2008  ##
        ####################################################
        /* 
        - il seguente file contiene tutte le funzioni neccessarie per la registrazione e attivazione, basta includerlo dove serve, es: include './reguserFunc.php';
        - nella funzione deleteoldreg() � possibile impostare i minuti dopo i quali non sar� pi� possibile attivare un account registrato e verr� cancellato, questo per evitare la
           registrazione di utenti che non attivano l' account
         - lo script utilizza la funzione mail()  di PHP
         - la funzione RegUser()  ritorna come valori true/false, ma in alternativa si pu� tranquillamente far stampare una stringa a piacere per personalizzare la notifica di errori
        NB: la passowrd viene salvata nel database come $md5pass = md5(md5($passwordDB)) , da tenere conto se dobbiamo fare una SELECT in uno script per il Login,
         */
        
        // qui inserire i propri dati per la connessione ad database mysql
        
    function dbconn(){
            
    $connessione mysql_connect("xx.xxx.xxx.xxx""Sqlxxxxx_2""xxxxxxxx");
            
    mysql_select_db("utenti"$connessione);
            return 
    $connessione;
        }
        
        
    // link file attivazione
        
    define('pathactiveuser''http://www.monesito.it/provautenti/reguser_attiva.php');
        
    // mail webmaster/amministratore del sito
        
    define('adminmail''myname@gmail.com');
        
    // nome/indirizzo del proprio sito web
        
    define('nomesito''http://www.miosito.it/provautenti/');
        
    // stringa formata da letter/numeri da usare per la creazione di una chiave di attivazione casuale
        
    define('secretword','sthh45w45s');    
        
        
        
    // controlla dati passati( username e password deve avere caratteri alfanumerici e almeno 6 caratteri e un massimo di 20 )
        
    function strip_char($char){
            
    $result false;
            
    $pr "/^[a-zA-Z0-9_]{6,20}$/";
            if(
    preg_match($pr$char)){
                    
    $result true;
            }
            return 
    $result;
        }
        
        
    // controllo email
        
    function checkMail$m ) {
             
    // andr3a / HTML.IT / caruccis
             
    $r1 "([a-z0-9]+[";
             
    $r2 "\-]?){1,3}([a-z0-9])*";
             return 
    preg_match("/(?i)^{$r1}\._{$r2}\@{$r1}\.{$r2}\.[a-z]{2,6}$/"$m);
         }

        
    // strip magic
        
    function strip_magic ($value){ 
            
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value
            return 
    $value
        }
        
        
    // cancella vecchie registrazioni senza attivazione
        
    function deleteoldreg(){
            
    // minuti dopo i quali l'attivazione non � pi� possibile
            
    $minuti 30;
            
    $sql "DELETE FROM utenti WHERE (data + INTERVAL $minuti MINUTE) < NOW() AND attivo='0'";  
            
    mysql_query($sql);
        }
        
        
    //creazione codice attivazione account
        
    function ActiveCode($nome_utemte){
            
    $chiave_attivazione md5(time().$nome_utemte.secretword);
            return 
    $chiave_attivazione;
        }
        
        
    // attivazione account utente
        //@ $user = campo user del link di attivazione
        //@ $active = campo active del link di attivazione
        
    function ActiveUser($user,$active){
            
    $return false;
            if(!
    strip_char($user) && !preg_match("/^[a-zA-Z0-9]{32}$/",$active)){
                return 
    $return;
            } else {    
                
    $conn dbconn();
                
    $userDb mysql_real_escape_string(strip_magic($user),$conn);
                
    $chiaveDb mysql_real_escape_string(strip_magic($active),$conn);
                
    $sql_attiva "UPDATE utenti SET attivo = '1' WHERE username = '$userDb' AND chiave = '$chiaveDb' AND attivo = '0'"
                
    $res_attiva mysql_query($sql_attiva,$conn);
                
    $num_righe mysql_affected_rows($conn); 
                if(
    $num_righe == 1){$return true;}
                return 
    $return;
            }    
        }
        
        
    /* 
        @ la funzione restituisce true solo se i dati passati sono validi(preg_match) e NON esiste un user con lo stesso username o email
        */
        
    function RegUser($username,$email,$password,$passwordver){
        
            
    $return false;
        
            
    $connessione dbconn();
            
    deleteoldreg();
            
            
    $usernameStrip strip_magic(trim($username));
            
    $emailStrip strip_magic(trim($email));
            
    $passwordStrip strip_magic(trim($password)); 
            
    $passwordverStrip strip_magic(trim($passwordver));

            if(
                
    strip_char($usernameStrip) &&
                
    checkMail($emailStrip) &&
                
    strip_char($passwordStrip) &&
                
    $passwordStrip===$passwordverStrip
            
    ){

                
    $userDB mysql_real_escape_string($usernameStrip,$connessione);
                
    $emailDB mysql_real_escape_string($emailStrip,$connessione);
                
    $passwordDB mysql_real_escape_string($passwordStrip,$connessione);
                
                
    $sql "SELECT id FROM utenti WHERE username='$userDB' OR email='$emailDB'";
                
    $risultato mysql_query($sql$connessione);
                
    $num_righe mysql_num_rows($risultato);
                
                if(
    $num_righe == 0){
                    
    $md5pass md5(md5($passwordDB));
                    
    $chiave ActiveCode($usernameStrip);
                    
    $sql2 "INSERT INTO utenti(username,password,email,data,chiave,attivo) VALUES('$userDB','$md5pass','$emailDB',NOW(),'$chiave','0')";
                    
    $result mysql_query($sql2$connessione);
                    
    $linkattivazione pathactiveuser.'?$user='.$usernameStrip.'&active='.$chiave;
                    
    $headers =     'From: '.adminmail."\r\n" .
                                 
    'Reply-To: '.adminmail"\r\n" .
                                 
    'X-Mailer: PHP/' phpversion();
                     
    $subject "Email di attivazione ".nomesito;
                     
    $message "Per attivare il tuo account devi visitare il seguente link: ".$linkattivazione;
                     if(
    mail($emailStrip$subject$message$headers)){
                        
    // email inviata
                        
    $return true;
                    }
                
    // esiste un utente con lo stesso username o password    
                
    } else {
                    
    $return false;
                }
                
            
    // dati passati dal form non sono validi    
            
    } else {
                
    $return false
            }
            
            return 
    $return;    
        }
        
        

    ?>
    Rimango in attesa! Grazie.

    (ma davvero hai 14 anni?)
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Beh, devi settare i giusti permessi al db... cioè username e password del db devono essere corretti.

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Bhè questa è in teoria l'unica cosa che avrei dovuto fare per farlo funzionare...
    ...a questo punto mi fai sorgere un dubbio:

    In questo codice...

    Codice PHP:
    function dbconn(){
            
    $connessione mysql_connect("xx.xxx.xxx.xxx""Sqlxxxxx_2""xxxxxxxx");
            
    mysql_select_db("utenti"$connessione);
            return 
    $connessione;
        } 
    ..nei tre campi di mysql_connect ci vanno:
    1: l'indirizzo IP del database
    2: il nome del database (tra i 5 che fornisce A. - nel mio caso il numero 2)
    3: la password di accesso al database

    In mysql_select_db dove io ho messo utenti ci va la tabella? (utenti è proprio il nome della tabella che ho creato).

    Se è tutto come dico allora non ci sono errori nei dati di connessione e quindi il problema è altrove...
    Se invece non è come dico come devo fare?
    Graziegrazie


    ---------


    O cacchio! La tabella utenti la cerca altrove giusto?
    Quindi il secondo campo dei tre è la user giusto?
    e in mysql_select_db ci va quello che io ho messo nel secondo campo sopra giusto?
    ...quanto sò capra!

    Grazie per la pazienza
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  6. #6
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    aspetta aspetta aspetta!!!!!!
    La prima parte funziona, ma la seconda no!

    Compilo il form
    Mi reindirizza su una pagina che mi avverte che è stata inviata la mail con il link
    Controllo la posta e la mail con il link c'è!
    Clicco sul link

    ...ma....

    Mi reindirizza su una pagina dove mi taglia le gambe dicendomi "user non attivo"
    Controllo il DB ed effettivamente il campo "attivo" nella tabella resta a 0.

    Allego la pagina reguser_insert.php

    Codice PHP:
    <?php

        
    // registrazione utente nel database e richiesta attivazione tramite email

        
    include './reguserFunc.php';
            
        if(
    $_POST['submitreg'] == 'registrati'){
            
    $registrazione RegUser($_POST['username'],$_POST['email'],$_POST['password'],$_POST['passwordver']);
            
            if(
    $registrazione){
                echo 
    "Ti abbiamo inviato una email con le info per attivare il tuo account.....";
            } else {
                echo 
    'problemi/errori';
            }
        }
        

    ?>
    e la pagina reguser_attiva.php

    Codice PHP:
    <?php

        
    // attivazione account utente, il link viene passato tramite una email
        
        
    include './reguserFunc.php';
        
        
    $res ActiveUser($_GET['user'],$_GET['email']);

        if(
    $res)
            echo 
    'user attivato';
        else 
            echo 
    'user non attivato';
            
    ?>
    Dai che ci siamo... datmi una mano please
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  7. #7
    ma sbaglio o le due pagine sono identiche ?

  8. #8
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Hai ragione... ho corretto!

    Guarda ora!
    Graziegrazie!
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    può dipendere dal nome dell'utente.
    il sistema usa un preg_match per controllare che il nome utente sia solo alfanumerico e con underscore.
    se il nome non è buono ottieni un false.

  10. #10
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    No, non ho usato segni particolari...

    Ho provato con:

    Username: banart
    Password: 12345678

    Ho anche riprovato ora per scrupolo, ma niente, non va.
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

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 © 2025 vBulletin Solutions, Inc. All rights reserved.