Kijken of al bestaat

Status
Niet open voor verdere reacties.

gebruiker241

Gebruiker
Lid geworden
8 mrt 2008
Berichten
209
Kijken of waarde bestaat

Hee, helpmij-ers

Ik zit met een klein probleempje.

Ik heb een soort quiz gemaakt, en daar kan je punten voor scoren.
Maar je kan zo vaak mee doen als je wilt, maar dat mag natuurlijk niet!
Ik wil graag maken dat je per gebruiker 1 keer mag mee doen.
Hoe maak ik dit?
Want nu kan je oneindig het zelfde invullen.
Alles doet het behalve dat je oneindig kan invullen.
(dit script word ge-include, vandaar dat er geen config staat etc..)
Ik ben pas 12, dus niet zo'n heel erg moeilijke uitleg graag :P
(Ik probeer alles te begrijpen :) Dit script heb ik bijna helemaal zelf gemaakt alleen het mysql gedeelte is deels van internet, ik ben daar niet zo goed in)

PHP:
<!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>Quiz</title>
</head>
<?php
include ('config.php');
if($_POST['verzenden']) {
$totaal = "0";
$answer1 = $_POST['vraag1'];

    if ($answer1 == "1g") {
        
        $totaal = $totaal + "1";
    }
    
    else {
        
        $totaal = $totaal + "0";
        
    }   
	
	$answer2 = $_POST['vraag2'];

    if ($answer2 == "2g") {
        
        $totaal = $totaal + "1";

    }
    
    else {
        
        $totaal = $totaal + "0";
        
    }   
	
	$answer3 = $_POST['vraag3'];

    if ($answer3 == "3g") {
        
        $totaal = $totaal + "1";

    }
    
    else {
        
       $totaal = $totaal + "0";
        
    }    
	$answer4 = $_POST['vraag4'];

    if ($answer4 == "4g") {
        
        $totaal = $totaal + "1";

    }
    
    else {
        
        $totaal = $totaal + "0";
        
    }     
	
	$answer5 = $_POST['vraag5'];

    if ($answer5 == "5g") {
        
        $totaal = $totaal + "1";
 
    }
    
    else {
        
        $totaal = $totaal + "0";
    }  
	        
			$a = 1;
			$b = 2;
			$c = 3;
			$d = 4;
			$e = 5;
			$f = 0;
			if($totaal >= $e){
			   echo "Nice, 5 of meer";		
			}elseif($totaal >= $c && $totaal <= $d){
				echo "Kan beter 3 of 4";
				
			} elseif($totaal >= $a && $totaal <= $b){
					  echo "Kan veel beter, 1 of 2";
					  } elseif($totaal == $f){
						  echo "0 punten, je moet echt eens werken aan je veiligheid!";
					  }else {
						  echo "error";
					  }

$quiz = "Veiligheid"; 
mysql_query("INSERT INTO quiz
(naam, id, ip, welkequiz, datum, punten)
 VALUES(
'".$_SESSION['gebruikersnaam']."',
'".$_SESSION['id']."',
'".$_SERVER['REMOTE_ADDR']."',
'".$quiz."',
Now(),
'".$totaal."'
)
 ");

}

?>
<body>
<form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>?p=quizveiligheid" onsubmit="return ValidateForm()" method="post">

  <p>Denk jij dat je alles weet van veiligheid? <br /><br/>
    Doe dan nu de test!<br/>
    
    -------------------------------------------
  <br/>
    De test:
    
  <br/>
  <p>Vraag1:  <br/>
    Je krijgt een mail van [I]eensite[/I]. <br /> Daarin staat dat je je gebruikersnaam en wachtwoord moet terug mailen.<br />
    Doe je dit niet?<br />
    Dan kan je niet meer op je (sitenaam) account.<br />
    <br />
    Wat doe je:<br/>
    <br />
    
   <input type="radio" name="vraag1" value="1f">
    Ik geef mijn gebruikersnaam en wachtwoord
    <br />
    <input type="radio" name="vraag1" value="1g">
    Staff's zullen nooit je wachtwoord vragen, dus ik reageer niet op deze mail en verwijder hem.

<p>Vraag 2:<br />
Je hoort van iemand dat je naar een site moet gaan en daar kan je dan gratis credits krijgen<br />
Wat doe je?
<p>    <input type="radio" name="vraag2" value="2f">
   	Ik ga meteen naar de site, want ik wil natuurlijk gratis credits.<br />
        <input type="radio" name="vraag2" value="2g">
    Ik ga meteen naar (sitenaam).nl en geef de site aan.
    
    
<p>Vraag 3:<br />
Iemand vraagt  je e-mail.<br />
Wat doe je?<br />
<br />    <input type="radio" name="vraag3" value="3f">
  Natuurlijk geef ik mijn e-mail, misschien is die gene wel heel aardig!<br />
<input type="radio" name="vraag3" value="3g">
  Ik geef mijn e-mail niet, je weet niet wie het is.
  <br />
  <br />
  Vraag 4:<br />
  Er komt in eens een scherm op je computer,<br />
  er staat dat je iets moet downloaden.<br />
  Je weet niet wat het is.<br />
  Wat doe je?<br />
<br />    <input type="radio" name="vraag4" value="4g">
  Ik weet niet wat het is, dus ik download het niet.<br />
  <input type="radio" name="vraag4" value="4f">
  Ik download het en kijk wel wat het is.
  <br />
  <br />
  Vraag 5:<br />
  Iemand valt je lastig op (sitenaam)<br />
  Wat doe je?<br />
<p><br />    
      <input type="radio" name="vraag5" value="5ff">
      Ik doe niks
    <br />
    <input type="radio" name="vraag5" value="5f">
    Ik ga hem uitschelden
    <br />
    <input type="radio" name="vraag5" value="5g">
  Ik geef hem via het gele vraagteken aan en druk op negeer.    
<p>
  <input name="verzenden" type="submit" value="Verzenden" />  
<p>
  </form>
</body>
</html>
 
Laatst bewerkt:
Hm, lastig. 100% waterdicht zul je het nooit krijgen en mensen zullen altijd in staat zijn om je beveiliging te omzeilen.

Wat je het makkelijkste kunt doen, is het IP loggen van iedereen die het invult. Je kunt het opvragen via de $_SERVER variabelen (print em even en zoek op welk veld het is, weet het zo niet zeker)

Vervolgens gooi je die IP in een tabel, en voordat je iemand toelaat op de quiz, controleer je eerst of je zijn IP niet al hebt.

Betekent wel dat je dus ook niet je broertje in kunt laten vullen op dezelfde pc...


Wat je ook kunt doen, is om een email adres vragen aan het begin, en het email adres controleren zodat elk adres maar 1x voor mag komen. Als je dan meerdere adressen hebt kun je de quiz vaker invullen natuurlijk, maar daar ontkom je niet aan.
 
Ik log al een ip - zie het script, en alleen geregistreerde gebruikers kunnen hem invullen,
mijn vraag is juist, hoe kun je checken of hij/zij de quiz al ingevuld heeft of nog het nog niet gedaan heeft (via ip of/en gebruikersnaam)
 
Ow. Sorry dan had ik em verkeerd gelezen.

Je kunt het controleren door, voordat je iemand toegang tot de quiz geeft, een query te doen om te kijken of zijn ip / gebruikersnaam al bestaan:

PHP:
$rows = mysql_query("
SELECT datum
 FROM quiz
WHERE ip = " . $_SERVER['REMOTE_ADDR'] . "
OR gebruikersnaam = " . $_SESSION['gebruikersnaam'] . " );
if ( $rij = mysql_fetch_array( $rows ) ) { 
  // de gebruiker heeft de quiz al gedaan
  echo 'Je hebt de quiz al gedaan op: ' . $rij['datum'] . ", je mag hem niet nog eens doen.";
}
else {
  // nieuwe gebruiker, hier kun je de quiz doen.
}

Zoiets.
 
Ik had het al zelf uitgevonden :p
Maar toch bedankt.

Ik had:

PHP:
$ip = $_SERVER['REMOTE_ADDR'];
$sql = mysql_query("SELECT gedaan FROM quiz WHERE id='".$_SESSION['id']."'");
$row = mysql_fetch_assoc($sql);

$sql_ip = mysql_query("SELECT * FROM quiz WHERE ip='".$ip."'");
$row_ip = mysql_fetch_assoc($sql_ip);

if($row['gedaan'] == "1" || $ip == $row_ip['ip']) {
echo "al mee gedaan";
} else {
// Rest van het script
}

Dit is mijn script nu :)

Toch bedankt!
Misschien is er nog iets te doen aan de beveiliging?
Zo ja, graag even melden :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan