Willekeurige waarde van een variabel opslaan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim K

Tim K

21/12/2010 16:30:25
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>



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
 
PHP hulp

PHP hulp

29/04/2024 06:46:41
 

21/12/2010 16:38:56
 
- Mark -

- Mark -

21/12/2010 16:39:52
Quote Anchor link
Je zult de waarde inderdaad tussentijds moeten opslaan. dit kun je doen met SESSIONS

PS Het gebruiken van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['PHP_SELF']; ?>
in je formulier is onveilig " XSS " Gewoon uitschrijven.
 
Tim K

Tim K

21/12/2010 16:49:09
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_SERVER['PHP_SELF']; ?>
in je formulier is onveilig " XSS " Gewoon uitschrijven.


Bedankt voor je reactie & tip, ik ga er mee aan de slag.
 
Tim K

Tim K

23/12/2010 18:35:32
Quote Anchor link
Het is me inmiddels gelukt, zie script hieronder. ivm de overzichtelijkheid heb ik de overige code m.b.t. het gastenboek eruit gelaten, de code hieronder gaat dus alleen over de (simpele) 'captcha' functie.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
###############
#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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.