Avatar billede skipperbent Nybegynder
09. august 2005 - 04:27 Der er 10 kommentarer og
1 løsning

Hvordan ville i lave denne loginboks korrekt?

Hej, jeg står med et lille problem.
Jeg har en loginboks, som virker fint nok. Problemet er bare, at når brugeren er logget ind, gemmer cookien kun siderne der er adgang til, og ikke selve loginboksen til højre - hvilket betyder, at loginboksen er klar til login - selvom man i virkeligheden er logget ind..

Det drejer sig om loginboksen til højre her:
http://www.enetonline.dk

Har prøvet at rodde med PHP's setcookie() kommando, hvilket jeg opgav. Hvad siger i?

Scriptet ser sådan her ud:

<?php
$stylesheet = '<link href="http://www.enetonline.dk/style.css" rel="stylesheet" type="text/css">';

echo $stylesheet;
include 'config.php';

$connection = @mysql_connect($hostname, $user, $pass)
or die(mysql_error());
$dbs = @mysql_select_db($database, $connection) or
die(mysql_error());

$sql = "SELECT * FROM $userstable WHERE username = '$_POST[username]' AND password = '$_POST[password]'";
$result = @mysql_query($sql,$connection) or die(mysql_error());
$num = @mysql_num_rows($result);


if ($num != 0) {
$cookie_name = "auth";
$cookie_value = "fook!$_POST[username]";
$cookie_expire = "0";
$cookie_domain = $domain;

setcookie($cookie_name, $cookie_value, $cookie_expire, "/", $cookie_domain, 0);

die("<body bgcolor=\"#F2F2F2\"><b>Hej, <a target=_top href=http://www.enetonline.dk/login/profile.php>".$_POST[username]."!</b></a>
<br><br><a target=_top href=http://www.enetonline.dk/login/profile.php>Profil</a><br>
<a target=_top href=http://www.enetonline.dk/login/members.php>Brugerliste</a><br>
<a target=_top href=http://www.enetonline.dk/login/nyheds_poster.php?side=opret>Opret en nyhed</a><br><br>
<a target=_top href=http://www.enetonline.dk/login/index.php?action=signout>Log ud</a>");
ob_end();


}

ob_start();
echo "<form action=\"http://www.enetonline.dk/login/login_hojremenu.php\" method=\"POST\">";
echo "&nbsp;&nbsp;Brugernavn: <br>&nbsp;&nbsp;<input type=\"text\" name=\"username\" size=\"20\" style=\"font-size: 8pt; font-family: Tahoma\"><br>";
echo "&nbsp;&nbsp;Password:  <br>&nbsp;&nbsp;<input type=\"password\" name=\"password\" size=\"20\" style=\"font-size: 8pt; font-family: Tahoma\"><br>";
echo "<br>&nbsp;&nbsp;<input type=\"submit\" value=\"Login!\" style=\"font-size: 8pt; font-family: Tahoma\">";
echo "</form>";
echo "• <a target=_top href=\"http://www.enetonline.dk/login/register.php\">Opret konto</a>";
echo "<br> • <a target=_top href=\"http://www.enetonline.dk/login/reset.php\">Glemt bruger & password</a>";
echo "<br> • <a target=_top href=\"http://www.enetonline.dk/login/passwordreset.php?step=1\">Nulstil dit password!</a></font><br><br>";




?><body bgcolor="#F2F2F2">

På forhånd tak :)
Avatar billede jakobdo Ekspert
09. august 2005 - 08:14 #1
Du kunne oprette en session, så når brugeren er logget ind, så sætter du ligeledes en session variablen, f.eks. $_SESSION['online'] = TRUE
og inden du printer login-boksen til siden, tester du
if($_SESSION['online'])
echo "Du er logget ind";
else
{
//Her skal vi printe login-boksen.
}
Avatar billede skipperbent Nybegynder
09. august 2005 - 13:26 #2
>> jakobdo >>

$_SESSION['online'] > henter sessionen "online" fra Mysql, right? Ellers så synes jeg at være helt tabt.

Men mange tak for hjælpen :)
Avatar billede jakobdo Ekspert
09. august 2005 - 13:29 #3
En session er noget som oprettes på din server.
Og sendes med hver gang browser og server snakker sammen! (så det har ikke noget med din DB at gøre)

Den kan bruges til at holde styr på om en bruger er logget ind eller ej.
Avatar billede skipperbent Nybegynder
09. august 2005 - 23:44 #4
Jeg kan ikke hitte ud af det :/

Hvor ville du placere din kode i det dokument? Har prøvet i timevis nu!

Det er $_session['online'] = true -- der angiver at den er sand...
Så den må være tilsidst et sted (der hvor cookien bliver skrevet),

og if($_session... -- tjekker om session online er der, og skal derfor være istarten, eller før #1. Men kan stadig ikke finde ud af det.. hvad gør jeg forkert?

/simon
Avatar billede jakobdo Ekspert
10. august 2005 - 08:07 #5
Du har et sted i dit script, hvor du tjekker om brugernavn og kodeord findes i din database, finder du en bruger som matcher, så logger vi brugeren ind.
Du sætter i dag en cookie.
Samme sted skal du sætte $_SESSION['online'] = TRUE; (PS: når du arbejder med SESSIONS, så skal du sætte session_start(); i toppen af dit php script, altså:
<?php
session_start();
osv...

På din side hvor du så viser loginboksen, så laver du dette uden om det stykke kode:

if($_SESSION['online'])
{
echo "Du er logget ind...";
//Evt lav en logud knap
}
else
{
//Her skal alt din kode som viser login-boksen være...
echo "Du er ikke logget ind...";
}
Avatar billede skipperbent Nybegynder
10. august 2005 - 12:03 #6
Cool mange tak, vil lige prøve på det... Tjekkede også en ekstra gang på PHP.NET, hvor der også stod, at man skulle anvende session_start(), men jeg placerede den ikke i starten, eller gjorde noget andet så det gik galt..

Men igen, tak.. vil prøve mig frem igen :)
Avatar billede jakobdo Ekspert
10. august 2005 - 12:08 #7
Her får du et svar så...
Avatar billede jakobdo Ekspert
11. august 2005 - 08:08 #8
Takker for point!
Og skriv endelig hvis det driller.
Avatar billede skipperbent Nybegynder
11. august 2005 - 14:11 #9
selv tak mesetr.. det manglede da bare efter de mange minutter jeg har brugt af dit liv :)

Hey tænkte på om du har msn?


/skipperbent
Avatar billede jakobdo Ekspert
11. august 2005 - 14:14 #10
jakobdo (at) hotmail (dot) com
Avatar billede skipperbent Nybegynder
11. august 2005 - 14:35 #11
takker...
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