Visualizzazione risultati 1 fino 9 di 9

Discussione: Come scrivere codice per far funzionare link di conferma iscrizione via email

  1. #1
    gener non è connesso Utente AlterBlog
    Data registrazione
    13-05-2019
    Messaggi
    13

    Predefinito Come scrivere codice per far funzionare link di conferma iscrizione via email

    Ho qui uno script in php dove chi si iscrive tramite form riceve anche un'email di conferma registrazione con all'interno un link per confermare appunto l'iscrizione stessa. Il problema è che quando si va a cliccare questo link di conferma che nell'email appare così:

    Clicca sul seguente link per attivare il tuo account: http://yourdomain.com/phplogin/activate.php?email=[qui c'è l'indirizzo email dell'iscritto]&code=62c5593d8a85f

    Cliccando sul link mi restituisce questa risposta: Pagina non trovata (errore 404) La pagina http://nomedominio.it/cartella/filea...ate.php?email=[qui c'è l'indirizzo email dell'iscritto]&code=62c5593d8a85f non è presente.

    Ora in base al seguente pezzo di codice collocato dentro la pagina register.php:

    Codice PHP:
    // Username doesnt exists, insert new account
    if ($stmt = $con->prepare('INSERT INTO accounts (username, password, email, activation_code) VALUES (?, ?, ?, ?)')) {
    // We do not want to expose passwords in our database, so hash the password and use password_verify when a user logs in.
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
    $uniqid = uniqid();
    $stmt->bind_param('ssss', $_POST['username'], $password, $_POST['email'], $uniqid);
    $stmt->execute();
    $from = 'noreply@yourdomain.com';
    $subject = 'Richiesta di Attivazione Account';
    $headers = 'From: ' . $from . "\r\n" . 'Reply-To: ' . $from . "\r\n" . 'X-Mailer: PHP/' . phpversion() . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-Type: text/html; charset=UTF-8' . "\r\n";
    // Update the activation variable below
    $activate_link = 'http://yourdomain.com/phplogin/activate.php?email=' . $_POST['email'] . '&code=' . $uniqid;
    $message = '<p>Clicca sul seguente link per attivare il tuo account: <a href="' . $activate_link . '">' . $activate_link . '</a></p>';
    mail($_POST['email'], $subject, $message, $headers);
    echo
    '<p style="text-align: center;"><span style="font-size: 14pt; font-family: arial, helvetica, sans-serif; color: #ecf0f1;">Controlla la tua email per attivare il tuo account!</span></p>';
    credo che le righe su cui lavorare siano queste:
    Codice PHP:
    $activate_link = 'http://yourdomain.com/phplogin/activate.php?email=' . $_POST['email'] . '&code=' . $uniqid;
    $message = '<p>Clicca sul seguente link per attivare il tuo account: <a href="qui non so se devo lasciare vuoto oppure non so che pagina devo metterci' . $activate_link . '">' . $activate_link . '</a></p>';
    Quindi come devo scrivere le due righe qui sopra per fare in modo che lo script mi faccia confermare l'iscrizione?

    Grazie

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Si assicuri che esista il file activate.php nel percorso /phplogin/activate.php ovviamente phplogin è un percorso di cartella che risiede fisicamente nel web server

  3. #3
    generatin non è connesso Neofita
    Data registrazione
    13-05-2019
    Messaggi
    27

    Predefinito

    Il file activate.php non esiste. Esiste solo un file php chiamato fileactivate.php ma non è inserito nel percorso phplogin. L'ho inserito in una cartella insieme agli altri file dello script. Non so se è quello che dici tu, ma se è quello in che percorso devo inserirlo?

    La cartella phplogin non c'è nello script che ho scaricato io. Per quale motivo?
    Ultima modifica di generatin : 06-07-2022 alle ore 17.45.06

  4. #4
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,252

    Predefinito

    Salve,
    se il file activate.php è distribuito con il file dello script che a mostratato in precednza, è probaile che sia quello. Per averne la certezza però, dovrebbe mostrarne il contenuto anche di quel file, altrimenti si può andare avanti solo a supposizioni.

    Per quanto rigurada il link, mi pare chiaro che quello usato sia solo uno di esempio:
    Codice PHP:
    $activate_link = 'http://yourdomain.com/phplogin/activate.php?email=' . $_POST['email'] . '&code=' . $uniqid;
    Quindi il percorso va modificato con uno reale che corrisponda a quello nel suo sito dove ha messo il relativo file php richiesto.

    Il file php usato nel link è "activate.php", va modificato col nome del relativo file reale di cui dispone (ovvero fileactivate.php, sempre che poi sia quello il file).

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 06-07-2022 alle ore 18.25.20

  5. #5
    generatin non è connesso Neofita
    Data registrazione
    13-05-2019
    Messaggi
    27

    Predefinito

    Mi sembra di averci già provato a fare quello che dici, comunque il codice del file fileactivate.php è questo:
    Codice PHP:
    <?php
    // Change this to your connection info.
    $DATABASE_HOST = 'localhost';
    $DATABASE_USER = 'root';
    $DATABASE_PASS = 'xxxxxxxx';
    $DATABASE_NAME = 'xxxxxxxx';
    // Try and connect using the info above.
    $con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
    if (
    mysqli_connect_errno()) {
    // If there is an error with the connection, stop the script and display the error.
    exit('Failed to connect to MySQL: ' . mysqli_connect_error());
    }
    // First we check if the email and code exists...
    if (isset($_GET['email'], $_GET['code'])) {
    if (
    $stmt = $con->prepare('SELECT * FROM accounts WHERE email = ? AND activation_code = ?')) {
    $stmt->bind_param('ss', $_GET['email'], $_GET['code']);
    $stmt->execute();
    // Store the result so we can check if the account exists in the database.
    $stmt->store_result();
    if (
    $stmt->num_rows > 0) {
    // Account exists with the requested email and code.
    if ($stmt = $con->prepare('UPDATE accounts SET activation_code = ? WHERE email = ? AND activation_code = ?')) {
    // Set the new activation code to 'activated', this is how we can check if the user has activated their account.
    $newcode = 'activated';
    $stmt->bind_param('sss', $newcode, $_GET['email'], $_GET['code']);
    $stmt->execute();
    echo
    'Il tuo account è attivato! Ora puoi entrare <a href="index.html">login</a>!';
    }
    } else {
    echo
    'L\'account è già attivato o non esiste!';
    }
    }
    }
    ?>
    Ultima modifica di alemoppo : 06-07-2022 alle ore 18.59.31 Motivo: tag [code] -> [php]

  6. #6
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,252

    Predefinito

    Il file da usare dovrebbe essere questo, anche se il nome differisce un po' da quello nel link di esempio dell'altri script.

    Intanto lo script va confuguato nel modo corretto per usare il database su AlterVista, che è questo:
    Codice PHP:
    $DATABASE_HOST = 'localhost';
    $DATABASE_USER = 'NomeDominio';
    $DATABASE_PASS = '';
    $DATABASE_NAME = 'my_NomeDominio';
    Al posto di nome dominio nel suo caso va rimpiazzato con generatin. Non l'ho messo direttamente solo per cercare di spiegare meglio l'impostazione della confugurazione su Altervista.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 06-07-2022 alle ore 19.13.20

  7. #7
    generatin non è connesso Neofita
    Data registrazione
    13-05-2019
    Messaggi
    27

    Predefinito

    La configurazione per usare il database la sapevo già. Non l'ho inserito in discussione per non rendere pubblica la password e gli altri dati. Comunque hai fatto bene a sottolineare la questione. Ora riprovo a inserire il link di fileactivate.php nel codice. Forse la prima volta che ci ho provato non avevo eliminato il link di esempio e quindi credo che sia per questo motivo che mi dava errore.

  8. #8
    generatin non è connesso Neofita
    Data registrazione
    13-05-2019
    Messaggi
    27

    Predefinito

    Il test è andato a buon fine. Andava eliminato il link di esempio e inserire il link del fileactivate.
    Grazie.

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da generatin Visualizza messaggio
    La configurazione per usare il database la sapevo già. Non l'ho inserito in discussione per non rendere pubblica la password e gli altri dati.
    Nota che puoi lasciare la password vuota su AlterVista.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •