Avatar billede torstein Novice
02. april 2003 - 00:21 Der er 5 kommentarer og
1 løsning

Hvorfor skal der trykkes 2 gange på log af

Hvor er fejlen i mit script, da jeg skal trykke to gange på log af for at logge af. 1. gang skriver den jeg er logget af, men den skriver stadig at jeg er logget på som 'xxx'??

koden:
<?
session_start();
session_register(husk_navn);
session_register(husk_fornavn);
session_register(husk_efternavn);
session_register(husk_email);
if (!$_SESSION['husk_navn']){
function tilbage($meddelelse) {?>
<body topmargin="0" leftmargin="0"><br><br>
<div align="center">
    <center>
<font size="2" face="Tahoma"> <?
echo "<center><br><br>$meddelelse\n";
echo '<form><input type=button value="<<< Tilbage" onClick=history.back()></form>';
?>
  </center>
  </div>
</font>
<?
exit; }
if($action=="Login"){
if (!$bruger) tilbage( "Du har glemt at skrive noget i feltet \"Brugernavn\"..."); 

if (!$password) tilbage( "Du har glemt at skrive noget i feltet \"Password\"..."); 

$resultat = mysql_query("select brugernavn, password, fornavn, efternavn, email from jc_medlem where brugernavn = '$bruger'");
$row = mysql_fetch_array($resultat);
if (!$row[brugernavn]) tilbage ( "Dit brugernavn er enten forkert eller også er
du ikke oprettet ...");
if ($row[password]<>$password) tilbage ( "Password er forkert ...");
$_SESSION['husk_navn']=$row['brugernavn'];
$_SESSION['husk_fornavn']=$row['fornavn'];
$_SESSION['husk_efternavn']=$row['efternavn'];
$_SESSION['husk_email']=$row['email'];

// Login start
$resultatet = mysql_query("SELECT navn, fornavn, efternavn,  hits, datoen FROM jc_statistik WHERE navn LIKE '$_SESSION[husk_navn]'");
$row = mysql_fetch_array($resultatet);
if (!$row[navn]){
$datoen=date("Y-m-d");
$datoen2=date("Y-m-d H:i:s");
$resultatopret = mysql_query("INSERT INTO jc_statistik (navn, fornavn, efternavn, hits, datoen, datoen2) VALUES ('$_SESSION[husk_navn]','$_SESSION[husk_fornavn]','$_SESSION[husk_efternavn]','1','$datoen','$datoen2')"); }
if ($row[navn]) {
  $hits = $row["hits"];
  $hits++;
  $datoen=date("Y-m-d");
  $datoen2=date("Y-m-d H:i:s");
  mysql_query("UPDATE jc_statistik SET hits = '$hits' WHERE navn LIKE '$row[navn]'");
  mysql_query("UPDATE jc_statistik SET datoen = '$datoen' WHERE navn LIKE '$row[navn]'");
    mysql_query("UPDATE jc_statistik SET datoen2 = '$datoen2' WHERE navn LIKE '$row[navn]'");}
//Login slut
}}
if (!$_SESSION['husk_navn']){
?>
<form action="<? echo $php_self; ?>" method="post">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
    <td>Brugernavn:</td>
    <td><input type="text" name="bruger" size="10"></td>
</tr>
<tr>
    <td>Password: </td>
    <td><input type="password" name="password" size="10"> </td>
</tr></table>
<div align="center"><input type="submit" name="action" value="Login">
</form><a href="?list=glemt_mail.php">glemt brugernavn/pwd ??</a></div>
<?} if ($_SESSION['husk_navn']) {
echo "Du er logget på som '$_SESSION[husk_navn]'";
if ($action2=="Log af"){
session_destroy();}?>
<form action="<? echo $php_self; ?>" method="post">
<div align="center"><input type="submit" name="action2" value="Log af"></DIV></FORM><?}?>
Avatar billede sylvesternielsen Nybegynder
02. april 2003 - 00:23 #1
Prøv at sæt din
if ($action2=="Log af"){
session_destroy();}?>
<form action="<? echo $php_self; ?>" method="post">
<div align="center"><input type="submit" name="action2" value="Log af"></DIV></FORM><?}?>

op før din
if ($action2=="Login"){
Avatar billede torstein Novice
02. april 2003 - 00:38 #2
koden er jo delt op i !$_SESSION['husk_navn'], hvor der indlæses og kontrolleres kodeord. Og derefter $_SESSION['husk_navn'], når der er indtastet og kontrolleret, så der kun står log af som mulighed når der indtastet bruger/pwd.
Desuden er der både en action2, som styrer log af, og en action, som styrer log ind.
Avatar billede avminarm Juniormester
02. april 2003 - 09:33 #3
det er aldrig en god ide at have mellemrum mellem variabler eller værdier prøv med:
if ($action2=="Log af"){
$_SESSION = array();
session_destroy();}?>
<form action="<? echo $php_self; ?>" method="post">
<div align="center"><input type="submit" name="action2" value="Log af"></DIV></FORM><?}?>

Men efter min mening ville det smarteste være at lave selve logout stumpen i en fil for sig selv dvs noget ala:

<form action="logaf.php" method="post">
<div align="center"><input type="submit" name="action2" value="Log af"></DIV></FORM><?}?>

NY FIL: logaf.php
<?php
session_start();
if ($action2=="Log af"){
$_SESSION = array();
session_destroy();
header("Location: ".$_SERVER['HTTP_REFERER']."");
exit;
}
?>
Avatar billede avminarm Juniormester
02. april 2003 - 09:35 #4
og når jeg nu skriver at det med mellemrun ikke er en god ide spå ville jeg have skrevet at if ($action2=="Log af"){ - skal være if ($action2=="Log_af"){ og dermed skal din value="Log af" være value="Log_af"

og et tip - brug kun smaå bogstaver: log_af
Avatar billede torstein Novice
02. april 2003 - 14:45 #5
Avminarm: Dit forslag med en logaf-fil fungerer perfekt, tak for det. Tillæg: Når jeg ikke må bruge mellemrum, hvordan får jeg der så til at stå 'log af' på submitknappen??
Avatar billede avminarm Juniormester
03. april 2003 - 08:06 #6
tak for points ;o)

du kan putte en hidden ind og bruge den istedet for:

<form action="logaf.php" method="post">
<div align="center">
<input type="hidden" name="action2" value="log_af">
<input type="submit" name="submit" value="Log af"></DIV></FORM><?}?>
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