<?php
//start the sesson
session_start();
//include the class
include('rndkvp.class.php');
//instnatiate the class or load from saved object
if( empty($_SESSION['humanCheck']) ){
$humanCheck = new rndkvp(10);
}else{
$humanCheck = unserialize($_SESSION['humanCheck']);
}
//once form is submitted
if( !empty($_REQUEST['form-submitted']) ){
//load request variables into system variables
$formName = $_REQUEST['form-name'];
$formComment = $_REQUEST['form-comment'];
//force fail if the key is not found in the request
$value = ( empty($_REQUEST[$humanCheck->key]) ) ? 'fail' : $_REQUEST[$humanCheck->key];
//test system variables for errors
$error = '';
if( empty( $formName ) ){
$error .= 'Please provide a Name<br>';
}
if( empty( $formComment ) ){
$error .= 'Please provide a Comment<br>';
}
//if no errors found
if( empty($error) ){
//validate value submitted
if( $humanCheck->validate( $value ) != true ){
die('Failed human validation<br><a href="">Try Again</a>');
}
//validation passed, reset key value pairs
$humanCheck->resetKVP();
$formComment = 'Passed Human Validation'."\n";
$formComment .= 'Testing key: '.$humanCheck->key.' and value: '.$humanCheck->value;
}
}else{
//set up form defaults
$formName = '';
$formComment = 'Testing key: '.$humanCheck->key.' and value: '.$humanCheck->value;
}
//save the object to the session
$_SESSION['humanCheck'] = serialize($humanCheck);
?>
<!DOCTYPE html>
<html>
<head>
<title>Random Key Value Pair Testing</title>
<meta charset="UTF-8">
</head>
<body>
<form method="POST">
<?php
if( !empty($error) ){
?>
<div style="border: thin solid red;"><?php echo $error;?></div>
<?php
}
?>
<div>Name: <input type="text" name="form-name" value="<?php echo $formName;?>"></div>
<div>Comment:<br><textarea name="form-comment" rows="10" cols="60"><?php echo $formComment;?></textarea></div>
<div>
<input type="hidden" name="form-submitted" value="1">
<?php echo $humanCheck->createFormInput();?>
<input type="submit" name="form-submit" value="Submit">
</div>
</form>
<hr>
<h4>Testing Process</h4>
<p>1: Submit the form without entering a name. You should see an error and the key value pairs remain the same.</p>
<p>2: Submit the form after entering a name. You should see the success and the key value pairs change. Continue to submit a few more times and see the key value pairs change.</p>
<p>3: Refresh the page to simulate a form submission by a bot. You may need to accept the refresh warning. Validation should fail.</p>
</body>
</html>
|