Image Verification
Auteur: Heracles - 29 december 2004 - 14:15 - Gekeurd door: Dennisvb - Hits: 9942 - Aantal punten: 3.60 (5 stemmen)
dit script kun je gebruiken om bijv. het automatisch submitten van een formulier door een programma tegen te gaan.
Om het te laten werken heb je het font nodig dat in de download staat.
En natuurlijk zeer veel dank een XenoX die de randstr() funtie heeft gemaakt ;)
|
Code: |
ver.php
<?php
// De functie om de random string te generen gemaakt door XenoX
function randstr($length, $hash = "abcdefghijklmnopqrstuvwxyz0123456789") {
$strlength = strlen($hash);
$string = "";
for($i = 0; $i < $length; $i++) {
$random = rand(0, $strlength) - 1;
$string .= substr($hash, $random, 1);
}
return $string;
}
/* met randstr() genereerd hij een random string
je kan de lengte hiervan aanpassen door het getal
te veranderen. Als je dit doet kan je beter ook het
plaatje vergroten want anders past het er niet in.
door randstr(hoeveel,welke tekens) welke tekens
te definieren, kan je aanpassen welke tekens er
gebruikt worden om de string te maken.
standaard zijn dit alle lowercase letters en cijfers.
*/
$string = randstr(8);
setcookie("hash", md5($string), time()+3600); // De cookie instellen
$width = 100; // De breedte van het plaatje
$height = 100; // De hoogte van het plaatje
$imgTXT = $string; //tekst die op de afbeelding komt
$hTXT = rand(40,60); // De random y van de text
$wTXT = rand(10,30); // De random x van de text
$angleTXT = rand(-45, 45); // De random angle van de text
$sizeTXT = 10; // De lettergrootte
$imgCreate = ImageCreate($width, $height); // Image maakwaarden
$imgBg = ImageColorAllocate($imgCreate, 51, 51, 51); // De achtergrond kleur (zwart)
$imgFg = ImageColorAllocate($imgCreate, 255, 255, 255); // De voorgrond kleur (wit)
ImageFill($imgCreate, 1, 1, $imgBg); // Het plaatje opvullen met de achtergrondkleur
Imagettftext($imgCreate,$sizeTXT,$angleTXT,$wTXT,$hTXT,$imgFg,'font/arial.ttf',$string) or die ("Please refresh");
// Imagettftext (int im, int size, int angle, int x, int y, int col, string fontfile, string text) = hoe de het werkt
header('Content-type: image/png');
ImagePNG($imgCreate); // De image maken
ImageDestroy($imgCreate); // De image klaar voor gebruik maken
?>
<?php // De functie om de random string te generen gemaakt door XenoX function randstr($length, $hash = "abcdefghijklmnopqrstuvwxyz0123456789") { $string = ""; for($i = 0; $i < $length; $i++) { $random = rand(0, $strlength) - 1; $string .= substr($hash, $random, 1); } return $string; } /* met randstr() genereerd hij een random string je kan de lengte hiervan aanpassen door het getal te veranderen. Als je dit doet kan je beter ook het plaatje vergroten want anders past het er niet in. door randstr(hoeveel,welke tekens) welke tekens te definieren, kan je aanpassen welke tekens er gebruikt worden om de string te maken. standaard zijn dit alle lowercase letters en cijfers. */ $string = randstr(8); $width = 100; // De breedte van het plaatje $height = 100; // De hoogte van het plaatje $imgTXT = $string; //tekst die op de afbeelding komt $hTXT = rand(40,60); // De random y van de text $wTXT = rand(10,30); // De random x van de text $angleTXT = rand(-45, 45); // De random angle van de text $sizeTXT = 10; // De lettergrootte $imgCreate = ImageCreate($width, $height); // Image maakwaarden $imgBg = ImageColorAllocate($imgCreate, 51, 51, 51); // De achtergrond kleur (zwart) $imgFg = ImageColorAllocate($imgCreate, 255, 255, 255); // De voorgrond kleur (wit) ImageFill($imgCreate, 1, 1, $imgBg); // Het plaatje opvullen met de achtergrondkleur Imagettftext ($imgCreate,$sizeTXT,$angleTXT,$wTXT,$hTXT,$imgFg,'font/arial.ttf',$string) or die ("Please refresh"); // Imagettftext (int im, int size, int angle, int x, int y, int col, string fontfile, string text) = hoe de het werkt header('Content-type: image/png'); ImagePNG($imgCreate); // De image maken ImageDestroy($imgCreate); // De image klaar voor gebruik maken ?>
form.php
<table style="border: 1px solid black;">
<?php
If (isset($_POST['answer']) AND $_POST['answer'] != "")
{
// de invoer definieren
$answer = $_POST['answer']; // Ophalen
$answer = trim($answer); // Eventuele spaties weghalen
$answer = strtolower($answer); // Er lowercase van maken
$answer = md5($answer); // md5 encrypten
If (!isset($_COOKIE['hash']))
{
// als er geen cookie is een error weergeven
die('Something went wrong please <a hef=\"form.php\">enter the number again</a>');
}
Else
{
// de cookie inhoud word de var $real
$real = $_COOKIE['hash'];
}
If ($answer == $real)
{
// Als de code correct is
echo "<tr>
<td> <b> Succesfully verified code </b> </td>
</tr>";
}
Elseif ($answer != $real)
{
// Als de code niet correct is
echo "<tr>
<td> <b> Failed verifying the correct code </b> </td>
</tr>
<tr>
<td> <center> <a href=\"form.php\"> Try again </a> </center> </td>
</tr>";
}
}
Else
{
// Het formulier weergeven
?>
<tr>
<td> <img src="ver.php"> </td>
<td> <b> Please enter the code below: </b>
<form action="form.php" method="post">
<input type="text" name="answer"><input type="submit" name="submit" value="Go">
</form>
</td>
</tr>
<?php
}
?>
</table>
<table style="border: 1px solid black;"> <?php If (isset($_POST['answer']) AND $_POST['answer'] != "") { // de invoer definieren $answer = $_POST['answer']; // Ophalen $answer = trim($answer); // Eventuele spaties weghalen $answer = strtolower($answer); // Er lowercase van maken $answer = md5($answer); // md5 encrypten If (!isset($_COOKIE['hash'])) { // als er geen cookie is een error weergeven die('Something went wrong please <a hef=\"form.php\">enter the number again</a>'); } Else { // de cookie inhoud word de var $real $real = $_COOKIE['hash']; } If ($answer == $real) { // Als de code correct is <td> <b> Succesfully verified code </b> </td> </tr>"; } Elseif ($answer != $real) { // Als de code niet correct is <td> <b> Failed verifying the correct code </b> </td> </tr> <tr> <td> <center> <a href=\"form.php\"> Try again </a> </center> </td> </tr>"; } } Else { // Het formulier weergeven ?> <tr> <td> <img src="ver.php"> </td> <td> <b> Please enter the code below: </b> <form action="form.php" method="post"> <input type="text" name="answer"><input type="submit" name="submit" value="Go"> </form> </td> </tr> <?php } ?> </table>
Vergeet niet het font te downloaden en neer te zetten in de map font/
Downloaden: http://www.vuurbaak.com/test/ImgVer.zip Download code (.txt)
|
|
|
Stemmen |
Niet ingelogd. |
|