Validatie mail blijft zeggen email adress is gevalideerd.
Ik zit met een probleempje en dat is als volgt
Ik ben bezig met een validatie script te maken.
Maar nu loop ik tegen het volgende probleem aan.
Als pietje een link krijgt met
http://www.blaat.com/activeren/pietje@hotmail.com/1
Dan zegt ie van email adres is gevalideerd.
Dit is goed omdat nummer 1 een uniek id is vanuit de db,
en wat hoort bij dat email adres.
Maar als ik nummer 1 verander naar 4 blijft mijn script aangeven
van email adres is geverifieerd.
Hoe kan ik er voor zorgen dat als het id niet bij het email adres hoort
dat ik dan de melding krijg van dit id hoort niet bij dit email adres.
Dit is mijn code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
//activeren van email//
if($_GET['p'] == "activeren")
{
$email = $mysqli->real_escape_string($_GET['a']);
$id = $mysqli->real_escape_string(is_numeric($_GET['r']));
$sql = "SELECT userid,email,emailvalid FROM users WHERE email = '".$email."' AND userid = '".$id."'";
if(!$result = $mysqli->query($sql))
{
echo "Er ging iets mis met de database connectie";
}
else
{
$row = $result->fetch_assoc();
if($row['email'] !== $email AND $row['userid'] !== $id)
{
echo "Dit email adress met id wordt niet herkend";
}
else
{
if($row['emailvalid'] == 0)
{
echo "Dit email adress is al geverifeerd";
}
else
{
$sql = "UPDATE users SET emailvalid = '0' WHERE userid = '".$id."' AND email = '".$email."'";
if(!$result = $mysqli->query($sql))
{
echo "Er ging iets mis met de connectie naar de database";
}
else
{
echo "Email adress is met succes geveriffeerd";
}
}
}
}
}
?>
//activeren van email//
if($_GET['p'] == "activeren")
{
$email = $mysqli->real_escape_string($_GET['a']);
$id = $mysqli->real_escape_string(is_numeric($_GET['r']));
$sql = "SELECT userid,email,emailvalid FROM users WHERE email = '".$email."' AND userid = '".$id."'";
if(!$result = $mysqli->query($sql))
{
echo "Er ging iets mis met de database connectie";
}
else
{
$row = $result->fetch_assoc();
if($row['email'] !== $email AND $row['userid'] !== $id)
{
echo "Dit email adress met id wordt niet herkend";
}
else
{
if($row['emailvalid'] == 0)
{
echo "Dit email adress is al geverifeerd";
}
else
{
$sql = "UPDATE users SET emailvalid = '0' WHERE userid = '".$id."' AND email = '".$email."'";
if(!$result = $mysqli->query($sql))
{
echo "Er ging iets mis met de connectie naar de database";
}
else
{
echo "Email adress is met succes geveriffeerd";
}
}
}
}
}
?>
Alvast bedankt.
Met vriendelijke groet,
Thomas de Vries.
$id = $mysqli->real_escape_string(is_numeric($_GET['r']));
Staat dus dit:
$id = $mysqli->real_escape_string(true);
Of dit:
$id = $mysqli->real_escape_string(false);
En dat zal dus resulteren bij true in een 1.
Hoe kan ik het dan controleren dat als bijvoorbeeld het geen 1 is dat ie een foutmelding geeft.
Is dat toevallig met een if statement?
$id = $mysqli->real_escape_string($_GET['r']);
Door die is_numeric gewoon weg te laten.
Edit je was sneller dan mij
Gewijzigd op 14/02/2011 20:26:08 door thomas de vries
Mooi zo Thomas. Voortaan kun je wel gewoon in je eerste topic vragen blijven stellen als je nog een probleem tegenkomt die over dezelfde kwestie gaat.
Bas Kreleger op 14/02/2011 20:29:38:
Mooi zo Thomas. Voortaan kun je wel gewoon in je eerste topic vragen blijven stellen als je nog een probleem tegenkomt die over dezelfde kwestie gaat.
Dat zal ik dan in vervolg doen.