Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131

    Registrazione utente con conferma email

    Salve ho scaricato questo pacchetto da qui: http://forum.it.altervista.org/how/1...strazione.html
    Ho configurato config con i miei dati db, quando registro un account un invia il codice di conferma all'email, da questo errore: Problemi durante invio email

    Ecco i codici:

    funzioni.php

    codice:
    <?php
    /*
    © by alemoppo (Moroni Alessandro)
    */
    
    
    $ACCOUNT_DB = '#[=<account>]';            #[=<account>]
    $INDIRIZZO_REDIRECT = '#[=<account>.altervista.org]';    #[=<account>.altervista.org]
    $EMAIL = '#[=<account>@altervista.org]';                #[=<account>@altervista.org]
    $COLORE = '#[=#9370DB]';                #[=#9370DB]
    
    
    $COLORE = '#D3D3D3';
    define('HEADER_MAIL','From: '.(isset($EMAIL)?$EMAIL:(nick().'@altervista.org<')).(isset($EMAIL)?('<'.$EMAIL.'>'):(nick().'>'))); 
    function colore()
    {
        global $COLORE;
        if(isset($COLORE))
            return $COLORE;
        else
            return '#9370DB';
    }
    function nick()
    {
        return substr($_SERVER['SERVER_NAME'],0,(strpos($_SERVER['SERVER_NAME'],'.')===FALSE)?strlen($_SERVER['SERVER_NAME']):strpos($_SERVER['SERVER_NAME'],'.'));
    }
    function stringa_random()
    {
        $str = 'ABCDEFGHKLMNOPQRSTWXYZabcdefghjkmnpqrstwxyz123456789';
        $r = '';
        $l = 8+rand(0,5);
        for($i=0;$i<$l;$i++)
            $r .= $str{rand(0,strlen($str))};
        return $r;
    }
    function cartella()    //ritorna il percorso dei file
    {
        $arr = parse_url($_SERVER['PHP_SELF']);
        $t = strrpos(substr($arr['path'],1),'/');
        return substr($arr['path'].'/',1,$t?$t+1:0);
    }
    function redirect_home($param = '')
    {
        global $INDIRIZZO_REDIRECT;
        if(isset($INDIRIZZO_REDIRECT))
        {
            if(!headers_sent())
                header('Location: http://'.$INDIRIZZO_REDIRECT.'/?'.$param);
            else die('<meta HTTP-EQUIV="REFRESH" content="0; url=http://'.$INDIRIZZO_REDIRECT.'/?'.$param.'">');
        }
        else 
        {
            if(!headers_sent())
                header('Location: http://'.nick().'.altervista.org/?'.$param);
            else die('<meta HTTP-EQUIV="REFRESH" content="0; url=http://'.nick().'.altervista.org/?'.$param.'">');
        }
        exit;
    }
    ?>
    index.php

    codice:
    <?php session_start(); ?>
    
    
                        <?php include('iscrizione.php');?>
    iscrizione.php

    codice:
    <?php/*
    © by alemoppo (Moroni Alessandro)
    */
    require_once('./funzioni.php');
    if(isset($_POST['username'],$_POST['password'],$_POST['verify_password'],$_POST['email'],$_POST['captcha']))
    {
        session_start();
        $stop = FALSE;
        if($_POST['captcha'] != $_SESSION['captcha'])
        {
            $stop = TRUE;
            echo('Codice di conferma errato');
        }
        $_SESSION['captcha'] = '';        //se torna indietro, il captcha non è più valido
        if(empty($_POST['username']))
        {
            $stop = TRUE;
            echo('username vuoto!');
        }
        if(empty($_POST['password']))
        {
            $stop = TRUE;
            echo('Password vuota!');
        }
        if(empty($_POST['verify_password']))
        {
            $stop = TRUE;
            echo('password di verifica vuota!');
        }
        if(empty($_POST['email']))
        {
            $stop = TRUE;
            echo('email vuota!');
        }
        if($_POST['verify_password'] != $_POST['password'])
        {
            $stop = TRUE;
            echo('Le due password non coincidono');
        }
        if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST['email']))
        {
            $stop = TRUE;
            echo('Email non valida');
        }
    
    
        if(!$stop)
        {
            require('./config.php');
    
    
            $username = mysql_real_escape_string($_POST['username']);
            $password = mysql_real_escape_string($_POST['password']);
            $email = mysql_real_escape_string($_POST['email']);
    
    
            $q = mysql_query('SELECT username FROM utenti WHERE username = \''.$username.'\'');
            if(mysql_num_rows($q) == 1)
                echo 'Questo utente risulta esistente';
            else
            {
                $attivazione = stringa_random();
                $q = mysql_query('INSERT INTO utenti (username,password,email,attivazione) VALUES (\''.$username.'\',\''.md5($password).'\',\''.$email.'\',\''.$attivazione.'\')');            
                if(!$q)
                    echo 'Problemi durante la query: '.mysql_error();
                else
                {
                    $oggetto = 'Registrazione su '.nick().'.altervista.org';
                    $testo = "Ti sei registrato correttamente su .altervista.org.\n\nNick: ".$username."\nPassword: ".$password."\n\n Visita questa pagina per attivare l\'account: \n\nhttp://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?att=".$attivazione."\n\nGrazie per esserti registrato!";
    
    
                    if(mail($email,$oggetto,$testo,$HEADER_MAIL))
                        echo 'Iscrizione avvenuta correttamente. Prima di poter usare l\'account, &egrave; necessario seguire il link sulla email.';
                    else echo 'Problemi durante invio email';
                }
            }
            mysql_close($db);
        }
    }
    else if(isset($_GET['att']) || isset($_GET['riatt']))
    {
        require('./config.php');
        if(isset($_GET['att']))
            $attivazione = mysql_real_escape_string($_GET['att']);
        else 
        {
            $attivazione = mysql_real_escape_string($_GET['riatt']);
            $q = mysql_query('SELECT pass FROM utenti WHERE attivazione = \''.$attivazione.'\'');
            if($q === FALSE)
                echo 'Errore durante una query: '.mysql_error();
            else if(mysql_num_rows($q) == 1)
            {
                $q = mysql_fetch_assoc($q);
                if(!empty($q['pass']))
                    if(!mysql_query('UPDATE utenti SET password = \''.$q['pass'].'\' WHERE attivazione = \''.$attivazione.'\''))
                        echo 'Errore durante una query: '.mysql_error();
            }
        }
        
        if(mysql_query('UPDATE utenti SET attivazione = \'\' WHERE attivazione = \''.$attivazione.'\''))
            if(mysql_affected_rows($db) == 1)
                echo 'Account attivato correttamente!<br>';
            else echo 'Problemi con attivazione account.<br>';
        if(isset($INDIRIZZO_REDIRECT))
            echo '<a href="http://'.$INDIRIZZO_REDIRECT.'">Premi qui per continuare</a>';
        else
            echo '<a href="http://'.nick().'.altervista.org">Torna alla home</a>';
        mysql_close($db);
    }
    else
    {
    ?>
    <form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
    <table style="cellpadding:5px; background-color:<?php require_once('./funzioni.php'); echo colore(); ?>; width:200px;" >
    <tr><td>Username:</td><td><input type="text" name="username" value=""></td></tr> 
    <tr><td>Password:</td><td><input type="password" name="password" value=""></td></tr> 
    <tr><td>Verifica Password:</td><td><input type="password" id="verify_password" name="verify_password" value=""></td></tr> 
    <tr><td>Email:</td><td><input type="text" name="email" value=""></td></tr>
    <tr><td><img src="./config.php?captcha=1&r=<?= time(); ?>"></td><td>Conferma codice:<br><input type="text" name="captcha" value="" maxlength="5"></td></tr>
    <tr><td colspan="2" style="text-align:center;"><input type="submit" id="submit" name="submit" value="Invia" /></td></tr>  
    </table>
    </form>
    <?php
    }
    ?>
    login.php

    codice:
    <?php/*
    © by alemoppo (Moroni Alessandro)
    */
    session_start();
    require_once('./funzioni.php');
    require('./config.php');
    if(isset($_SESSION['utente']))
        echo 'benvenuto, '.$_SESSION['utente'];
    
    
    else if(isset($_COOKIE['user'],$_COOKIE['pass']))
    {
        $user = mysql_real_escape_string($_COOKIE['user']);
        $pass = mysql_real_escape_string($_COOKIE['pass']);
    
    
        #rinnovo i cookie
        setcookie('user',$user,time()+(60*60*24*30));    //dura 30 gg
        setcookie('pass',$pass,time()+(60*60*24*30));    //dura 30 gg
    }
    if(isset($_POST['username'],$_POST['password']))
    {
        $user = mysql_real_escape_string($_POST['username']);
        $pass = md5(mysql_real_escape_string($_POST['password']));
    }
    
    
    if(isset($user,$pass))
    {
        $q = mysql_query('SELECT attivazione,pass FROM utenti WHERE username = \''.$user.'\' AND password=\''.$pass.'\' LIMIT 1');
        mysql_close($db);
        if(!$q)
            echo 'Errore durante la query: '.mysql_error();
        else if(mysql_num_rows($q) == 1)
        {
            $q = mysql_fetch_assoc($q);
    
    
            if(empty($q['attivazione']) || (!empty($q['pass'])))
            {
                $_SESSION['utente'] = htmlentities($user);
                if(isset($_POST['ricordami']))
                {
                    setcookie('user',$user,time()+(60*60*24*30));    //dura 30 gg
                    setcookie('pass',$pass,time()+(60*60*24*30));    //dura 30 gg
                }
                redirect_home();
            }
            else 
                echo 'Account non attivato. Attivalo dall\'indirizzo specificato nell\'email!.';
        }
        else echo 'I dati non sono corretti.';
    }
    if(!isset($_SESSION['utente']))
    {
    ?>
    <form name="login" method="post" action="<?= $_SERVER['PHP_SELF']; ?>">  
    <table style="cellpadding:5px; background-color:<?php require_once('./funzioni.php'); echo colore(); ?>" >
    <tr><td>Username:</td><td><input type="text" name="username"></td></tr>  
    <tr><td>password:</td><td><input type="password" name="password"></td></tr>
    <tr><td colspan="2">Ricordami<input type="checkbox" name="ricordami" value="on" class="check"></td></tr>
    <tr><td colspan="2"><input type="submit" value="Invia" name="submit" id="submit" class="button"></td></tr>
    </table>  
    </form>
    <?php
    }
    ?>
    recupero.php

    codice:
    <?php/*
    © by alemoppo (Moroni Alessandro)
    */
    if(isset($_POST['user'],$_POST['email']))
    {
        require('./config.php');
        require_once('./funzioni.php');
        $procedi = FALSE;
        if(!empty($_POST['user']))
        {
            $username = mysql_real_escape_string($_POST['user']);
            $q = mysql_query('SELECT email FROM utenti WHERE username = \''.$username.'\' LIMIT 1');
            if(!$q)
                echo 'Errore durante la query 1'.mysql_error();
            if(mysql_num_rows($q) != 1)
            {
                echo 'Nessun utente '.$_POST['user'].' trovato. <br>';
            }
            else
            {
                $row = mysql_fetch_assoc($q);
                $email = $row['email'];
                $procedi = TRUE;
            }
        }
        else if(!empty($_POST['email']))
        {
            $email = mysql_real_escape_string($_POST['email']);
            $q = mysql_query('SELECT username FROM utenti WHERE email=\''.$email.'\' LIMIT 1');
            if(!$q)
                echo 'Errore durante la query1: '.mysql_error();
            if(mysql_num_rows($q) != 1)
            {
                echo 'Nessuna email '.$_POST['email'].' trovata. <br>';
            }
            else
            {
                $row = mysql_fetch_assoc($q);
                $username = $row['username'];
                $procedi = TRUE;
            }
        }
        else
            echo 'Occorre inserire o username, o email.<br>';
    
    
        if($procedi)
        {
            $new_pass = stringa_random();
            $attivazione = stringa_random();
            $q = mysql_query('UPDATE utenti SET pass = \''.md5($new_pass).'\', attivazione=\''.$attivazione.'\' WHERE username = \''.$username.'\'');
            if(!$q)
                echo 'Errore durante la query2: '.mysql_error();
            else
            {
                $oggetto = 'Reset password';
                $testo = "Reset effettuato correttamente.\n\nNuova password: $new_pass\n(potrai modificarla)\n\nUtente: $username\n\nVisita questo indirizzo per confermare:\nhttp://".$_SERVER['SERVER_NAME'].'/'.cartella()."iscrizione.php?riatt=".$attivazione."\n";
                if(!mail($email,$oggetto,$testo,HEADER_MAIL))
                    echo 'Errore invio durante email';
                else echo 'Abbiamo inviato un email con la nuova password generata automaticamente. Prima che diventi attiva, occorre confermare dall\'email.<br>';
            }
        }
        mysql_close($db);
    }
    ?>
    Immetti nome utente o email per ricevere via email una nuova password:
    <form name="login" method="post" action="<?= $_SERVER['PHP_SELF']; ?>">  
    <table style="cellpadding:5px; background-color:<?php require_once('./funzioni.php'); echo colore(); ?>" >
    <tr><td>Username:</td><td><input type="text" name="user"></td></tr>  
    <tr><td>email:</td><td><input type="text" name="email"></td></tr>
    <tr><td align="center" colspan="2"><input type="submit" value="Invia" name="submit"></td></tr>
    </table>  
    </form>
    Dove sbaglio? Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Non entrava tutto nel post:

    cambiopass.php

    codice:
    <?php /*
    © by alemoppo (Moroni Alessandro)
    */
    if(isset($_POST['username'],$_POST['password'],$_POST['verify_password'],$_POST['vecchia_password']))
    {
        if(empty($_POST['username']))
            echo 'username vuoto!';
        else if(empty($_POST['password']))
            echo 'Password vuota!';
        else if(empty($_POST['verify_password']))
            echo 'password di verifica vuota!';
        else if(empty($_POST['vecchia_password']))
            echo 'vecchia password vuota!';
        else if($_POST['verify_password'] != $_POST['password'])
            echo 'Le due password non coincidono!';
        else
        {
            $username = mysql_real_escape_string($_POST['username']);
            $password = mysql_real_escape_string($_POST['password']);
            $vecchia_pass = mysql_real_escape_string($_POST['vecchia_password']);
            require('./config.php');
            if($q = mysql_query('UPDATE utenti SET password=\''.md5($password).'\' WHERE username = \''.$username.'\' AND password = \''.md5($vecchia_pass).'\''))
            {
                if(mysql_affected_rows($db) == 1)
                    echo 'Password modificata correttamente!<br>';
                else echo 'Combinazione username/password non accettata<br>';
            }
            else echo 'Errore nella query: '.mysql_error();
            mysql_close($db);
        }
    }
    ?>
    <form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
    <table style="cellpadding:5px; background-color:<?php require_once('./funzioni.php'); echo colore(); ?>" >
    <tr><td>Username:</td><td><input type="text" name="username" value=""></td></tr> 
    <tr><td>Password (nuova):</td><td><input type="password" name="password" value=""></td></tr> 
    <tr><td>Verifica password (nuova):</td><td><input type="password" name="verify_password" value=""></td></tr>
    <tr><td>Vecchia password:</td><td><input type="password" name="vecchia_password" value=""></td></tr>
    <tr><td colspan="2" style="text-align:center;"><input type="submit" id="submit" name="submit" value="Invia" /></td></tr>  
    </table>
    </form>


    config.php

    codice:
    <?php/*
    © by alemoppo (Moroni Alessandro)
    */
    require_once('./funzioni.php');
    if(isset($_GET['captcha']))
    {
        session_start();
        $testo = substr(stringa_random(),0,5);
        $_SESSION['captcha'] = $testo;
        $x = 100;
        $y = 50;
        $image = imagecreatetruecolor($x, $y);
    
    
        $sfondo = imagecolorallocate($image,hexdec(substr(colore(),1,2)),hexdec(substr(colore(),3,2)),hexdec(substr(colore(),5,2)));
        $nero = imagecolorallocate($image,0,0,0);
    
    
        imagefilledrectangle($image, 0, 0, $x, $y, $sfondo);
    
    
        imagettftext( 
                    $image, //immagine 
                    15,  //dimensione carattere 
                    rand(-5, 5), //angolo di rotazione 
                    10+rand(-10,10), //offset sulla x 
                    30, //offset sulla y 
                    $nero, //colore 
                    './caratteri/arial.ttf', //font
                    $testo //da stampare 
                ); 
    
    
        header("Content-Type: image/png");
        imagepng($image);
    }
    else if(isset($_GET['logout']))
    {
        session_start();
        session_destroy();
        if(isset($_COOKIE['user']) || isset($_COOKIE['pass']))
        {
            setcookie('user',$user,time()-500);
            setcookie('pass',$pass,time()-500);
        }
        redirect_home();
        //header('location:  http://'.nick().'.altervista.org');
    }
    else
    {
        if(isset($ACCOUNT_DB))
            $nick = $ACCOUNT_DB;
        else $nick = nick();
        $db = mysql_connect('localhost','root','123456');
        if(!$db)
            die('Impossibile connettersi al database: '.mysql_error()); 
        if(!mysql_select_db('login')) 
             die('Impossibile selezionare il database');
    }
    ?>

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Stai provando su un tuo sito online oppure in locale?
    Nel secondo caso il problema è che non hai php configurato per inviare email. Se è questo il caso, troverai tutti i tutorial che vuoi per configurare php per inviare email da locale, basterà una ricerca su un motore di ricerca.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    il tutto è dentro un mio server (nella mia rete)

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    E allora non hai configurato php per l'invio delle email, fa una ricerca come ti ho già consigliato se non sai come si fa (dovrai impostare i dati di una vera casella email, quindi SMTP ed eventuali dati per l'autenticazione se la tua casella di posta lo richiede).

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    ho provato a caricare tutto su altervista per verificare se il problema era il mio server.
    adesso quando mi registro da questo:
    Iscrizione avvenuta correttamente. Prima di poter usare l'account, è necessario seguire il link sulla email.
    Però non arriva nessun email.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    E questo è un problema dovuto alla mancanza di alcuni header nell'email che invii.
    Anche di questo se ne è parlato tantissime volte anche molto di recente, inizia aggiungendo l'header "reply to" poi se questo non basta prova a cercare nel forum o in generale su internet, perché tutti a memoria non me li ricordo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    scusa la mia ignoranza, devo modificare questa riga?

    codice:
    	$attivazione = stringa_random();			$q = mysql_query('INSERT INTO utenti (username,password,email,attivazione) VALUES (\''.$username.'\',\''.md5($password).'\',\''.$email.'\',\''.$attivazione.'\')');			
    			if(!$q)
    				echo 'Problemi durante la query: '.mysql_error();
    			else
    			{
    				$oggetto = 'Registrazione su '.nick().'.altervista.org';
    				$testo = "Ti sei registrato correttamente su .altervista.org.\n\nNick: ".$username."\nPassword: ".$password."\n\n Visita questa pagina per attivare l\'account: \n\nhttp://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?att=".$attivazione."\n\nGrazie per esserti registrato!";
    
    
    				if(mail($email,$oggetto,$testo,$HEADER_MAIL))
    					echo 'Iscrizione avvenuta correttamente. Prima di poter usare l\'account, &egrave; necessario seguire il link sulla email.';
    				else echo 'Problemi durante invio email';
    se si, che devo mettere? scusa ancora.
    Ultima modifica di aizenn; 27-03-2014 a 02:42

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    131
    Risolto, grazie.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    1

    Ciao

    Quote Originariamente inviata da aizenn Visualizza il messaggio
    Risolto, grazie.
    Ciao scusa se ti disturbo ho lo stesso problema tuo non mi arrivano mail, come hai fatto a risolvere il problema.
    Grazie

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.