Buongiorno! Sto utilizzando uno script per la registrazione costruito grazie ad una guida presente qui.
Funziona tutto bene, tranne per il fatto che non arriva, all'utente che si registra, la mail di conferma per attivare l'account.
In sostanza c'è un form per la compilazione che invia i dati a
REGISTER.PHP
Codice PHP:
<html>
<head>
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
}
-->
</style>
</head>
<body>
<?php
include_once("include/config.php");
include_once("include/reg.lib.php");
if(isset($_POST['action']) and $_POST['action'] == 'Invia'){
$ret = reg_check_data($_POST);
$status = ($ret === true) ? reg_register($_POST) : REG_ERRORS;
switch($status){
case REG_ERRORS:
?>
<span class="style1">Sono stati rilevati i seguenti errori:</span>
<?php
foreach($ret as $error)
printf("[b]%s[/b]: %s
", $error[0], $error[1]);
?>
Premere "indietro" per modificare i dati
<?php
break;
case REG_FAILED:
echo "Registrazione Fallita a causa di un errore interno.";
break;
case REG_SUCCESS:
echo "Registrazione avvenuta con successo.
Vi è stata inviata una email contente le istruzioni per confermare la registrazione.";
break;
}
}
?>
</body>
</html>
E questi sono i due include
reg.lib.php
Codice PHP:
<?php
function reg_register($data){
//registro l'utente
global $_CONFIG;
$id = reg_get_unique_id();
mysql_query("
INSERT INTO ".$_CONFIG['table_utenti']."
(name, surname, mail, indirizzo, citta, cap, provincia, paese, telefono, cellulare, password, temp, regdate, uid)
VALUES
('".$data['name']."','".$data['surname']."','".$data['mail']."','".$data['indirizzo']."',
'".$data['citta']."','".$data['cap']."','".$data['provincia']."','".$data['paese']."','".$data['telefono']."','".$data['cellulare']."',MD5('".$data['password']."'),
'1', '".time()."','".$id."')");
//Decommentate la riga seguente per testare lo script in locale
//echo "<a href=\"http://localhost/Articoli/autenticazione/2/scripts/confirm.php?id=".$id."\">Conferma</a>";
if(mysql_insert_id()){
return reg_send_confirmation_mail($data['mail'], "test@localhost", $id);
}else return REG_FAILED;
}
function reg_send_confirmation_mail($to, $from, $id){
//invio la mail di conferma
$msg = "Per confermare l'avvenuta registrazione, clicckate il link seguente:
[url]http://localhost/Articoli/autenticazione/1/scripts/confirm.php?id=[/url]".$id."
";
return (mail($to, "Conferma la registrazione", $msg, "From: ".$from)) ? REG_SUCCESS : REG_FAILED;
}
function reg_clean_expired(){
global $_CONFIG;
$query = mysql_query("
DELETE FROM ".$_CONFIG['table_utenti']."
WHERE (regdate + ".($_CONFIG['regexpire'] * 60 * 60).") <= ".time()." and temp='1'");
}
function reg_get_unique_id(){
//restituisce un ID univoco per gestire la registrazione
list($usec, $sec) = explode(' ', microtime());
mt_srand((float) $sec + ((float) $usec * 100000));
return md5(uniqid(mt_rand(), true));
}
function reg_check_data(&$data){
global $_CONFIG;
$errors = array();
foreach($data as $field_name => $value){
$func = $_CONFIG['check_table'][$field_name];
if(!is_null($func)){
$ret = $func($value);
if($ret !== true)
$errors[] = array($field_name, $ret);
}
}
return count($errors) > 0 ? $errors : true;
}
function reg_confirm($id){
global $_CONFIG;
$query = mysql_query("
UPDATE ".$_CONFIG['table_utenti']."
SET temp='0'
WHERE uid='".$id."'");
return (mysql_affected_rows () != 0) ? REG_SUCCESS : REG_FAILED;
}
?>
e
config.php
Codice PHP:
<?php
$_CONFIG['host'] = "***";
$_CONFIG['user'] = "***";
$_CONFIG['pass'] = "***";
$_CONFIG['dbname'] = "***";
$_CONFIG['table_sessioni'] = "sessioni";
$_CONFIG['table_utenti'] = "utenti";
$_CONFIG['expire'] = 60;
$_CONFIG['regexpire'] = 24; //in ore
$_CONFIG['check_table'] = array(
"username" => "check_username",
"password" => "check_global",
"name" => "check_global",
"surname" => "check_global",
"indirizzo" => "check_global",
"occupazione" => "check_global",
"mail" => "check_global"
);
function check_username($value){
global $_CONFIG;
$value = trim($value);
if($value == "")
return "Il campo non può essere lasciato vuoto";
$query = mysql_query("
SELECT id
FROM ".$_CONFIG['table_utenti']."
WHERE username='".$value."'");
if(mysql_num_rows($query) != 0)
return "Nome utente già utilizzato";
return true;
}
function check_global($value){
global $_CONFIG;
$value = trim($value);
if($value == "")
return "Il campo non può essere lasciato vuoto";
return true;
}
if($_POST['password'] != $_POST['conferma']){
echo "Le password inserite sono diverse!";
return true;
}
//--------------
define('AUTH_LOGGED', 99);
define('AUTH_NOT_LOGGED', 100);
define('AUTH_USE_COOKIE', 101);
define('AUTH_USE_LINK', 103);
define('AUTH_INVALID_PARAMS', 104);
define('AUTH_LOGEDD_IN', 105);
define('AUTH_FAILED', 106);
define('REG_ERRORS', 107);
define('REG_SUCCESS', 108);
define('REG_FAILED', 109);
$conn = mysql_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass']) or die('Impossibile stabilire una connessione');
mysql_select_db($_CONFIG['dbname']);
?>