Avatar billede nh92 Nybegynder
03. november 2008 - 18:19 Der er 26 kommentarer og
1 løsning

Forbliv logget ind

Hej eksperter.

Jeg er igang med min egen hjemmeside, og er lige stødt ind i et lille problem. Jeg har lavet et lille login system (ikke noget krævende) bare et brugernavn og en kode. Men jeg har så problemer, med at når man er logget ind viser den det fint nok med "Hej ... og velkommen!" men så når jeg skifter side i menuen f.eks. eller et link (stadig på siden) så logger den af igen, og de to login bokse dukker op igen.

Jeg vil høre om man ikke lige kan indsætte et link, så man ikke logger af, når man skifter side i menuen f.eks.

Hilsen NH92
Avatar billede jensgram Nybegynder
03. november 2008 - 18:22 #1
Du bliver nødt til selv at sørge for, at tilstanden "logget ind" overføres. Det er nok næppe hensigtsmæssigt at gøre som en del af URL'en (med mindre du tænker dig godt om), men cookies eller sessions er sikkert vejen frem for dig.
Avatar billede nh92 Nybegynder
03. november 2008 - 18:25 #2
Ah ja. Der har du fat i noget. Ved du hvordan det nemmest gøres?
Avatar billede jensgram Nybegynder
03. november 2008 - 18:35 #3
Tjah, jeg ville nok basere det på sessions - http://dk2.php.net/manual/en/function.session-start.php - og så gemme brugernavn og pwd deri. Ved hver visning kan du sammenholde data med din brugerdatabase, eller hvad du nu har.

Alternativt kan du blot gemme "isLoggedIn" i en session og så slippe for at tjekke i DB ved hver visning. Det vil performe (marginalt) bedre, men er måske ikke helt så sikkert.
Avatar billede majbom Novice
03. november 2008 - 18:37 #4
jeg ville gøre det med sessions - du kan lære lidt om brugen af sesisones hér: http://phpartikler.dk/artikler/sessions.php
Avatar billede alios Nybegynder
03. november 2008 - 18:48 #5
Jeg ville klart også gøre dette med sessions...
Avatar billede nh92 Nybegynder
03. november 2008 - 18:59 #6
Jeg har kigget lidt inde på phpartikler, men kan ikke helt lige finde ud af, hvordan jeg skal gribe tingene an. Når man logger ind på min side via index, vises login-ok.php, og der har jeg brugt mysql_query til at selecte brugernavn og database.

Hvad skal jeg gøre, for at få de sessions op at køre?
Avatar billede jensgram Nybegynder
03. november 2008 - 20:27 #7
session_start();

$_SESSION['uid'] = uid_fra_DB;
$_SESSION['pwd'] = pwd_indtastet;


...


Så sættes de og er tilgængelige på alle sider.
Avatar billede nh92 Nybegynder
04. november 2008 - 17:18 #8
Dvs. at når jeg har id, brugernavn og password inde i min MYSQL db, skal de sættes sådan:

session_start();

$_SESSION['id'] = id;
$_SESSION['brugernavn'] = brugernavn;
$_SESSION['password'] = password;

Eller har jeg gjort en fejl? For det virker i hvert fald ikke det ovenover.
Avatar billede jensgram Nybegynder
04. november 2008 - 19:27 #9
Ja, det bliver sikker noget lig $_SESSION['id'] = $row['id']; osv.
Avatar billede nh92 Nybegynder
11. november 2008 - 15:54 #10
Men det virker stadig ikke lige?
Avatar billede nh92 Nybegynder
11. november 2008 - 15:55 #11
Den logger stadig ud, selvom jeg har sat det ind,
Avatar billede jensgram Nybegynder
11. november 2008 - 17:07 #12
Så bliver vi nok nødt til at se noget kode
Avatar billede nh92 Nybegynder
13. november 2008 - 14:43 #13
Hvad skal du se? Mine login filer? Altså dem som er der når man trykker login.
Avatar billede jensgram Nybegynder
13. november 2008 - 19:13 #14
Tja, der hvor du sætter tilstanden "logget ind", og der hvor du - ved hver sidevisning - tjekker denne tilstand.
Avatar billede nh92 Nybegynder
17. november 2008 - 17:11 #15
<form name="Login" method="POST" action="login-ok.php">
Brugernavn: <input type="text" name="Brugernavn"><br>
Password:  <input type="password" name="Password"><br>
<input type="submit" name="Submit" value="Login">
</form>

Det er på min index.php

<?php
include ("mysql.php");

session_start();

if(!isset($_POST['Submit'])) { //Tester om brugeren kom fra  index.html
    echo "Du skal komme fra index.php";
    }else{
        $postbruger = $_POST['Brugernavn'];
        $postpass = $_POST['Password'];
//For læservenligheden overføres post variablerne til normale variabler

        $resultat = mysql_query("SELECT id FROM `bruger` WHERE Brugernavn = '$postbruger' AND
Password = '$postpass'");//Spørger efter ID

        $number = mysql_num_rows($resultat);//Tæller antaller af resultater
        if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
        $_SESSION['loget_in'] = 1;
        $_SESSION['Brugernavn'] = $postbruger;
        $_SESSION['Password'] = $postpass; //Sætter session variablerne
        echo "Du er nu logget ind";
        ?>
        <br><br>
        <a href="redigerprofil.php">Redigér min profil</a>
        <?

        }else echo"De indtastede oplysninger er ikke korrekte";
        }
?>

Det er så min login-ok.php

ANdet i skal bruge?
Avatar billede nh92 Nybegynder
17. november 2008 - 17:12 #16
Jeg vil så gerne have lavet en session, med en slags if, else i. Altså hvis du er logget ind, viser den "Hej du er logget ind, rediger profil". Og hvis ikke, skal mine to login bokse komme frem. :)
Avatar billede jensgram Nybegynder
18. november 2008 - 11:37 #17
Hvad bliver resultatet af følgende efter login?


test.php

<?php

session_start();
var_dump($_SESSION);

?>

Hvis den udskriver noget fornuftigt, bør du også kunne

<?php

session_start();
if ($_SESSION['loget_in']) {
    print 'Hej, ' . $_SESSION['Brugernavn'] . '. Du er logget ind.';
} else {
    print 'Ikke logget ind.';
}

?>
Avatar billede nh92 Nybegynder
18. november 2008 - 12:15 #18
Jeg vil lige teste når jeg kommer hjem kl. 13:30 ca. Så skal du nok høre fra mig.
Avatar billede nh92 Nybegynder
18. november 2008 - 13:51 #19
Det skriver denne her fejl:

array(3) { ["loget_in"]=>  &#8747;(1) ["Brugernavn"]=>  &string(5) "admin" ["Password"]=>  &string(5) "admin" } Hvis den udskriver noget fornuftigt, bør du også kunne Hej, admin. Du er logget ind.
Avatar billede jensgram Nybegynder
20. november 2008 - 10:10 #20
Ja, ok - det var meningen, at du skulle putte det i to filer :)

<?php

session_start();
if ($_SESSION['loget_in']) {
    print 'Hej, ' . $_SESSION['Brugernavn'] . '. Du er logget ind.';
} else {
    print 'Ikke logget ind.';
}

?>

I en fil for sig. Log ind normalt og gå så til denne side, hvor det gerne skulle fremgå, om det fungerer.
Avatar billede nh92 Nybegynder
21. november 2008 - 09:56 #21
Hvis jeg sætter det ind i en fil og gemmer, skriver den bare: Hej admin. Du er logget ind. Uanset om jeg er logget ind først eller ej.
Avatar billede jensgram Nybegynder
21. november 2008 - 14:19 #22
Også hvis du lukker alle instanser af browseren og prøver igen?
Avatar billede nh92 Nybegynder
23. november 2008 - 18:08 #23
Så virker det! (:

Men hvordan laver jeg det sådan, at på index.php f.eks. skal der komme de to login bokse frem i stedet for der står "Ikke logget ind".?
Avatar billede nh92 Nybegynder
23. november 2008 - 18:28 #24
Nu har jeg fået det til at virke!

Tusinde tak Jensgram. Du kan bare lige smide et svar, så får du pointene. :)
Avatar billede jensgram Nybegynder
26. november 2008 - 09:25 #25
Ups - jeg har ikke lige været online på det seneste :)
Avatar billede nh92 Nybegynder
20. januar 2009 - 19:09 #26
Her får du dine point for LAAANG tid siden. Unskyld jensgram, håber det er okay :)
Avatar billede jensgram Nybegynder
20. januar 2009 - 20:53 #27
Det er ingen problem, da :)
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