Willekeurige waarde van een variabel opslaan
Ik ben onlangs begonnen om php te leren en heb een hoop uit de uitgebreide tutorials die op deze website te vinden zijn kunnen halen. Momenteel ben ik bezig om een (simpel) gastenboek te maken. Ik ben al aardig op weg maar loop nu tegen een probleem aan.
Ik ben bezig om een 'soort van' captcha functie voor mijn gastenboek te maken , ivm het voorkomen van eventuele spam berichten.
Dit is wat ik tot dusver heb.
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
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
<?php
// Maak een array aan en stop er waarden in
$a_kleuren = array("rood" , "blauw", "groen", "geel", "oranje", "paars");
// Plaats een willekeurige waarde van de bovenstaande array in de variabel $s_kleur
$s_kleur = array_rand(array_flip($a_kleuren));
// Er wordt op submit geklikt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controleer of de ingevulde waarde hetzelfde is als de variabel $s_kleur
if($_POST['antispam'] == $s_kleur)
{
echo "je hebt de juiste kleur ingevuld.";
}
else
{
echo "er gaat helaas iets fout.";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test scriptje</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<?php echo $s_kleur ?>
<input type="text" name="antispam" id="antispam" />
<input type="submit" value="plaats bericht"/>
</form>
</body>
</html>
// Maak een array aan en stop er waarden in
$a_kleuren = array("rood" , "blauw", "groen", "geel", "oranje", "paars");
// Plaats een willekeurige waarde van de bovenstaande array in de variabel $s_kleur
$s_kleur = array_rand(array_flip($a_kleuren));
// Er wordt op submit geklikt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controleer of de ingevulde waarde hetzelfde is als de variabel $s_kleur
if($_POST['antispam'] == $s_kleur)
{
echo "je hebt de juiste kleur ingevuld.";
}
else
{
echo "er gaat helaas iets fout.";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test scriptje</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<?php echo $s_kleur ?>
<input type="text" name="antispam" id="antispam" />
<input type="submit" value="plaats bericht"/>
</form>
</body>
</html>
Het script werkt niet omdat de waarde van de variabel $s_kleur steeds willekeurig wordt gegenereerd zodra ik deze opvraag. (verbeter me als ik het fout heb?).
Hopelijk kunnen jullie mij verder helpen? Ik heb al flink wat tijd besteed aan het zoeken naar een oplossing (zowel op PHPHulp als op Google) maar ik kom helaas niks gerelateerd tegen.
Hopende jullie zo voldoende te hebben geïnformeerd. Als er vragen zijn hoor ik deze natuurlijk graag!
Graag in het vervolg bij code, [code] [/code] tags gebruiken. [/modedit]
Gewijzigd op 21/12/2010 18:47:02 door Bas IJzelendoorn
PS Het gebruiken van in je formulier is onveilig " XSS " Gewoon uitschrijven.
Mark Coenen op 21/12/2010 16:39:52:
Je zult de waarde inderdaad tussentijds moeten opslaan. dit kun je doen met SESSIONS
PS Het gebruiken van in je formulier is onveilig " XSS " Gewoon uitschrijven.
PS Het gebruiken van in je formulier is onveilig " XSS " Gewoon uitschrijven.
Bedankt voor je reactie & tip, ik ga er mee aan de slag.
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
42
43
44
45
46
47
48
49
50
51
52
53
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
42
43
44
45
46
47
48
49
50
51
52
53
###############
#formulier.php#
###############
<?php
// Start een sessie
session_start();
// Maak een array aan en stop er waarden in
$a_kleuren = array("rood" , "blauw", "groen", "geel", "oranje", "paars");
// Plaats een willekeurige waarde van de bovenstaande array in de variabel $s_kleur
$s_kleur = array_rand(array_flip($a_kleuren));
// Stop de waarde van $s_kleur in een sessie
$_SESSION['rand_code'] = $s_kleur;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test scriptje</title>
</head>
<body>
<form action="check-captcha.php" method="post">
[code]<?php echo $_SESSION['rand_code'];?>
<input type="text" name="antispam" id="antispam" />
<input type="submit" value="plaats bericht"/>
</form>
</body>
</html>
###################
#check-captcha.php#
###################
// Start een sessie
session_start();
// Er wordt op submit geklikt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controleer of de ingevulde waarde hetzelfde is als de variabel $s_kleur
if($_SESSION['rand_code'] == $_POST['antispam'])
{
echo "je hebt de juiste kleur ingevuld.";
}
else
{
echo "er gaat helaas iets fout.";
}
}
?>
#formulier.php#
###############
<?php
// Start een sessie
session_start();
// Maak een array aan en stop er waarden in
$a_kleuren = array("rood" , "blauw", "groen", "geel", "oranje", "paars");
// Plaats een willekeurige waarde van de bovenstaande array in de variabel $s_kleur
$s_kleur = array_rand(array_flip($a_kleuren));
// Stop de waarde van $s_kleur in een sessie
$_SESSION['rand_code'] = $s_kleur;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test scriptje</title>
</head>
<body>
<form action="check-captcha.php" method="post">
[code]<?php echo $_SESSION['rand_code'];?>
<input type="text" name="antispam" id="antispam" />
<input type="submit" value="plaats bericht"/>
</form>
</body>
</html>
###################
#check-captcha.php#
###################
// Start een sessie
session_start();
// Er wordt op submit geklikt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Controleer of de ingevulde waarde hetzelfde is als de variabel $s_kleur
if($_SESSION['rand_code'] == $_POST['antispam'])
{
echo "je hebt de juiste kleur ingevuld.";
}
else
{
echo "er gaat helaas iets fout.";
}
}
?>
Toevoeging op 23/12/2010 18:49:06:
Kan de bovenstaande php code niet correct weergeven. De tag 'code' werd automatisch in regel 26 toegevoegd nadat ik het bericht gepost heb...
Gewijzigd op 23/12/2010 18:50:27 door Tim K