php wist automaties sessions? (ik word zomaar uitgelogt)
ik heb een loginscript waar ik na het inloggen dit in een session stop:
- je gesalte ip
- een random session_id
- je user_id
- je gesalte voornaam
- een Key die met de get van pagina naar pagina word gestuurd
vervolgens controleer ik of dit ook in de database staat en dan blijf je op de pagina
dit werkte prima in apache2 onder ubuntu via localhost
maar nu ik het heb gehost word ik zomaar uitgelogd
soms word ik als ik mijn inlog gegevens invul en op submit klik gelijk weer uitgelogd
met de melding je moet ingelogd zijn om deze pagina te bekijken
maar het rare is als ik de volgende dag weer probeer in te loggen lukt het gewoon
(ik heb dan niks aan het script verandert)
en als ik dan ben ingelogd word ik na een tijdje gewoon uitgelogd dat is eigenlijk altijd het geval
dat is dus het probleem dus ik het de controle pagina eerst eens helemaal
weggehaald toen had ik geen problemen
maar toen ik de pagina weer toevoegde had ik hetzelfde weer
dus toen heb ik het script verandert naar een script die alleen
controleert of de sessions bestaan en die niet controleert of de sessions
kloppen met die in de database
dit is mijn script nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
include_once 'uwx3g.php';
include_once 'connect.php';
$ipj = sha1(salt($_SERVER['REMOTE_ADDR']));
$ips = mysqli_real_escape_string($con, $_SESSION['ip']);
if($ipj == $ips && isset($_SESSION['email']) && isset($_SESSION['session_id']) && isset($_SESSION['user_id']) && isset($_SESSION['key']))
{
// hier moet de database controle komen
session_regenerate_id(true);
}
else
{
header('Refresh: 0; url=index.php?error=001');
}
?>
session_start();
include_once 'uwx3g.php';
include_once 'connect.php';
$ipj = sha1(salt($_SERVER['REMOTE_ADDR']));
$ips = mysqli_real_escape_string($con, $_SESSION['ip']);
if($ipj == $ips && isset($_SESSION['email']) && isset($_SESSION['session_id']) && isset($_SESSION['user_id']) && isset($_SESSION['key']))
{
// hier moet de database controle komen
session_regenerate_id(true);
}
else
{
header('Refresh: 0; url=index.php?error=001');
}
?>
weet iemand wat ik fout doe?
of ligt het aan mijn host wat ik eigenlijk wel denk
want in ubuntu werkt het zonder problemen
want daar werkt het script (met database controle) zonder problemen.
sorry voor dit lange verhaal,
ik wist niet hoe ik het kort kon uitleggen.
alvast bedankt!
Heb je al eens gekeken wat er in $ipj en $ips zit (als je wordt uitgelogd)?
Na hoeveel tijd word je (automatisch) ingelogd?
meestal naar een minuut of 10 20 maar soms word ik direct al uitgelogd
Na het inloggen als ik op submit geklikt heb maar dat komt niet heel vaak voor maar toch
Obelix en Idefix op 15/02/2014 09:52:17:
Hoe betrouwbaar is het om een IP-adres te gebruiken?
Heb je al eens gekeken wat er in $ipj en $ips zit (als je wordt uitgelogd)?
Heb je al eens gekeken wat er in $ipj en $ips zit (als je wordt uitgelogd)?
Gewijzigd op 15/02/2014 11:05:42 door Obelix Idefix
Ja dat is ook sha1(salt($_SERVER['REMOTE_ADDR']));
Obelix en Idefix op 15/02/2014 09:52:17:
Hoe betrouwbaar is het om een IP-adres te gebruiken?
Zit er een soort van proxy voor de server die in feite de REMOTE_ADDR vult?
Wat zegt echo $_SERVER['REMOTE_ADDR'] en lijkt dat op http://watismijnip.nl/ ?
dat ik daar voor heb gezorgt
maar $_SERVER['REMOTE_ADDR'] zegt hetzelfde als http://watismijnip.nl/
@Obelix en Idefix
ik heb mijn script verandert naar:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
include_once 'uwx3g.php'; // pagina voor de functie salt
include_once 'connect.php'; // pagina voor de connectie met de database ($con)
$ipj = sha1(salt($_SERVER['REMOTE_ADDR']));
$ips = mysqli_real_escape_string($con, $_SESSION['ip']);
if($ipj == $ips && isset($_SESSION['email']) && isset($_SESSION['session_id']) && isset($_SESSION['user_id']) && isset($_SESSION['key']))
{
session_regenerate_id(true);
}
else
{
echo 'Je bent uitgelogt!<br>je ip nu: ' . $ipj . ' <br> je ip in de session: ' . $ips;
}
?>
session_start();
include_once 'uwx3g.php'; // pagina voor de functie salt
include_once 'connect.php'; // pagina voor de connectie met de database ($con)
$ipj = sha1(salt($_SERVER['REMOTE_ADDR']));
$ips = mysqli_real_escape_string($con, $_SESSION['ip']);
if($ipj == $ips && isset($_SESSION['email']) && isset($_SESSION['session_id']) && isset($_SESSION['user_id']) && isset($_SESSION['key']))
{
session_regenerate_id(true);
}
else
{
echo 'Je bent uitgelogt!<br>je ip nu: ' . $ipj . ' <br> je ip in de session: ' . $ips;
}
?>
en na een tijdje op knopen op mijn site druken kreeg ik dit te zien:
Code (php)
1
2
3
2
3
Je bent uitgelogt!
je ip is nu: c0671ac54b7000168092e1b96979795009b28503
je ip in de session:
je ip is nu: c0671ac54b7000168092e1b96979795009b28503
je ip in de session:
de sessie is leeg
en alle andere sessions ook
Gewijzigd op 15/02/2014 12:17:06 door christian k