ورود

View Full Version : ساخت فرم ثبت نام



aliamel
شنبه 19 مرداد 1387, 22:15 عصر
با سلام
من یک فرم ثبت نام درست کردم که یه مشکلی توش دارم.
مشکل من در قسمت وارد کردن کد امنیتی هستش .منظور همون کدی که باید وارد کنیم تا مشخص شود که این کار توسط ماشین انجام نشده است.(کد هر باز باید عوض شود).
اگه بتونین با vbscript مثال بزنین خیلی خوبه .در غیر این صورت یه نمونه رو بذارید.
تشکر.

parsha
سه شنبه 19 شهریور 1387, 13:20 عصر
اول باید یه فایل php بسازید که حاوی کلاسی برای تولید عکس امنیتی است.

<?php
session_start();

/*
* File: CaptchaSecurityImages.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 03/08/06
* Updated: 07/02/07
* Requirements: PHP 4/5 with GD and FreeType libraries
* Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/

class CaptchaSecurityImages {

var $font = 'monofont.ttf';

function generateCode($characters) {
/* list all possible characters, similar looking characters and vowels have been removed */
$possible = '23456789bcdfghjkmnpqrstvwxyz';
$code = '';
$i = 0;
while ($i < $characters) {
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
return $code;
}

function CaptchaSecurityImages($width='120',$height='40',$c haracters='6') {
$code = $this->generateCode($characters);
/* font size will be 75% of the image height */
$font_size = $height * 0.75;
$image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
/* set the colours */
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 20, 40, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);
/* generate random dots in background */
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
/* generate random lines in background */
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}
/* create textbox and add text */
$textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
/* output captcha image to browser */
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['security_code'] = $code;
}

}

$width = isset($_GET['width']) && $_GET['width'] < 600 ? $_GET['width'] : '120';
$height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';

$captcha = new CaptchaSecurityImages($width,$height,$characters);

?>

بعد از ذخیره این فایل مثلا تحت نام securityImage.php کافیست داخل فرم خودتون سورس تگ img را به این فایل لینک کنید بطوریکه :

<img src="securityImage.php" />

تا اینجا کد امنیتی تولید و در فرم نمایش داده شده حال کافیست تکست باکسی قرار دهید تا در هنگام تایید شدن فرم (submit) مقدار آن با رشته نمایش داده شده در عکس مقایسه گردد :
فرض کنید تکست باکس به فرمت زیر باشد:

<input id="security_code" name="security_code" type="text" />

کد تایید صحت تصویر امنیتی :

<?php
session_start();
if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) {
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.
unset($_SESSION['security_code']);
} else {
// Insert your code for showing an error message here
}
?>

najafzade
سه شنبه 19 شهریور 1387, 13:37 عصر
سلام
کد ASP.NET رو هم دارین.

اگه لطفی کنین و معرفی کنین ممنون می شم.
:بوس: