Jump to content
Sign in to follow this  
jstorelv

hvordan lage logout som fungerer?

Recommended Posts

Jeg har laget meg et script for innlogging, og prøver å lage et for utlogging, men får det ikke helt til.........

login.php

<?PHP 

function displayLogin() { 
header("WWW-Authenticate: Basic realm=\"My Website\""); 
header("HTTP/1.0 401 Unauthorized"); 
echo "<h2>Authentication Failure</h2>"; 
echo "The username and password provided did not work. Please reload this page and try again."; 
exit; 
} 


$db = mysql_connect('server_ip','user','password') or die("Couldn't connect to the database."); 
mysql_select_db('database') or die("Couldn't select the database"); 

if (!isset($PHP_AUTH_USER) || !isset($PHP_AUTH_PW)) { 
// If username or password hasn't been set, display the login request. 
displayLogin(); 
} else { 
// Escape both the password and username string to prevent users from inserting bogus data. 
$PHP_AUTH_USER = addslashes($PHP_AUTH_USER); 
$PHP_AUTH_PW = md5($PHP_AUTH_PW); 

// Check username and password agains the database. 
$result1 = mysql_query("SELECT count(id) FROM users WHERE password='$PHP_AUTH_PW' AND username='$PHP_AUTH_USER' AND activated='1'") or die("Couldn't query the user-database."); 
$num = mysql_result($result1, 0); 

if (!$num) { 
 // If there were no matching users, show the login 
 displayLogin(); 
 } 
} 
// All code/html below will only be displayed to authenticated users. 

$type=strtolower($_GET[type]);
$id=strtolower($_GET[id]);

if (!$_REQUEST['type']=='' and !$_REQUEST['id']==''):
session_start();
$_SESSION['loggedin'] = TRUE;
//Setter noen flere $_SESSION variablser her
echo "Du er nå innlogget!<br />"; 
echo "<a href=$type.php?id=$id> Klikk her for å gå tilbake</a>";
endif;
?> 

Har forøskt med denne logout.php fila:

<?php
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
  setcookie(session_name(), '', time()-42000, '/');
}

session_destroy();
// now that the user is logged out,
// go to login page or whatever
//header('Location: $type.php?id=$id');
$type=strtolower($_GET[type]);
$id=strtolower($_GET[id]);
echo '<html>';
echo '<head>';
echo '<meta http-equiv="Refresh" content="4;url='.$type.'.php?id='.$id.'">';
echo '</head>';
echo '</html>';
?>

Men jeg får problemer med at neste gang jeg kaller login.php så slipper jeg å skrive brukernavn/passord så lenge jeg ikke har stenge browseren.

 

Noen som kan hjelpe her??

Share this post


Link to post

som dere ser, så har jeg session_destroy i logout scriptet jeg har testet.

Det som skjer er som følger:

- Jeg logger inn

- Angir brukernavn/passord i innloggingen

- Sidene opptrer som om jeg er innlogget.

- Jeg logger meg ut.

- Sidene opptrer som om jeg IKKE er innlogget.

- Jeg logger inn.

- Trenger ikke å angi brukernavn/passord.

- Sidene opptrer som om jeg er innlogget.

 

Jeg ønsker at jeg skal måtte angi brukernavn/passord for å logge meg inn på nytt, og ikke slik det er nå, hvor jeg ikke trenger det.

Share this post


Link to post

Problemet her er at du bruker Apache sitt innloggingsystem av det jeg kan se, nemlig htaccess måten. Og da er det Apache som styrer showet. Reglen der er vel at du må lukke nettleseren for at du skal bli logget ut.

 

Du kan jo prøve og bare lage en "falsk link" til utlogging:

 

http://www.ssi-developer.net/htaccess/htaccess_logout.shtml

Share this post


Link to post

Har du et forslag til hvordan jeg kan gjøre det uten htaccess da?

Slik at jeg kan bruke bare sessions og kjøre destroy_session ved utlogging?

Gjerne med samme funksjonalitet som jeg har i dagens login.php med at jeg inluderer fila i alle sider som krever pålogging.........

Share this post


Link to post
som dere ser, så har jeg session_destroy i logout scriptet jeg har testet.

 

 

da bør du også lese dokumentasjonen til session_destroy...

 

session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie.

 

In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.

 

selv om du logger deg ut ved hjelp av dette er det ikke sikkert alle "forbindelser" til innloggingen blir ødelagt,,,,

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...