- Home
- Categorie
- Coding e Sistemistica
- PHP
- Cookie "irriconoscibile"
-
Il meta tag va bene cos', ovviamente lo devi mettere nell'<head></head> (occhio solo alle virgolette...)
Per quanto riguarda la sicurezza secondo me è meglio sempre scrivere codice sicuro anche se si sviluppa in locale, poi uno magari si dimentica e sono problemi...
-
su quello sono d'accordo...però in questo caso l'applicazione che sto sviluppando è talmente incasinata che piano piano sto mettendo insieme tutti i pezzettini per ottenere qualcosa di accettabile!
Prova col meta tag e poi aggiorno...
-
Fatta la prova...
Ma non è cambiato nulla...ho inserito questo codice
[HTML]
<html>
<head>
<meta http-equiv="refresh" content="2; url=asd.php">
</head>
<body>
</body>
</html>
[/HTML]
ma la pagina asd.php continua a stampare cookie non riconosciuto
-
Fatta la prova...
Ma non è cambiato nulla...ho inserito questo codice
[html]
<html>
<head>
<meta http-equiv="refresh" content="2; url=asd.php">
</head>
<body>
</body>
</html>
[/html]
ma la pagina asd.php continua a stampare cookie non riconosciuto
-
Scusa in asd.php puoi fare un
[PHP]echo "<pre>";
print_r($_COOKIE);
echo "</pre>";[/PHP]
e vedere che ti dice?
-
ecco fatto...
l'output è
Array()
-
Ecco, allora vuol dire che il cookie non viene settato nella pagina originaria - però senza vedere tutto il codice, a questo punto, è impossibile capire che succede... Non è che c'è uno spazio o qualcosa prima del PHP? Hai i warning attivati (error_reporting almeno a E_WARNING e display_errors su stdout)?
-
ti posto tutto il codice della pagina...
[php]
<?php
include "../config.php";
include "../lib/_db.php";$user = $_POST["username"];
$pass = md5($_POST["password"]);
$db = new Database();
$db->connect();
$query = "SELECT id, username, password FROM users WHERE username='$user' AND password='$pass'";
$result = $db->query($query);
$num_row = mysql_affected_rows();if ( $result == true && $num_row !== 0) {
// utente riconosciuto
$row = mysql_fetch_array($result);
//
//settaggio coockie
//$cookie_name = $row["id"]."@versioner.com";
$cookie = setcookie("versioner", $row["username"]);
//$cookie = setcookie("versioner", "admin");
//header("Refresh: 2; URL=asd.php");
echo "Utente <b>".$row["username"]."</b> riconosciuto con successo"."<br>\n";
if ( $cookie ) {
echo "Cookie inviato con successo<br>\n";
echo "Cookie: ".$_COOKIE["versioner"]."<br>\n";
}
else
echo "Cookie non inviato";
}
else
echo "Utente $user non trovato nel database";//controllare che l'utente esista e se esiste settare il coockie
?>
[/php]
[html]
<html>
<head>
<meta http-equiv="refresh" content="2; url=asd.php">
</head>
<body>
</body>
</html>
[/html]Tutto qui...non ci sono spazi prima di <?php, e la funzione setcookie() ritorna true...il che è strano visto che di fatto il cookie non viene settato...
la visualizzazione errori è su E_ALL, quindi mi fa vedere tutto...
-
Ah, forse ho trovato - mysql_fetch_array restituisce un ARRAY, non un HASH, quindi $row["username"] non dovrebbe esistere! Prova con $row[0] oppure usando mysql_fetch_assoc (o, ancora meglio, usando MDB2, ma questa è un'altra storia...)
-
però aspetta un attimo... my_sql_fetch_array restituisce un array associativo, i cui campi sono nominati a seconda del nome della colonna della taballa da cui sono presi.
Inoltre se io faccio echo $row["username"], mi viene stampato il valore corretto...Io provo, ma non credo proprio che l'errore sia li.
Considera inoltre che ho usato sempre quella funzione in quel modo in tutti gli altri script, e non ha mai dato problemi di funzionamento.La cosa che mi stupisce è che questi problemi li ho solo quando tento di usare cookie o sessioni. Anche altri script già fatti e sicuramente funzionanti non mi loggano mai correttamente quando li uso in locale. Faccio ancora la prova di uploadare tutto su server e vedere se così funziona...
Per conoscenza, cos'è MDB2??