blob: c9d819796a28669e639d46102c62099cc353f112 [file] [log] [blame]
<?php
/*
* Name: form_security.php
* Function: contains routines created to stop people from using 'bots' to auto complete the forms with spam info.
* I/O: functions take various parmaters, Some return values.
* By: M. Ward
*
*/
/**************************************
*
* Name: SecureQuestion
* Function: This function generates a relatively random mathematical question and prints it to the bottom
* of the calling page.
* I/O: takes a param for where html output should go, and returns the 'result' of the question for comparison.
* Date: Nov 21/05
* By: M. Ward
*
***************************************/
function SecureQuestion( &$html ) {
//get the 3 values and 2 functions
$Security_Values = array(mt_rand(1,100), mt_rand(1,100), mt_rand(1,100), mt_rand(0,1),mt_rand(0,1) );
//sort out the operators
$Operators = array('+','-');
//set the entry form and question into the html output
$html .= "<tr><td colspan=\"2\"><font face=\"Arial\" color=\"#FF0000\">*</font>Please enter the result of the following Mathematical question: ";
$html .= $Security_Values[0] . $Operators[$Security_Values[3]] . $Security_Values[1] . $Operators[$Security_Values[4]] . $Security_Values[2];
$html .= "<br /></td></tr> <tr><td colspan=\"2\"><input type=\"text\" size=\"6\" name=\"SkillAnswer\"></td></tr>";
//compute the result the hard way.
if ( $Security_Values[3] == 0)
$Result = $Security_Values[0] + $Security_Values[1];
else
$Result = $Security_Values[0] - $Security_Values[1];
if ( $Security_Values[4] == 0)
$Result = $Result + $Security_Values[2];
else
$Result = $Result - $Security_Values[2];
return( CryptResult($Result) );
}
/*********************************************
*
* Name: CryptResult
* Function: encrypts(cheaply I might add) the passed int and returns the 'encrypted' result
* I/O: Takes the number to be encrypted and returns the encrypted data
* Date: Nov 23/05
* By: M. Ward
*
* ********************************************/
function CryptResult( $key ) {
//first step
$crypt = $key - 83817;
//second step
$crypt = $crypt + 262237125;
//now serialise the data
$crypt = serialize($crypt);
//prep for storage
$crypt = base64_encode($crypt);
//return value
return $crypt;
}
/*********************************************
*
* Name: DeCryptResult
* Function: Decrypts(cheaply I might add) the passed int and returns the 'clear' result
* I/O: Takes the number to be decrypted and returns the clear data
* Date: Nov 23/05
* By: M. Ward
*
* ********************************************/
function DecryptResult( $key ) {
//first step decode
$clear= base64_decode($key);
//second step unserialize
$clear = unserialize($clear);
//now backout the math
$clear = $clear - 262237125;
//last step
$clear = $clear + 83817;
//return value
return $clear;
}
?>