Il codice della funzione scrivi()
sarà abbastanza semplice, avremo la connessione al database, la lettura delle variabili passate dal form, l'inserimento dei dati via PDO
e un controllo sui campi obbligatori.
function scrivi(){
$db = connect();
$nome = $_REQUEST['nome'];
$cognome = $_REQUEST['cognome'];
$email = $_REQUEST['email'];
$password = password_hash($_REQUEST['password'], PASSWORD_BCRYPT);
if ($nome && $cognome && $email && $password) {
$sql='INSERT INTO utenti (nome, cognome, email, password) VALUES (:nome, :cognome, :email, :password)';
$stmt = $db->prepare($sql);
$stmt->execute([':nome' => $nome,':cognome' => $cognome,':email' => $email,':password' => $password]);
}
else{
$str=form();
return $str;
}
}
Un particolare da notare riguarda la crittografia della password, nell'ambiente di sviluppo standard di Google Cloud Platform disponiamo infatti di PHP 5.5, quindi non possiamo usare le nuove funzionalità dedicate di PHP 7.
A registrazione avvenuta possiamo dirottare l'utente sulla pagina di partenza grazie alla funzione header()
:
header('location: /');
Un approfondimento utile è costituito dall'opportunità di inviare un'email che confermi l'avvenuta registrazione, e, magari, possa essere sviluppata in scenari di conferma dell'iscrizione. L'invio dell'email può essere effettuato grazie all'uso dell'API Message
messa a disposizione dalla piattaforma, ovviamente previa inclusione:
use \google\appengine\api\mail\Message;
A questo punto, una volta avvenuto l'inserimento nel database possiamo passare all'invio dell'email. Come prima cosa creiamo l'oggetto:
$mail = new Message();
Aggiungiamo quindi il destinatario che recuperiamo dal form:
$mail->addTo([$email]);
e poi il mittente. In questo scenario abbiamo delle limitazioni che ci impongono di usare il dominio @test-guida-htmlit.appspotmail.com
che corrisponde alla nostra applicazione.
$mail->setSender('info@test-guida-htmlit.appspotmail.com');
Andiamo a inserire oggetto e corpo del messaggio:
$mail->setSubject('Registrazione avvenuta');
$mail->setTextBody('La registrazione è avvenuta con successo.');
Quindi possiamo procedere con l'invio:
$mail->send();
La registrazione è completa e viene notificata via email.