index.php
Codice PHP:
<?php
session_start
();
require(
'connessionedb.php'); //o le vostre istruzioni per il collegaamento al db

if(!isset($_SESSION['log'])) 
{
 
$_SESSION['log'] = 0;
}
if(!isset(
$_SESSION['username'])) 
{
 
$_SESSION['username'] = "Non Registrato";
}

// Ora controlliamo se $_SESSION['log']!=1, cioè se l'utente non è logato
if ($_SESSION['log'] != 1)
{
 
// Se non lo è procediamo come segue:
 
if(isset($_POST['pass']) && isset($_POST['user']))
 {
  
$qry_pass mysql_real_escape_string(md5($_POST['pass']));
  
$qry_user mysql_real_escape_string($_POST['user']);
  
/*Da notare l'utilizzo di md5 per trasformare di nuovo il valore della
  password passata nel suo hash per poterla confrontare con quella contenuta nel db.
  Poi procediamo verificando username, password e stato registrazione */
  
$query "SELECT * " .
            
"FROM user " .
            
"WHERE user_username = '$qry_user' " .
            
"AND user_password = '$qry_pass' " .
            
"AND user_reg = 1 ";
  
$results mysql_query($query) or die (mysql_error());

  if(
mysql_num_rows($results) != 0)
  { 
   
$row mysql_fetch_array($results);
   
$_SESSION['log'] = 1// utente logato
   
$_SESSION['username'] = $row['user_username'];
  }
 }
}
echo 
"Utente on-line: [b]" $_SESSION['username'] . "[/b]

"
;
?>


<html>
<head>
<title>Home Page</title>

<SCRIPT LANGUAGE="JavaScript">
function ver()
   {
   for (i=0; i<document.forms[0].elements.length; ++i)
      if(document.forms[0].elements[i].value == "")
         {
         alert("Inserire username e password!");
         document.forms[0].elements[i].focus();
         return false;
         }
   return true; 
   }
</SCRIPT>
</head>
<body>



<?php
/*Infine notiamo come a seconda del valore contenuto in $_SESSION['log'] 0/1
possiamo visulizzare alcune parti html piuttosto che altre.*/
if ($_SESSION['log'] != 1)
{
?>
<form name="login" action="index.php" method="post" onSubmit="return ver();">
Username

<input name="user" type="text" size="15" maxlength="11">


Password

<input name="pass" type="password" maxlength="8">


<input type="submit" name="submit" value="Login">
</form>


</p>


Non ti sei ancora registrato?</p>


[url="registrazione.php"]Clicca qui e registrati subito![/url]</p>
<?php
}else {
?>
<form name="logout" action="logout.php" method="post">
// onSubmit="return ver();" non serve
<input type="submit" name="submit" value="Logout">
</form>
<?php
}
?>
</body>
</html>
data_insert.php
Codice PHP:
<?php
require('connessionedb.php'); //o le vostre istruzioni per il collegamento al database
/*La prima cosa da notere è l'utilizzo di mysql_real_escape_string():
 - questa funzione ci permette di inserire nel db (se utiliziamo mysql)
il contenuto della variabile post esattamnete così com'è,
senza creare problemi di sintassi durante l'inserimento.Si veda l'esempio sotto*/
$user mysql_real_escape_string($_POST['user']); /* Se il valore contenuto in $_POST['user'] è: D'amico questo viene trasformato in: D'amico */
$user_mail $_POST['user']; // Viceversa se usiamo il metodo tradizionale di assegnazione
//rimane il valore originale assegnato: D'amico
//quello che in questo esempio ci serve per inviare una mail all'utente,
//contenente l'username originale (non trasformato).
$pass mysql_real_escape_string(md5($_POST['pass']));
//La funzione md5 ci permette di trasformare il contenuto di una stringa
//in una sequenza di 32 simboli alfa nimerici detta hash.
//Noi utiliziamo questa funzione per memorizzare nel db NON il valore originale della password,
//ma il suo hash.
//N.B. Questo significa che una volta persa (dimenticata) la password non è più possibile
//risalire al suo valore originale.
$pass_mail $_POST['pass']; 
$firstname mysql_real_escape_string($_POST['firstname']);
$lastname =  mysql_real_escape_string($_POST['lastname']);
//Poi verifichiamo che l'username e l'email non siano gia presenti nel db
$query "SELECT * FROM user " .
          
"WHERE user_username = '$user' " .
          
"OR user_email = '$pass' ";
$result mysql_query($query) or die (mysql_error());
if (
mysql_num_rows($result) != 0)
{
 while (
$row mysql_fetch_array($result))
 {
  
//username già presente nel db
  
if ($row['user_username'] == $user)
  {
   echo 
"

"
;
   echo 
"L'username, [b]" $row['user_username'] . "[/b] è già in uso da un altro utente, scegliere uno diverso";
   echo 
"</p>";
  }
  
//email già presente nel db
  
if ($row['user_email'] == $_POST['email'])
  {
   echo 
"

"
;
   echo 
"La casella E-mail, [b]" $row['user_email'] . "[/b] è già presente nel Data Base, scegliere una diversa";
   echo 
"</p>";
  }
 }
 
//rimandiamo l'utente alla pagina precedente
 
echo "

"
;
 echo 
"<a href=\"registrazione.php\">";
 echo 
"<<< Clicca qui per ritornare alla pagina precedente";
 echo 
"</a>";
 echo 
"</p>";
 exit();
}
//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 user
               (user_firstname,
        user_lastname,
         user_username,
        user_password,
        user_email)
      VALUES
        ('
$firstname',
        '
$lastname',
        '
$user',
        
$pass',
        '" 
$_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());
?>
<html>
<head>
<title>Inserimento dati</title>
</head>
<body>
<?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 confirm_reg.php.*/
//Vediamo come funziona
$to $_POST["email"];
$toname $_POST["firstname"];
$subject "Completa la tua registrazione";

/* 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
[url]http://phpmailer.sourceforge.net[/url] */

//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: [email]quellochevuoi@tuoserver.it[/email]\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 dati della tua registrazione:";
$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 "Salve " $toname ",\n\n";
$confirmmessage .= "per completare la tua registrazione devi cliccare sul link sottostante:\n\n";
$confirmmessage .= $html_msg "\n\n";
// Attenzione! Qui sotto dobbiamo inserire il percorso esatto che porta alla nostra pagina confirm_reg.php
$confirmmessage .= "<a href=\"http://localhost/percorso pagina confirm_reg.php" .
  
"?id=$msgid\">Clicca qui per confermare la tua registrazione</a>";
$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)
{
  echo 
"Salve" .  $toname ",
"
;
  echo 
"Un messaggio è stato inviato all'indirizzo [b]" $to "[/b] da te fornito.

"
;
  echo 
"IMPORTANTE:
"
;
  echo 
"Per completare la registrazione al sito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.

"
;
} else {
  echo 
"Errore durante l'invio dell'e-mail.";
}
?>
</body>
</html>