Avatar billede sunek Nybegynder
14. februar 2005 - 10:33 Der er 5 kommentarer og
1 løsning

Sessions: Jeg skal logge ind to gange

Hejsa...
Jeg går og hygger mig lidt med at lave et lille cm-system til en forening,
så jeg på den måde kan lære mig selv lidt php samtidig.

Imidlertid har jeg det problem at når jeg skal logge ind, skal jeg skrive
det korrekte brugernavn og password 2 gange før det bliver registreret.

Følgende er fra den side hvor man logger ind:
<?php
session_start();
include("menuScript.htm");

if ($_SESSION['loginStatus'] != true){
echo "<p>";
include("php/login.php");
echo "</p>";
}
else {
echo "<p>Du er nu logget ind<br></p>";
include("membersOptions.php");
}
?>

I følgende script tjekker jeg login oplysninger

<?php
session_start();
include("dbConnect.php");

$url = "minurl";
$inputUser = strtolower($_GET['user']);
$inputPass = strtolower($_GET['password']);

if (empty($inputUser) or empty($inputPass)) {
  echo "indtast brugernavn og password";
}
else {
openConnection();

$res = mysql_query("select user, pass from users where user = '$inputUser'
and pass = password('$inputPass')") or die(mysql_error());
closeConnection();

if ($row = mysql_fetch_array($res)) {
  $_SESSION['loginStatus'] = true;
  header("Location:".$url."menu.php?".SID);
}
else {
echo "Nixen Bixen";
  }
}
?>

Problemet er som sagt at jeg skal logge ind to gange før det virker. Når jeg
logger ind første gang, bliver jeg godt nok sendt tilbage til den første
side igen, men det er som om $_SESSION['loginStatus'] ikke bliver
registreret i før jeg igen indtaster korrekte brugeroplysninger.
Jeg har trevlet nettet tyndt for at finde en forklaring, men det er altså
ikke lykkedes.
Håber i kan hjælpe.

Mvh
Sune
Avatar billede coderdk Praktikant
14. februar 2005 - 10:38 #1
Prøv at ændre:

if ($row = mysql_fetch_array($res)) {
  $_SESSION['loginStatus'] = true;
  header("Location:".$url."menu.php?".SID);
}

til:

if ($row = mysql_fetch_array($res)) {
  $_SESSION['loginStatus'] = true;
  echo "<h1>Du er logget ind</h1><a href='$url'>Klik her for at vende tilbage</a>.";
  exit;
}

Eller alternativt:

if ($row = mysql_fetch_array($res)) {
  $_SESSION['loginStatus'] = true;
?>
<script type="text/javascript" language="javascript">
  window.location.href = '<?= $url ?>';
</script>
<?php
  exit;
}
Avatar billede dulius Nybegynder
14. februar 2005 - 10:39 #2
Hej.
Det har noget med browserens cache at gøre. Jeg har selv oplevet det mange gange, og har fundet en løsning jer altid bruger. (Der er også andre løsninger som at deaktivere cache på den gældende side, men jeg holder mig til den her).

Hvis login er godkendt, så send til en side der hedder redirect.php.
Indholdet af redirect.php kan se ud som følger:

<?php
session_start();
header("Location: adminindex.php");
?>



Bare et eksempel.. Håber du forstår pointen, ellers må du jo sige til hvis ikke jeg har forklaret mig godt nok?

Mvh. Julius
Avatar billede davidfossil Nybegynder
14. februar 2005 - 10:39 #3
Og det er ikke fordi at den kode der checker username/pass ligger "i bunden" i siden, så den først afvikles efter du har genereret indhold til brugeren?
Avatar billede coderdk Praktikant
14. februar 2005 - 10:39 #4
(Det har nok noget at gøre med at dine session cookies ikke bliver sat ordentligt, da du bruger header til at skifte sider - Underligt, det ved jeg, men det kan være det er det)
Avatar billede sunek Nybegynder
14. februar 2005 - 11:23 #5
CoderDK og Dulius (Julius): tak for hurtige svar. Det var åbentbart et eller andet problem med (header location). Underligt...
Jeg har accepteret svaret fra dulius, er det ikke muligt også at acceptere CoderDK's svar... I gamle dage kunne man vist dele pointene mellem flere svar. (Det er MEGET lang tid siden jeg sidst har anvendt eksperten).

Anyway... Tak for hurtig hjælp

/Sune
Avatar billede coderdk Praktikant
14. februar 2005 - 12:33 #6
Det kan man stadig, jeg havde bare ikke svaret :P
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