Avatar billede tras Juniormester
16. november 2006 - 14:41 Der er 6 kommentarer og
1 løsning

Mit logout script virker ikke

Jeg kan ikke få mit logout script til at virke hvad er der galt?

Logout.php
<?php

include("func.php");
DB::Conn("open");

if ($_SESSION['username'] == "") {
    die('You are not logged in so you cannot log out.');
}


unset($_SESSION['username']);
// kill session variables
$_SESSION = array(); // reset session array
session_destroy();  // destroy session.
Java::Alert("Der er sket en fejl, og du blev ikke logget rigtig ud");
Java::GoToURL("index.php?page=form_login");
die;
?>

Login.php
<?php
include("func.php");
DB::Conn("open");
session_start();

// check is form is submittet

if (isset($_POST['submit'])) {
   
    // cleans up the username and password to work with the database, and to help prevent fraud logins
   
    $username = trim($_POST['username']);
    $password = md5(trim($_POST['password']));
   
    // if the username and / or password is empty report it to user and return
   
    if(!$username || !$password){
        Java::Alert("Du har glemt at skrive i alle felter!");
        Java::GoToURL("index.php?page=form_login");
        die;
    }
   
    // Searches the database for a user ho match the posted username
   
    $result = mysql_query("SELECT * FROM webhosteu_users WHERE username = '$username' LIMIT 1");
   
    // Loops through the result to match a user and password, then starts a session to keep them logged in
   
    while($r=mysql_fetch_assoc($result)){
   
        if(($r['username'] == $username) && ($r['password'] == $password && ($r['activation'] == "valid"))){
       
            // Sets the session's name
           
            session_name("sid");
           
            // Starts the session
           
            session_start();
           
            // Sets the username in the session to be passed from page to page
           
            $_SESSION['username'] = $username;   
           
        }elseif(!$r['activated']){
       
            // kills the script if the user has not been activated
           
            Java::Alert("Du har ikke bekraftet din E-mail i nu, se om du har modtaget en E-Mail med et link");
            Java::GoToURL("index.php?page=form_login");
            die;
           
        }else{
       
            // kills the script if something didn't match up above
           
            Java::Alert("Dit brugernavn eller password er forkert. Prøv igen");
            Java::GoToURL("index.php?page=form_login");
            die;
           
        }
    }
   
    // Checks to make sure the session's username was set, or kills the script
   
    if(empty($_SESSION['username'])){
   
        Java::Alert("Der er sket en fejl, prøv at logge ind igen eller skriv til admin");
        Java::GoToURL("index.php?page=form_login");
        die;
   
    }

    // Go back to form_login
    Java::GoToURL("index.php?page=form_login");
       
}else{

    // Stop siden og gå tilbage "hackker"
    Java::Alert("Der er sket en fejl, prøv at logge ind igen eller skriv til admin");
    Java::GoToURL("index.php?page=form_login");
       
}
?>
Avatar billede sw_red_6 Nybegynder
16. november 2006 - 14:46 #1
du skulle måske overveje at tilføje en session_start(); i din logout.php ;o)
Avatar billede kimg Nybegynder
16. november 2006 - 14:48 #2
Du kan gemme denne fil som logOut.php
Så sender du bruger til denne side for at logge af.
<?PHP
session_start();
session_unset();
header("location:index.php");
?>

Kim
Avatar billede mcardle Nybegynder
17. november 2006 - 01:54 #3
Min logout-fil ser sådan her ud.

<?php
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
  setcookie(session_name(), '', time()-42000, '/');
}

// Finally, destroy the session.
session_destroy();
?>

<script type="text/javascript">
    t = setTimeout('location.href="index.php"',1);
</script>
Avatar billede tras Juniormester
17. november 2006 - 08:52 #4
session_start(); It is :P dohh how did i forget ;)

Kimg nu siger du header("location:index.php"); problemet for mig er at den siger at header er blevet sendt så jeg kan ikke sende den igen :/ Det var noget af det første jeg prøvede for vil helst ikke benytte java men når jeg ikke kan få header til at virke bliver jeg lidt nød til det :( men eller er jeg helt enig med brug af det
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 09:15 #5
hvis du har output til skærmen før du bruger header("location: ") får du den fejl.
Jeg ved ikke om det vil hjælpe, men du kunne jo prøve med ob_start() http://dk2.php.net/manual/en/function.ob-start.php og ob_flush() http://dk2.php.net/manual/en/function.ob-flush.php rundt om koden i Logout.php
Avatar billede tras Juniormester
17. november 2006 - 10:25 #6
Jeg har ikke gjordt så meget i det i nu, men inde min siden er færdig vil jeg lige finde ud af hvordan den virker. Intil nu har jeg den på den første side man kommer ind på som så sender en til den rigtige location. Vis jeg så bruger den igen på en af siderene siger den header information is allready send. Men ved ikke om det er på grund af den måde jeg har sat den op på. www.webhosteu.com Så kan du se hvordan den virker.

Men tak for hjælpen sw_red_6
Avatar billede sw_red_6 Nybegynder
17. november 2006 - 10:42 #7
selv tak.
som jeg skrev så virker header("location: ") kun hvis du ikke har noget output til skærmen, så hvis du ligger koden i en fil og kalder den fil når der trykkes logud så skulle det virke.
<?php

include("func.php");
DB::Conn("open");

if ($_SESSION['username'] == "") {
    die('You are not logged in so you cannot log out.');
}


unset($_SESSION['username']);
// kill session variables
$_SESSION = array(); // reset session array
session_destroy();  // destroy session.
Java::Alert("Der er sket en fejl, og du blev ikke logget rigtig ud");
header("location: index.php?page=form_login");
die;
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester