Ho un problema: cercavo di fare un modulo di registrazione nel mio sito ma il Database non accetta i dati.
Ecco il form:
Codice HTML:
<form name="form1" id="form1" method="POST" action="mail.php" onsubmit="return validazione(this)">
Username: <input type="text" id="user" name="user"><br />
Password: <input type="password" id="pass" name="pass"><br />
E-Mail: <input type="text" name="mail" id="mail"><br />
<input type="Submit" value="Registrati!"><br />
</form>
Non posto lo script che valida i campi perché quello funziona bene.
Codice PHP:
<?php
$user=$_POST['user']; //Recupero le variabili
$pass=$_POST['pass'];
$mail=$_POST['mail'];
$code=base64_encode(base64_encode($mail)."|".base64_encode($pass)."|".base64_encode($user)); //Costruisco il link per la registrazione
$to=$_POST['mail'];
$sub="Registrazione effettuata con successo";
$site="http://kingdomheartsite.altervista.org";
$mess="Ciao, grazie per esserti registrato al mio sito: $site. Qui sotto troverai il link di conferma per completare la registrazione, se è su più righe copialo e inseriscilo nel browser:
$site/confirm.php?c=$code";
$headers='From: noreply@kingdomheartsite.altervista.org' . "\r\n" .
'Reply-To: noreply@kingdomheartsite.altervista.org' . "\r\n" .
'X-Mailer: PHP/' .phpversion(); //Headers
mail($to,$sub,$mess,$headers);
echo "Registrazione Completata, clicca sul link che hai ricevuto nell'email. Alcuni provider potrebbero interpretarla come mail di spam";
?>
In pratica prendo i valori dei campi poi codifico la password per sicurezza e anche la mail e insieme li metto nel codice che comporrà il link di conferma e sono codificati in modo che non ri riesca a risalire ai dati. Poi manda la mail. Il problema viene quando si va nella pagina "confirm.php".
Codice PHP:
<?php require("connect.php"); ?>
<?php
$code=$_GET['c'];
$code=base64_decode($code);
list($mail,$pass,$user) = explode("|",$code);
$mail=base64_decode($mail);
$user=base64_decode($user);
$pass=base64_decode($pass);
$mail=mysql_real_escape_string($email);
$user=mysql_real_escape_string($user);
$pass=mysql_real_escape_string($pass);
$sql='INSERT INTO Users (Id,Username,Password,Email) VALUES (NULL,'.$user.','.$pass.','.$mail.');';
mysql_query($sql,$con) or die(mysql_error());
?>
Recupero le variabili e le decodo poi nel database inserisco i due dati (nel file connect.php ci sono i dati della connessione) solo che quando clicco mi si apre una pagina bianca e se vado nel database non è stato inserito nulla.
EDIT: Semi-risolto, ora con i valori non ha problemi solo che continua a darmi questo:
Codice:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Sempre in confirm.php