-
Registrazione utenti
Salve, sto aggiornando i miei codici PHP che usavano funzioni tipo mysqli_, con PDO; tutto funziona bene tranne per la procedura di registrazione di utenti con relativo salvataggio in una tabella del database.
Non riesco a venire a capo di come impostare la mail da inviare all'indirizzo di registrazione, la pagina che dovrebbe gestire la cosa fallisce sempre questo passaggio
Codice:
if (mail($a, $oggetto, $messaggio, $intestazioni, "-f" . $mittente_altervista))
L'utente viene comunque aggiunto nel database, con tanto di password criptata con password_hash() e token generato da bin2hex(random_bytes(32)); la mail dovrebbe contenere il link per attivare l'account innescando una pagina attiva.php che convalida il token...
Quel "-f" mi è stato suggerito da Gemini perché pare sia necessario su questo hosting, ma anche rimuovendolo non cambia nulla.
PHP impostato alla versione 8.
Sono fermo da giorni su questo :cry: , prima con mysqli_ funzionava.
-
Cosa valgono i vari valori? Fallisce perché ritorna false o non vedi l'email inviata?
$mittente_altervista è il tuo alias? <username>@altervista.org ?
Ciao!
-
I valori sono i parametri necessari alla funzione mail() di PHP (https://www.w3schools.com/php/func_mail_mail.asp) provata anche nella versione a tre parametri (destinatario, oggetto/titolo della mail, messaggio con link di attivazione), inutilmente.
$mittente_altervista è gasweb@altervista.org.
Il risultato si ferma ad aggiungere il record nella tabella degli utenti, ma anziché inviare la mail finisce nell'else con stampa del messaggio previsto "Utente aggiunto ma si è verificato un problema nell'invio della mail", che effettivamente non parte.
Attualmente ho ripiegato mostrando il link di attivazione nella pagina web (almeno per testare il codice php di elaborazione del token e di attivazione dell'account), e a quel punto tutto funziona, ma sto bypassando qualunque server SMTP dato che la mail dell'utente viene solo caricata nel database ma non sfruttata come destinazione di una mail che non è più spedita.
-
Confermo che i valori sono necessari (non ho mai detto il contrario :=): ).
Dalla tua risposta, presumo che mail() ritorna false perché parli di "else" (non vedendo il codice vado un po' ad intuito).
SMTP non funziona su AlterVista, ma mail() dovrebbe funzionare, o al più puoi usare servizi esterni come Brevo o SendGrid.
Tornando a mail(), se torna false probabilmente AlterVista ti ha disabilitato l'invio email per qualche motivo. Sul pannello di controllo -> Messaggi hai qualche comunicazione in merito? Oppure ti è arrivata qualche email? Se trovi la comunicazione, dovresti trovare anche il link per riattivare l'invio email. Se non lo trovi, fammi sapere.
Se invece non torna false, prova ad esempio come indicato qui.
Ciao!