Email non valida - Problema login

22 Gen 2013
26
0
0
Salve, ho un problema riguardo un form di login.
Alcuni utenti (lo 0.02%) hanno riscontrato un problema nell'autenticarsi, l'errore che lo script da è : Email non valida.
Il problema è che cambiando browser (la maggior parte utilizza safari) non da più questo problema. A cosa può essere dovuto? Ecco lo script

HTML:
            <!-- Inizio Login -->
            <div id="loginContainer">
                <a href="#" id="loginButton"><span>Login</span><em></em></a>
                <div style="clear:both"></div>
                <div id="loginBox">                
                    <form id="loginForm" action="index.php?id=login" method="post">
                        <fieldset id="body">
                            <fieldset>
                                <label for="email">Indirizzo Email</label>
                                <input type="text" name="email" id="email" />
                            </fieldset>
                            <fieldset>
                                <label for="password">Password</label>
                                <input type="password" name="password" id="password" />
                            </fieldset>
                            <input type="submit" name="submit" id="login" value="Login" />
                            <label for="checkbox"><input type="checkbox" id="checkbox" />
                            Ricordami</label>
                        </fieldset>
                        <span><a href="#">Dimenticato la Password?</a></span>
                    </form>
                </div>
            </div>
            <!-- Fine login -->



PHP:
//Controllo definizione nella pagina principale
if ( ! defined( 'IN_INDEX' ) )
{
	print "<h1>Accesso Errato</h1>Non puoi accedere direttamente a questo file.";
	exit();
}

//Inizio script registrazione
if(isset($_POST['submit'])) {
$data['email'] = $_POST['email'];
$password = $_POST['password'];
// Controllo campi vuoti
if(empty($data['email']) || empty($password)) {
	$_SESSION['redirect'] = 'index.php?id=log_fallito&qid=1';
	header('Location: '.HEADER_DIR);
	die();
}

// Email valida - QUESTO E' L'ERRORE, HO ANCHE PROVATO CON PREG REPLACE MA NIENTE
if(!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
	$_SESSION['redirect'] ="index.php?id=log_fallito&qid=2";
	header('Location:  '.HEADER_DIR);
	die();
}
	
//Criptazione password
$password = cripta($password);
// Controllo login esistente e corrispondente
if(controllo_corrispondenza(SQL_UTENTI, SQL_EMAIL, $data['email'], SQL_PASS, $password) == 0) {
	$_SESSION['redirect'] = 'index.php?id=log_fallito&qid=3';
	header('Location:  '.HEADER_DIR);
	die();
}

//Controllo checkbox
if(isset($_POST['ricordami'])){
setcookie("ulg", $_POST['email'], time()+518400);
setcookie('ups', encryptCookie($_POST['password']), time()+518400);
setcookie("checkbx", "1", time()+518400);
} else{
	 setcookie("ulg", "", time()-3600);
	 setcookie("ups", "", time()-3600);
	 setcookie("checkbx", "", time()-3600);
}

//Ip
$data['data'] = date ("d.m.y-H:i:s");
$data['ip'] = getRealIpAddr();
$data['info'] = 'login';
// Log
$db->query_insert(SQL_LOG, $data);

//Prendi id utente
$campi = prendi_campi(SQL_UTENTI, 'id,username', $data['email'], SQL_EMAIL);
$id_utente = $campi['id']; 
$username = $campi['username'];
//Controllo username sessione
if($username != '') {
$_SESSION['username'] = $username;
$db_2 = new Database("#", "#", "#", "#");
$db_2->connect(true);

$rows = $db_2->query("SELECT * FROM users WHERE username = '$username'");
$record = $db_2->fetch_array($rows);
$_SESSION['userid'] = $record['id'];
$db_2->close();
}
	
	$_SESSION['login'] = 1;
	$_SESSION['id_utente'] = $id_utente;
	header('Location:  '.HEADER_DIR);
	die();
}
 
ciao
visto così non mi sembra che ci siano errori,
eventualmente prova, prima del validate dargli il sanitize
PHP:
$data['email']=filter_var($data['email'], FILTER_SANITIZE_EMAIL);
poi piccola domanda perche usi l'array? non puoi usare una semplice variabile?
 
ciao
visto così non mi sembra che ci siano errori,
eventualmente prova, prima del validate dargli il sanitize
PHP:
$data['email']=filter_var($data['email'], FILTER_SANITIZE_EMAIL);
poi piccola domanda perche usi l'array? non puoi usare una semplice variabile?

Uso l'array perchè inserisco poi il login nella tabella log, volendo si avrei potuto utilizzare una variabile ma non penso causi questa l'incompatibilità.
PHP:
$data['data'] = date ("d.m.y-H:i:s"); 
$data['ip'] = getRealIpAddr(); 
$data['info'] = 'login'; 
// Log 
$db->query_insert(SQL_LOG, $data);
Anche perchè, su circa 2.000 utenti solo 7 hanno riscontrato questo problema, e per quanto mi piacerebbe ignorarli vorrei risolvere il problema :eek:
 

Discussioni simili