Na pocetnoj strani treba da prikaze ime korisnika koji je ulogovan i da prikaze link za logout, a ako nije ulogovan, onda da stoji link za login.
Klikom na link za login dobija da upise user i pass i onda ide provera iz baze podataka. Ako je sve u redu upisuje cookie i vraca na index kako bi tamo napisao da je korisnik ulogovan i iz baze procitao username. To radi tako sto proverava da li je cookie upisan i uporedjuje vrednosti sa onima iz baze. I to kao sve radi kako treba... osim dela kada kliknem da se izlogujem. Tada se samo obrise username, dok i dalje pise da sam ulogovan, a u stvari nisam jer je i cookie obrisan klikom na logout.
Da li neko moze da mi kaze gde gresim i zasto mi cookie_check stalno vraca true vrednost, a nikad false...
Hvala unapred.
p.s.
Ako mislite da ovo moze da se napise drugacije ali da radi isto ovako, to bi bilo jos bolje :)
<?php
include('includes/db.php');
$cookie_length = 3600;
$hostname = "127.0.0.1";
$userdata = get_userdata($_COOKIE['test_user_id']);
$logged_in = cookie_check();
$q = ( isset($HTTP_GET_VARS['q']) ) ? $HTTP_GET_VARS['q'] : $HTTP_POST_VARS['q'];
switch( $q )
{
case 'index':
default:
index();
break;
case 'login':
login();
break;
case 'login_check':
login_check($username, $password);
break;
case 'cookie_check':
cookie_check();
break;
case 'logout':
logout();
break;
}
function index() {
global $userdata, $logged_in;
if ( $logged_in == true ) {
echo 'Vi (' . $userdata['username'] . ') ste ulogovani!<br /><a href="?q=logout">Izlaz</a><br />';
}
else
{
echo '<a href="?q=login">Logovanje</a>';
}
}
function login() {
echo '<form name="login_form" method="post" action="?q=login_check">
Username:
<input name="username" type="text" id="username">
<br>
Password:
<input name="password" type="password" id="password">
<br>
<input type="submit" name="Submit" value="Submit">
</form>';
}
function login_check($username, $password) {
global $cookie_length, $hostname;
$username = stripslashes($username);
$password = stripslashes($password);
$sql = mysql_query("SELECT * FROM user WHERE username = '$username' AND password = '$password'");
$login_check = mysql_num_rows($sql);
if( $login_check > 0 ){
$row = mysql_fetch_array($sql);
setcookie('test_user_id', $row['user_id'], time() + $cookie_length, '/', $hostname, 0);
setcookie('test_user_passwd', $row['password'], time() + $cookie_length, '/', $hostname, 0);
header("Location: ?q=index");
}
else
{
echo "Uneti podaci nisu tacni!";
}
}
function get_userdata($user_id)
{
$user_id = intval($user_id);
$sql = "SELECT * FROM user
WHERE user_id = $user_id";
if ( !($result = mysql_query($sql)) )
{
die("Trazeni korisnik ne postoji!");
}
return ( $row = mysql_fetch_array($result) ) ? $row : false;
}
function cookie_check() {
$cookie_user_id = $_COOKIE['test_user_id'];
$cookie_passwd = $_COOKIE['test_user_passwd'];
$userdata = get_userdata($cookie_user_id);
if ( ( $userdata['user_id'] == $cookie_user_id ) && ( $userdata['password'] == $cookie_passwd ) ) {
$logged_in_check = 1;
}
else
{
$logged_in_check = 0;
}
return ( $logged_in_check == 1 ) ? true : false;
}
function logout() {
global $cookie_length, $hostname;
setcookie('test_user_id', '', time() - $cookie_length, '/', $hostname, 0);
setcookie('test_user_passwd', '', time() - $cookie_length, '/', $hostname, 0);
header("Location: ?q=index");
}
?>
[Ovu poruku je menjao NenadS dana 17.05.2006. u 18:03 GMT+1]