Scusa ma come fai a creare le tabelle senza accedere al db?
Comunque ho creato il file registrazione.php (con la r minuscola!).
Ecco qui:
Codice PHP:
<?php
session_start();
if ($_SESSION['log'] == 1)
{
echo "<p><b>Sei già registrato!<br><br>";
exit();
}
?>
<!-- INIZIO CONTROLLO GENERALE -->
<?php
if(isset($_POST['Registrati'])){
require_once('connessione.php');
$idu = $_POST['id'];
$squadra = mysql_real_escape_string($_POST['squadra']);
$user = mysql_real_escape_string($_POST['user']);
$user_mail = $_POST['user'];
$pass_mail = $_POST['pass'];
$pass = mysql_real_escape_string(md5($_POST['pass']));
$confpass = mysql_real_escape_string(md5($_POST['confpass']));
$email = mysql_real_escape_string($_POST['mail']);
if ("$pass" != "$confpass") //Controlliamo che le due password siano le stesse, quindi se non lo è comparirà un messaggio di errore
{
echo "<p>";
echo "<span class=\"Stile8\">Le due password non coincidono.</span>";
echo "</p>";
}
else //Se invece le password sono uguali continuiamo
{
//Poi verifichiamo che l'username e l'email non siano gia presenti nel db
$query = "SELECT * FROM utenti " .
"WHERE username = '$user' " .
"OR idu = '$idu' " .
"OR email = '$email' ";
$result = mysql_query($query) or die (mysql_error());
if(!isset($_POST['id']) || empty($_POST['id']) || !isset($_POST['squadra']) || empty($_POST['squadra']) || !isset($_POST['username']) || empty($_POST['username']) || !isset($_POST['password']) || empty($_POST['password']) || !isset($_POST['conf_password']) || empty($_POST['conf_password']) || !isset($_POST['email']) || empty($_POST['email'])){ //Se qualche campo è vuoto, diamo un errore
echo "Devi riempire tutti i campi!";
}
else
{
if (mysql_num_rows($result) != 0)
{
while ($row = mysql_fetch_array($result)) //Adesso vediamo se l'utente e l'e-mail scelte dall'utente non siano già presenti nel database
{
//username già presente nel db
if ($row['username'] == $user)
{
echo "<p>";
echo "L'username <b>" . $row['username'] . "</b> è già in uso da un altro utente, sceglierne un'altro.";
echo "</p>";
}
//email già presente nel db
if ($row['email'] == $_POST['email'])
{
echo "<p>";
echo "L'e-mail <b>" . $row['email'] . "</b> risulta già registrata!";
echo "</p>";
}
}
}
//Se invece username e email non sono presenti nel db procediamo con l'inserimanto
else
{
switch ($_GET['action'])
{
case "add":
switch ($_GET['type'])
{
case "user":
$sql = "INSERT INTO utenti
(idu,
nome_squadra,
username,
password,
email)
VALUES
('$idu',
'$squadra',
'$password',
'" . $_POST['email'] . "')";
$users = mysql_query($sql) or die(mysql_error());
$id = mysql_insert_id(); // recuperiamo l'id (contenuto nel campo user_id) dell'utente appena inserito
break;
}
break;
//Andiamo avanti assegnando un valore casuale alla variabile $msgid:
//un valore identificativo che verrà inserito nella tabella confirm e permetterà la conclusione dell'iscirzione.
//Anche in questo caso utilizziamo la funzione md5, generando però un hash casuale, perchè l'hash generato sia diverso per ogni iscrizione.
$temp = gettimeofday();
$msec = (int) $temp["usec"];
$msgid = md5(time() . $msec);
$ins = "INSERT INTO confirm (confirm_validator,confirm_userid) VALUES ('$msgid','$id') ";
$res = mysql_query($ins) or die(mysql_error());
}
?>
<?php
/*Arrivati a questo punto non ci resta che spedire un'email all'utente (all'indirizzo fornito
in fase di registrazione) che contiene:la sua password in chiaro,il suo username ed un link
alla pagina conferma_registrazione.php.*/
//Vediamo come funziona
$to = $_POST["email"];
$toname = $_POST["firstname"];
$subject = "Registrazione al sito Schedina";
/* Prima di continuare apriamo una piccola parentesi, chiarendo un concetto molto semplice:
- Se vogliamo inviare un email che contiene formattazioni html, bisogna ricorrere all'utilizzo di una classe.
- Se si vuol mandare un'email semplice che non contiene formattazioni html, non è necessario usare una classe
Nel nostro esempio, abbiamo scelto di inviare un'eamil, utlizzando una classe che definisce
il corpo del messaggio e le intestazione del messaggio.
Forniamo un link ad una classe mail completa e performante
http://phpmailer.sourceforge.net */
//Definiamo la classe che definisce il corpo del messaggio ($message) e le intestazione del messaggio ($headers)
$boundary = "==MP_Bound_xyccr948x==";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
$headers .= "From: Schedina@schedina.it\r\n"; //inseriamo l'indirizzo email del mittente, cioè il nostro
$html_msg = "<center>";
$html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
$html_msg .= "<tr><td align=\"center\">";
$html_msg .= "</td></tr>";
$html_msg .= "<tr><td>Questi sono i tuoi dati:";
$html_msg .= "</td></tr><tr><td>Username: <font color=\"red\">" . $user_mail . "</font>";
$html_msg .= "</td></tr><tr><td>Password: <font color=\"red\">" . $pass_mail . "</font>";
$html_msg .= "</td></tr><tr><td align=\"center\">";
$html_msg .= "</td></tr></table></center>";
$confirmmessage = "Ciao " . $toname . ",\n\n";
$confirmmessage .= "per completare la tua registrazione devi cliccare <a href=\"http://nomeutente.altervista.org/conferma_registrazione.php" .
"?id=$msgid\">qui</a>\n\n";
$confirmmessage .= $html_msg . "\n\n";
// Attenzione! Il link della pagine conferma_registrazione.php dev'essere esatto.
$message = "This is a Multipart Message in MIME format\n";
$message .= "--$boundary\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage . "\n";
$message .= "--$boundary--";
$mailsent = mail($to, $subject, $message, $headers);
if ($mailsent)
{
header("Location: ?reg_ok=1");
$reg_ok = $_GET['reg_ok'];
if($reg_ok==1){
echo "Registrazione avvenuta con successo, " . $toname . "!<br>";
echo "Abbiamo mandato un messaggio automatico a <b>" . $to . "</b>.<br>";
echo "Per completare la registrazione devi seguire le istruzioni che troverai all'interno del messaggio con come oggetto <b>" . $subject . "</b>.<br />";
echo "Ricorda che finché non cliccherai sul link che ti abbiamo inviato alla E-Mail non potrai eseguire il login.<br />";
echo "Grazie.";
}
} else {
echo "Errore durante l'invio dell'E-Mail.";
}
}
}
}
}
?>
<!-- FINE CONTROLLO GENERALE -->
<?php
$reg_ok = $_GET['reg_ok'];
if($reg_ok!=1){
?>
<form name="modulo" action="registrazione.php?action=add&type=user" method="post" onSubmit="return (ver() && ControllaMail());">
ID
<br />
<input name="id" type="text" id="id" value="<?php echo $_POST['id'] ?>" />
<br />
Nome della squadra
<br />
<input name="squadra" type="text" id="password" value="<?php echo $_POST['squadra'] ?>" />
<br />
Username<br />
<input name="username" type="text" id="confpassword" value="<?php echo $_POST['username'] ?>" maxlength="20" />
<br />
Password<br />
<input name="password" type="password" id="password" />
<br />
Conferma Password <br />
<input name="conf_password" type="password" id="conf_password" />
<span id="_cognome" class="testoDiv">Inserisci il tuo cognome reale.</span></div>
<br />E-mail
<br /><input name="email" type="text" maxlength="50" value="<?php echo $_POST['email'] ?>" />
<br />
<input name="Registrati" type="submit" class="button" value="Registrati" />
</form>
<?php
}
?>
L'ho fatto manualmente, quindi può non funzionare qualcosa.
Poi attento che ho effettuato delle modifiche qui.
Ciao!