Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Undefined variable: codiceconferma e sentmail

    Buonasera a tutti, scusatemi anticipatamente se avete affrontato già il tema ma nelle varie discussioni non ho trovato quato occorre a me per risolvere il mio problema.
    sto tentando di creare un modulo di registrazione tramite easyphp, ho creato il db e 2 cartelle, utenti ed utenti_temp.
    In notepad ++ ho creato il file register.php
    se lo apro http://localhost/sito/register.php mi da la pagina in cui posso inserire i dati di login e pwd
    anche se faccio prove con pwd diverse o mancante mi da l'errore di inserire le password corrette oppure di inserire tutti i campi.

    il problema si complica se tutti i dati sono corretti e devo ricevere il link di attivazione.
    ho verificato mille volte lo script ed è corretto, ve lo giro.

    <?php
    include 'header.php';
    ?>
    <div id="wrapper">

    <?php

    if(!isset($_GET['passkey'])){

    if(!isset($_POST['invia'])){ ?>

    <form method="post" action="#" id="formregistrazione">

    <label for="username">Username</label>
    <input type="text" name="username" id="username" /><br>
    <label for="password1">Password</label>
    <input type="password" name="password1" id="password1" /><br>
    <label for="password2">Ripeti Password</label>
    <input type="password" name="password2" id="password2" /><br>
    <label for="email">Email</label>
    <input type="text" name="email" id="email" /><br>
    <input type="submit" name="invia" id="registrati" value="Registrati" />
    </form>

    <?php } else {

    // creazione di un codice di conferma
    $codice_conferma = md5(uniqid(rand()));

    // Valori del form

    $username = mysql_real_escape_string($_POST['username']);
    $password1 = mysql_real_escape_string($_POST['password1']);
    $password2 = mysql_real_escape_string($_POST['password2']);
    $email = mysql_real_escape_string($_POST['email']);

    // controllo campi vuoti e password

    if($username == "" || $email == ""){
    echo "Devi riempire tutti i campi";
    }elseif($password1 == "" || $password2 == ""){
    echo "Devi riempire tutti i campi";
    }elseif($password2 != $password1){
    echo "Le password devono coincidere";
    }else{

    $recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");
    $contausermail = mysql_num_rows($recuperauseremail);

    if($contausermail > 0){

    echo "Nome utente o email già disponibili";

    } else {

    // Invia dati alla tb utenti_temp

    $inviautentitemp = mysql_query("INSERT INTO utenti_temp(codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");

    if($inviautentitemp){

    $to=$email;
    $subject="Conferma la Registrazione";
    $header="Da: Amministratore";
    $message="Ecco il tuo codice di attivazione \r\n";
    $message1="Clicca sul link per confermare la registrazione \r\n";
    $message.="
    http://127.0.0.1/sito/register.php?passkey=$codiceconferma";

    $sentmail=mail($to,$subject,$message,$header);

    }

    if($sentmail){

    echo "Per completare la registrazione controlla la tua posta elettronica e clicca sul link di attivazione.";

    }else{

    echo "Errore, link di attivazione non inviato.";

    }

    }
    }



    }

    } else {

    }

    ?>

    </div>


    < /body>
    < /html>




    l'errore che esce è il seguente:
    Notice: Undefined variable: codiceconferma in C:\Program Files\EasyPHP-12.1\www\sito\register.php on line 61

    Notice: Undefined variable: sentmail in C:\Program Files\EasyPHP-12.1\www\sito\register.php on line 76
    Errore, link di attivazione non inviato.



    vi giro le voci corrispondenti alla riga 61 e 76

    riga 61:
    $inviautentitemp = mysql_query("INSERT INTO utenti_temp(codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");


    riga 76
    if($sentmail){

    vi giro anche tutto il contenuto racchiuso tra le due righe, magari vi serve:

    $inviautentitemp = mysql_query("INSERT INTO utenti_temp(codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");

    if($inviautentitemp){

    $to=$email;
    $subject="Conferma la Registrazione";
    $header="Da: Amministratore";
    $message="Ecco il tuo codice di attivazione \r\n";
    $message1="Clicca sul link per confermare la registrazione \r\n";
    $message.="
    http://127.0.0.1/sito/register.php?passkey=$codiceconferma";

    $sentmail=mail($to,$subject,$message,$header);

    }

    if($sentmail){


    ho letto che potrebbe essere il codice php.ini ma sinceramente non ho assilutamente idea di cosa dovrei fare.
    vi garantisco però che ho seguito il tutorial alla lettera e controllato mille volte, credo ci sia da abilitare qualcosa.

    grazie a tutti.
    mario

  2. #2
    $codice_conferma e ben diverso da $codiceconferma

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    $codice_conferma e ben diverso da $codiceconferma
    Ciao e grazie per la risposta,
    Ma seguendo il tutorial viene indicato cosi e funziona nel tutorial.
    Non credi sia un problema di configurazione?
    Ad ogni modo proverò.
    Ma devo cambiare ovunque?

  4. #4
    Quote Originariamente inviata da margis6972 Visualizza il messaggio
    Ciao e grazie per la risposta,
    Ma seguendo il tutorial viene indicato cosi e funziona nel tutorial.
    Non credi sia un problema di configurazione?
    Ad ogni modo proverò.
    Ma devo cambiare ovunque?
    Evidentemente si tratta di un refuso.

    Se la variabile $codice_conferma la vedi solo qui:

    $codice_conferma = md5(uniqid(rand()));

    modifica solo quella in

    $codiceconferma = md5(uniqid(rand()));


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    Evidentemente si tratta di un refuso.

    Se la variabile $codice_conferma la vedi solo qui:

    $codice_conferma = md5(uniqid(rand()));

    modifica solo quella in

    $codiceconferma = md5(uniqid(rand()));

    Ciao Piero, intanto grazie 1000 per l'aiuto, lo apprezzo molto.
    ho fatto come dicevi, in effetti mi è sparito l'errore della riga 61 ma è rimasto quello della riga 76

    riga 76
    if($sentmail){

    cosa sbaglio?

    devo configurare qualcosa? tu sapresti darmi una possibile soluzione?

    mario

  6. #6
    forse e' qui che devi configurare la mail nel php.ini

    In pratica se vuoi inviare la Email devi avere un account abilitato per inviare sul tipo di provider che ti fornisce l'ADSL. es. per alice adsl:

    codice:
    [mail function]
    ; For Win32 only.
    SMTP = mail.tin.it
    smtp_port = 25
    
    ; For Win32 only.
    sendmail_from = utente_valido@tin.it
    
    ;oppure utente_valido@alice.it
    Ovviamente se hai un altro provider internet dovrai agire di conseguenza in modo appropriato. Dopo le modifiche si deve restartare apache e (a volte) ripulire la cache del browser.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    forse e' qui che devi configurare la mail nel php.ini

    In pratica se vuoi inviare la Email devi avere un account abilitato per inviare sul tipo di provider che ti fornisce l'ADSL. es. per alice adsl:

    codice:
    [mail function]
    ; For Win32 only.
    SMTP = mail.tin.it
    smtp_port = 25
    
    ; For Win32 only.
    sendmail_from = utente_valido@tin.it
    
    ;oppure utente_valido@alice.it
    Ovviamente se hai un altro provider internet dovrai agire di conseguenza in modo appropriato. Dopo le modifiche si deve restartare apache e (a volte) ripulire la cache del browser.
    Ciao,
    ho fatto quello che mi dicevi, non so se ho fatto tutto correttamente, sono andato in easyphp -> configurazione -> php
    ho cercato la voce "mail function"
    ho configurato cosi (utilizzo la Vodafone station ed ho inserito per prova la mail con gmail):
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = smtp.net.vodafone.it


    ; http://php.net/smtp-port
    smtp_port = 25


    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = le2ruote@gmail.com


    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =


    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =


    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header = On


    ; The path to a log file that will log all mail() calls. Log entries include
    ; the full path of the script, line number, To address and headers.
    ;mail.log =
    ; Log mail to syslog (Event Log on NT, not valid in Windows 95).
    ;mail.log = syslog


    mi esce sempre lo stesso errore
    Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP-12.1\www\sito\register.php on line 72
    Errore, link di attivazione non inviato.

    Piero secondo te devo fare qualcosa da phpmyadmin?
    io ho solo creato il db ed inserito 2 tabelle, secondo te devo fare altro che abiliti la registrazione?
    grazie ancora

  8. #8
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    forse e' qui che devi configurare la mail nel php.ini

    In pratica se vuoi inviare la Email devi avere un account abilitato per inviare sul tipo di provider che ti fornisce l'ADSL. es. per alice adsl:

    codice:
    [mail function]
    ; For Win32 only.
    SMTP = mail.tin.it
    smtp_port = 25
    
    ; For Win32 only.
    sendmail_from = utente_valido@tin.it
    
    ;oppure utente_valido@alice.it
    Ovviamente se hai un altro provider internet dovrai agire di conseguenza in modo appropriato. Dopo le modifiche si deve restartare apache e (a volte) ripulire la cache del browser.
    Ciao Piero,
    ho fatto quello che mi dicevi, almeno spero, sono andato in easyphp -> configurazione -> php ed ho inserito la seguente configurazione (utilizzo adsl Vodafone ed ho inserito una mail fittizia gmail):
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = smtp.net.vodafone.it


    ; http://php.net/smtp-port
    smtp_port = 25


    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = le2ruote@gmail.com


    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =


    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =


    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header = On


    ; The path to a log file that will log all mail() calls. Log entries include
    ; the full path of the script, line number, To address and headers.
    ;mail.log =
    ; Log mail to syslog (Event Log on NT, not valid in Windows 95).
    ;mail.log = syslog

    purtroppo esce sempre l'errore:
    Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP-12.1\www\sito\register.php on line 72
    Errore, link di attivazione non inviato.

    Premetto che in phpmyadmin ho creato un db ed inserito dentro 2 tabelle, non ho fatto altro,
    nella cartella utenti_temp mi lascia traccia dei tentativi di accesso:
    utenti.jpg

    mentre nella cartella utenti non lascia traccia.

    è come se mi mancasse un passaggio, probabilmente in phpmyadmin devo fare una configurazione, ma sinceramente non saprei.

    riesci a darmi qualche suggerimento?

  9. #9
    ;sendmail_from = le2ruote@gmail.com

    quel ; e' un rem, cioe' dice che quello che segue e' un commento e non una istruzione.

    quindi togli il ; salva e restarta apache.

    Poi, sei certo che gmail.com sia ammesso da vodafon come indirizzo valido per l'invio? Dovresti provare con un client di posta tipo thunderbird e verificare quale indirizzo email funziona con la posta in uscita.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    ;sendmail_from = le2ruote@gmail.com

    quel ; e' un rem, cioe' dice che quello che segue e' un commento e non una istruzione.

    quindi togli il ; salva e restarta apache.

    Poi, sei certo che gmail.com sia ammesso da vodafon come indirizzo valido per l'invio? Dovresti provare con un client di posta tipo thunderbird e verificare quale indirizzo email funziona con la posta in uscita.
    Ciao,
    quindi l'errore potrebbe essere il ;
    per l'indirizzo mail non saprei se va bene o meno...devo provare.
    Faccio dei tentativi e ti dico.
    Grazie mille come sempre

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.