Ciao a tutti.. ho un problema con i cookies riguardanti il controllo di login di un utente.. ho due pagine admin.php (dove c'è la form) e auth.php (dove ci sono le funzioni)
admin.php
Codice PHP:
<?
include_once("auth.php");
include_once("header.php");
include_once("menu.php");
if(!isset($_POST["user"])) {
echo '
<div class="content">
<div class="left">
<div class="item">
<form name="form" method="post" action="admin.php">
Ola, se fai parte dello staff del sito inserisci il tuo Nick e la tua Password per accedere all’area riservata!!</p>
Nick:
<input type="text" name="user">
Password:
<input type="password" name="pass">
</p>
<input name="Login" type="submit" id="Login" value="Login">
<input name="Cancella" type="reset" id="Cancella" value="Cancella">
</p>
</form>
</div>
</div>
<br class="clearer"/><span></span>
</div>
';
}else{
if(login($_POST["user"], $_POST["pass"]) == 0)
{
$connect = mysql_connect(HOST_DB, USER_DB, PASS_DB)
or die("Connessione non riuscita");
mysql_select_db(NAME_DB)
or die("Selezione del database non riuscita");
$query = "
SELECT *
FROM `utenti`
WHERE `nick` = '".$_POST["user"]."'
AND `password` = '".$_POST["pass"]."'
";
$sql = mysql_query($query)
or die("Query fallita: ". $query);
echo '
<div class="content">
<div class="left">
<div class="item"> ';
while ( $dati = mysql_fetch_array($sql) ) {
echo '<h1> Ciao '.$dati["nome"].' '.$dati["cognome"].'!!</h1>';
};
echo '
</div>
</div>
<br class="clearer"/><span></span>
</div>
';
}
else{
echo '
<div class="content">
<div class="left">
<div class="item">
<h1>Opssss</h1>
Ue furbacchione.. le possibilità sono due: o hai sbagliato a fare il login, oppure mi sa tanto che non hai l\'autorizzazione ad entrare in questa sezione protetta.</p>
</div>
</div>
<br class="clearer"/><span></span>
</div>
';
}
}
include_once("footer.php");
?>
auth.php
Codice PHP:
<?php
include_once("config.php");
function auth(){
if(isset($_COOKIE["USER"])) {
$connect = mysql_connect(HOST_DB, USER_DB, PASS_DB)
or die("Connessione non riuscita");
mysql_select_db(NAME_DB)
or die("Selezione del database non riuscita");
$query = "
SELECT * FROM `sessions` WHERE
`user` = '". $_COOKIE["USER"] ."' AND `pass` = '". $_COOKIE["PASS"] ."'
AND `session` = '". $_COOKIE["SESSION"] ."'
";
$result = mysql_query($query)
or die("Query fallita");
$line = mysql_fetch_array($result, MYSQL_ASSOC);
if(mysql_num_rows($result) == 1) {
$auth = 0;
}else{
$auth = -1;
}
$query = "DELETE FROM sessions WHERE time < ". (time()-(60*60*24)) .";";
mysql_query($query);
mysql_free_result($result);
mysql_close($connect);
}else{
$auth = -1;
}
return $auth;
}
function login($user, $pass) {
$user=$_POST['user'];
$pass=$_POST['pass'];
$pass=urlencode($pass);
$connect = mysql_connect(HOST_DB, USER_DB, PASS_DB)
or die("Connessione non riuscita");
mysql_select_db(NAME_DB)
or die("Selezione del database non riuscita");
$query = "
SELECT *
FROM `utenti`
WHERE `nick` = '".$user."'
AND `password` = '".$pass."'
";
$sql = mysql_query($query)
or die("Query fallita: ". $query);
$numrows=mysql_num_rows($sql);
if ($numrows == 1)
{
$time = time();
$session = time()+$user+$pass;
mysql_query("INSERT INTO session (user, pass, session, time)
VALUES ('" . $user . "', '" . $pass . "', '" . md5($session) . "', '" . $time . "');")
or die("Query fallita");
setcookie ("USER", $user);
setcookie ("PASS", $pass);
setcookie ("SESSION", md5($session));
setcookie ("TIME", $time);
return 0;
}
else
{
return -1;
}
mysql_free_result($result);
mysql_close($connect);
}
?>
Nel file config.php ci sono le variabili di connessione al db.
Mi da questi errori:
codice:
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\cpg\auth.php:111) in c:\programmi\easyphp1-8\www\cpg\auth.php on line 93
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\cpg\auth.php:111) in c:\programmi\easyphp1-8\www\cpg\auth.php on line 94
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\cpg\auth.php:111) in c:\programmi\easyphp1-8\www\cpg\auth.php on line 95
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\cpg\auth.php:111) in c:\programmi\easyphp1-8\www\cpg\auth.php on line 96
Quelle righe sono le righe (appunto
) dove ci sono i 4 setcookies:
setcookie ("USER", $user);
setcookie ("PASS", $pass);
setcookie ("SESSION", md5($session));
setcookie ("TIME", $time);
Come risolvo?? Grazie