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) > $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']);
?>