/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Session forbliver ikke logget ind!!
Fra : jonathan


Dato : 16-02-05 17:26

Hej alle, jeg har et stort problem med mit site, jeg bruger seesion til og
logge folk ind og holde styr på om de har lov til og se nogle bestemte
sider.

Det hele kører stort set som det skal, men nogle gange blir man logget af,
uden selv og ha bedt om det, nogle gange kan der gå flere timer og andre
gange 2 min.

Jeg bruger dette sammen med login siden:

check.php

<?php
session_start();
$username = addslashes($_POST['name']);
$password = addslashes($_POST['password']);
include "config.php";
$sql = "SELECT 1 FROM brugere WHERE brugernavn='$username' AND
kodeord='$password'";
$res = mysql_query($sql) or die(mysql_error());
if( $row = mysql_fetch_array($res) ) {
$_SESSION['authenticated'] = true;
$_SESSION['bruger_navn'] = "$username";
$_SESSION['brugerid'] = "$res[0]";
header("Location:minprofil.php");
}
else {
$_SESSION['authenticated'] = false;
header("Location: "linket er slettet"");
}


if ($_GET['id'] == "logout"){
// kill session variables
session_unset();
$_SESSION = array(); // reset session array
session_destroy(); // destroy session.
header("Location:loggetaf.php");
exit;
}
?>


Og jeg bruger denne fil checkpermission.php som jeg includer first i alle
siderne:
<?php
session_start();
if (!isset($_SESSION['authenticated']) == "false") {
header("Location: ikke.php"); // Vis error.php hvis man ikke har lov til
at
se siden
exit;}
?>


Hvad kan fejlen være.??

vh
Jonathan


----------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 14 spam-mails.
Betalende brugere får ikke denne besked i deres e-mails.
Hent den gratis her: www.spamfighter.dk



 
 
Christian Joergensen (17-02-2005)
Kommentar
Fra : Christian Joergensen


Dato : 17-02-05 11:01

"jonathan" <jonathanschwabe@webspeed.dk> writes:

[...]

> if (!isset($_SESSION['authenticated']) == "false") {

Overvej lige hvad der staar her :)

--
Christian Jørgensen | Concatenation; the process of gluing one cat's
http://www.razor.dk | nose to another cat's tail. Also, a similar
| operation on two strings.

zigma.dk (17-02-2005)
Kommentar
Fra : zigma.dk


Dato : 17-02-05 17:56

> > if (!isset($_SESSION['authenticated']) == "false") {
>
> Overvej lige hvad der staar her :)


Og for at hjælpe lidt på vej, giver jeg dig et hint til den rigtige
kode i det her tilfælde.

if (!isset($_SESSION['authenticated']) == "false") {
<- Dét er noget rod.

Du kan lige så godt bare skrive:

if (isset($_SESSION['authenticated'])) {

Men dét er jo også forkert, for så er brugeren jo logget ind, så derfor
skriver vi:

if (!isset($_SESSION['authenticated'])) {

=)

// Zigma

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

jonathan (17-02-2005)
Kommentar
Fra : jonathan


Dato : 17-02-05 18:39

> Men dét er jo også forkert, for så er brugeren jo logget ind, så derfor
> skriver vi:
>
> if (!isset($_SESSION['authenticated'])) {
>
> =)
>
> // Zigma
Mange tak, jeg prøver og se om det hjælper.


----------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 15 spam-mails.
Betalende brugere får ikke denne besked i deres e-mails.
Hent den gratis her: www.spamfighter.dk



Benny Nissen (17-02-2005)
Kommentar
Fra : Benny Nissen


Dato : 17-02-05 19:08

zigma.dk wrote:

> if (!isset($_SESSION['authenticated'])) {

Bør du ikke også checke indholdet af variablen ?

Hvis jeg (på en eller anden måde) gætter, at sessionvariablen hedder
'authenticated' kan jeg jo bare fylde et eller andet i den. Så er jeg
logget ind.

Hvis koden udvides til:

if(!$_SESSION['authenticated']=="jghl45J5dFdglbv549fdk3v4") {

så skal jeg samtidig gætte "jghl45J5dFdglbv549fdk3v4" for at blive
logget ind.

--
Benny Nissen
http://bennynissen.dk

mwl (17-02-2005)
Kommentar
Fra : mwl


Dato : 17-02-05 19:14

"true" og "false" er generelt noget rod. Brug true og false istedet, da både
isset("true") og isset("false") returnerer det samme.

Hello Benny,

> zigma.dk wrote:
>
>> if (!isset($_SESSION['authenticated'])) {
>>
> Bør du ikke også checke indholdet af variablen ?
>
> Hvis jeg (på en eller anden måde) gætter, at sessionvariablen hedder
> 'authenticated' kan jeg jo bare fylde et eller andet i den. Så er jeg
> logget ind.
>
> Hvis koden udvides til:
>
> if(!$_SESSION['authenticated']=="jghl45J5dFdglbv549fdk3v4") {
>
> så skal jeg samtidig gætte "jghl45J5dFdglbv549fdk3v4" for at blive
> logget ind.
>




zigma.dk (17-02-2005)
Kommentar
Fra : zigma.dk


Dato : 17-02-05 22:35

Benny Nissen wrote in dk.edb.internet.webdesign.serverside.php:
> Hvis koden udvides til:
>
> if(!$_SESSION['authenticated']=="jghl45J5dFdglbv549fdk3v4") {
>
> så skal jeg samtidig gætte "jghl45J5dFdglbv549fdk3v4" for at blive
> logget ind.

Hvordan ville du sætte den? Du har sikekrt ret, men jeg ved ikke hvordan
man ellers sætter den, udover i php...

// Zigma



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

zigma.dk (17-02-2005)
Kommentar
Fra : zigma.dk


Dato : 17-02-05 22:36

zigma.dk wrote in dk.edb.internet.webdesign.serverside.php:
> Benny Nissen wrote in dk.edb.internet.webdesign.serverside.php:
> > Hvis koden udvides til:
> >
> > if(!$_SESSION['authenticated']=="jghl45J5dFdglbv549fdk3v4") {
> >
> > så skal jeg samtidig gætte "jghl45J5dFdglbv549fdk3v4" for at blive
> > logget ind.
>
> Hvordan ville du sætte den? Du har sikekrt ret, men jeg ved ikke
hvordan
> man ellers sætter den, udover i php...

Og så lige lidt morale: hvordan det ellers kan lade sig gøre ændrer ikke
på at det naturligvis altid er en god ide og skik at dobbeltsikre sine
login-sider =)

Så har jeg vist ikke mer' at sige...

// Zigma


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Geert Lund (17-02-2005)
Kommentar
Fra : Geert Lund


Dato : 17-02-05 23:40

jonathan wrote:

> Hej alle, jeg har et stort problem med mit site, jeg bruger seesion til og
> logge folk ind og holde styr på om de har lov til og se nogle bestemte
> sider.

En ting er den fejl der allerede er blevet pointeret, men en anden ting
er: sessionen kører ofte som en fil på disken, nogle steder har en
administrator sat et cronjob op der rydder alle "døde" sessionsfiler i
et givent interval. Dvs. hvis det fx sker en gang i timen og der checkes
på om filerne har været døde (uændret) i fx 30 min., så slettes de...

Så en ide (hvis dette er problemet) kan simpelthen være at opdatere en
variabel i din session med jævne mellemrum (fx tidpunktet for hvornår
sidste sidekald blev foretaget eller noget i den stil), da dette vil
ændre/opdatere session-filen og dermed ser den ikke længere "død" ud...

--
Med venlig hilsen
Geert Lund

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste