- Home
- Categorie
- Coding e Sistemistica
- PHP
- Cookie "irriconoscibile"
-
provo con il meta tag...
basta scrivere
[php]
echo "<meta http-equiv="refresh" content="0; url=".$url."" />";
[/php]giusto??
Per la seconda domanda, prima di tutto fa schifo, e lo so... Detto questo per il momento è una pagina di prova, quindi mi serviva un codice più semplice possibile, ed in secondo luogo il login mi servirebbe unicamente per identificare gli utenti, la sicurezza sarebbe abbastanza in secondo piano...
visto che ci sono comunque farò in modo di rendere lo script "sicuro", o quanto meno scritto un po' meglio!!
-
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??