werken met link die vervalt na 24u
ik ben een systeem aan het uitwerken waarbij de ebruiker zelf zijn wachtwoordd kan wijzigen, dit via een link die ze via mail krijgen. Nu wil ik hebben dat die link maar 24u geldig is.
Maar voorlopig blijkt mijn systeem miet te werken.
Bij elke aanvraag voeg ik een timestamp in de database die ik dan via UNIX_TIMESTAMP oproep.
Deze aanvraag verhoog ik met het aantal seconden in één dag.
Vervolgens via mktime haal ik een timestamp op van de huidige tijd en controleer ik dit ten opzichte van mijn andere viariabele.
Vermoedelijk loop hier iets mis.
Kan er me iemand zeggen wat?
Alvast bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include('connectie.php');
include('menu.php');
include('functies/title.php');
$referentie=mysql_real_escape_string($_GET['referentie']);
$uur = date("H");
$minuut = date("i");
$seconden = date("s");
$dag = date("d");
$maand = date("m");
$jaar = date("Y");
$sqlr='SELECT *,UNIX_TIMESTAMP(tijd) AS ut FROM tblaanpassenww
WHERE referentie="'.$referentie.'"';
$queryr=mysql_query($sqlr)or die(mysql_error());
$resultr=mysql_fetch_array($queryr);
$adres=$resultr[email];
$tijdstip=$resultr[ut];
$vervallen=$tijdstip+86400;
$nu=mktime($jaar,$maand,$dag,$uur,$minuut,$seconden);
/*nagaan of de link niet ouder is dan een dag, anders moet de gebruiker een nieuwe link aanvragen*/
if($nu>$vervallen)
{?>
include('connectie.php');
include('menu.php');
include('functies/title.php');
$referentie=mysql_real_escape_string($_GET['referentie']);
$uur = date("H");
$minuut = date("i");
$seconden = date("s");
$dag = date("d");
$maand = date("m");
$jaar = date("Y");
$sqlr='SELECT *,UNIX_TIMESTAMP(tijd) AS ut FROM tblaanpassenww
WHERE referentie="'.$referentie.'"';
$queryr=mysql_query($sqlr)or die(mysql_error());
$resultr=mysql_fetch_array($queryr);
$adres=$resultr[email];
$tijdstip=$resultr[ut];
$vervallen=$tijdstip+86400;
$nu=mktime($jaar,$maand,$dag,$uur,$minuut,$seconden);
/*nagaan of de link niet ouder is dan een dag, anders moet de gebruiker een nieuwe link aanvragen*/
if($nu>$vervallen)
{?>
Gewijzigd op 01/01/1970 01:00:00 door Andy De Clercq
Ontopic: Waarom ben je zo omslachtig met timestamps aan het klooien? Gebruik gewoon DATETIME in je database. Eigenlijk volstaat alleen DATE hier al. Kijk bij het opvragen van de pagina of de code langer dan een dag geleden in de database gezet is.
Zo:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT
*
FROM
tabel
WHERE
datum < NOW() - INTERVAL 1 DAY
AND
referentie = $_GET['referentie']
*
FROM
tabel
WHERE
datum < NOW() - INTERVAL 1 DAY
AND
referentie = $_GET['referentie']
That's it. Geeft ie records terug, dan is 'ie nog geldig. Geeft ie niks terug, is 'ie niet meer geldig.
Sorry voor de overtollige code, maar ik was niet zeker of de fout daar niet lag.
Bedankt voor de snelle hulp :-)
Dit is echt super!
Gewijzigd op 01/01/1970 01:00:00 door Andy De Clercq
Let je wel op de veiligheid van je query? In mijn voorbeeld heb ik namelijk geen mysql_real_escape_string() over de $_GET-variabele gebruikt. Dit moet je in werkelijkheid natuurlijk wel even doen ;).
Ik ben misschien wel een groentje maar geen groene ezel! ;-)
@SanThe,
Waarom mag hij het wel tegen zijn script zeggen, en ik het niet tegen hem?
Gewijzigd op 01/01/1970 01:00:00 door Nicoow Unknown
SanThe.
Lees edit,