PDA

View Full Version : [php] Il mio sistema di login non funziona su iphone!


gino46
09-09-2013, 08:36
Salve,

ho creato una pagina web per la gestione del login, sui pc funziona perfettamente, su altri smartphone non ho provato, ma su iphone non funziona, sono sicuro che le credenziali che inserisco sono giuste!

eccovi gli script:

<?php

// inizializzazione della sessione
session_start();

// inclusione del file contenente la classe
include "functions.php";

// istanza della classe
$data = new MysqlClass();

// connessione a MySQL
$data->connetti();

// se i cookies sono impostati, e contengono informazioni corrette
if ($data->LoginCookie() == true)
{
$data->disconnetti();
header("Location: Gestione.php");
}

// controllo bruteforce
if (isset($_SESSION['bruteforce']))
{
$data->disconnetti();
header("Location: BruteForce.php");
}

// controllo parametri
if ((isset($_POST['submit']) && (trim($_POST['submit']) == "Login")) && $_POST['username'] != "" && $_POST['password'] != "")
{
// validazione dei parametri tramite filtro per le stringhe
$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
$password = trim(filter_var($_POST['password'], FILTER_SANITIZE_STRING));
$password = hash('sha512', $password);

// interrogazione della tabella
$auth = $data->query("SELECT * FROM login WHERE username = '$username' AND password = '$password'");
$res = $data->estrai($auth);

// controllo sul risultato dell'interrogazione
if ($res->username != $username || $res->password != $password)
{
$data->CheckBruteForce();
// reindirizzamento alla homepage in caso di insuccesso
header("Location: index.php");
}
else
{
// imposta cookie
$array = array($username, $password);
setCookie('gesa', implode(',', $array), time()+31536000, '/', ' ', 0);

// disconnessione da MySQL
$data->disconnetti();

// reindirizzamento alla pagina di amministrazione in caso di successo
header("Location: Gestione.php");
}
}
else
{
// form per l'autenticazione
?>
<TITLE>
Login
</TITLE>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

<br>
<table border="0" align="center">
<tr align="center">
<td><font size="30">Username:</font></td>
<td><input name="username" type="text" style="font-size:30px"></td>
</tr>
</table>

<table border="0" align="center">
<tr align="center">
<td><font size="30">Password:</font></td>
<td><input name="password" type="password" style="font-size:30px"></td>
</tr>
</table>
<br>
<table border="0" align="center">
<tr align="center">
<td><button type="submit" name="submit" value="Login" style="height: 200px; width: 300px" ><font size="30">Login</font></button></td>
</tr>
</table>
</form>
<?
}
?>


lo script di gestione:

<?php

// inizializzazione della sessione
session_start();

// inclusione del file contenente la classe
include "functions.php";

// istanza della classe
$data = new MysqlClass();

// connessione a MySQL
$data->connetti();

// se i cookies non sono impostati, oppure lo sono ma non contengono informazioni corrette esci
if ($data->LoginCookie() == false)
{
header("Location: Index.php");
}

// Logout
if ($_GET["submit"] == 'Logout')
{
setcookie('gesa' , time()-50000);
header("location: index.php");
}

if ($_GET["submit"] == 'uno')
{
header("Location: uno.php");
}

?>

<TITLE>
Gestione
</TITLE>
<form>
<br>
<table border="0" align="center">
<tr align="center">
<td><button type="submit" name="submit" value="uno" style="height: 200px; width: 300px" ><font size="30">uno</font></button></td>
</tr>
</table>


la funzione che mi fa il controllo cookie è fatta così:

// controlla esistenza cookie e contenuto
public function LoginCookie()
{
if(isset($this->attiva))
{
if (isset($_COOKIE['gesa']))
{
$array = unserialize($_COOKIE['gesa']);
$username = $array[0];
$password = $array[1];
$auth = $this->query("SELECT * FROM login WHERE username = '$username' AND password = '$password'");
$res = $this->estrai($auth);
if ($res->username == $username && $res->password == $password)
{
return true;
}
}
}
}


Trovate qualcosa di strano?

grazie ciao.

edino95
09-09-2013, 12:07
allora io per risolvere il problema ho eliminato la gestione dei cookie ho usato solo le sessioni dato che l'i-phone e anche internet explorer presentano qualche problema a gestirli ... per il resto non ho analizzato bene perchè vado di fretta ma non mi sembra ci siano problemi

gino46
09-09-2013, 12:30
Innanzitutto grazie della risposta,

Inizialmente usavo le sessioni, le ho abbandonate perchè almeno una volta al giorno mi occorreva inserire le credenziali, le sessioni ogni 3 per due si chiudono!
Ho scelto i cookie proprio per sopperire a questo problema, la pagina web che ho creato serve a gestire la domotica di casa, basta entrare premere un tasto per alzare le tapparelle, accendere le luci, ecc, se devo ogni volta inserire anche le credenziali (sarò pigro ma è cosi) preferisco fare tutto a mano :D