PDA

View Full Version : سوال: قرار دادن captcha در فرم زیر



urmiya
دوشنبه 25 مرداد 1389, 15:15 عصر
سلام دوستان
من تازه عضو شدم
من هرچه قدر تلاش کردم نتونستم کد captcha رو درست بزارم تو فرم ارسال نظراتم
من فایل رو ایجاد captcha رو در سایتم در قسمت روت با نام captcha.php گذاشتم قبلا ولی تو فرم هر چه قدر تلاش کردم نتونستم کدش رو بزارم و یا وقتی کد captcha که نشون میداد رو اشتباه مینوشتم بازم فرم ارسال میشد
لطفا شما کدش رو واسم تو جای مناسب بزارین
اینم از کد صفحه نظراتم

<?php

define('SECURE',true);

/********/
error_reporting(0);
/********/
ini_set("display_errors","0");
ini_set("register_globals","0");

/********/
$start = isset($_GET['start'])?intval($_GET['start']):0;
if($start < 0)
$start = 0;

#-----
$date = date('y-m-d');
$name = isset($_POST['name'])?strip_tags($_POST['name']):'';
$email = isset($_POST['email'])?strip_tags($_POST['email']):'';
$website = isset($_POST['website'])?strip_tags($_POST['website']):'';
$comment = isset($_POST['comment'])?strip_tags($_POST['comment']):'';
$remember = isset($_POST['remember'])?1:0;
$private = isset($_POST['private'])?1:0;


#-----
$postid = isset($_GET['postid'])?intval($_GET['postid']):0;
if(!$postid)
die('Hack Attack!');

#-----
$servername = strtolower($_SERVER['SERVER_NAME']);
$servername = (substr($servername,0,4) == 'www.')?substr($servername,4):$servername;

#-----
$blogname = '';
$domain = '';


/*************************************/
include('../config.php');
include('../script/lib.functions.php');

#------
$link = mysql_pconnect($_VAR['MYSQL']['HOST'], $_VAR['MYSQL']['USER'], $_VAR['MYSQL']['PASSWD']);


/*************************************/
if(preg_match('#([a-z0-9-]+?)\.mysite\.com#i', $servername, $array))
{
$blogname = $array[1];
$domain = '.mysite.com';
}
else
{
$query = sprintf("SELECT * FROM `users` WHERE `blogdomain` = '%s'",mysql_real_escape_string($servername));
$Result = mysql_db_query($_VAR['MYSQL']['DBNAME'], $query, $link);
if($Row = mysql_fetch_array($Result))
{
$blogname = $Row['username'];
$domain = $servername;
}
}
/*************************************/
$query = sprintf("SELECT blog_posts.*
FROM users, blog_posts
WHERE
users.username = '%s' AND
blog_posts.blogid = users.id AND
blog_posts.id = '%s'",

mysql_real_escape_string($blogname),
mysql_real_escape_string($postid));

$Result = mysql_db_query($_VAR['MYSQL']['DBNAME'], $query, $link);
if(!$blogPost_Row = mysql_fetch_array($Result))
die('Hack Attack!');


/*********/


if(isset($_GET['action']) && $_GET['action'] == 'clearcookie')
{

setcookie('name', '', time()*2, '/', $domain);
setcookie('email', '', time()*2, '/', $domain);
setcookie('website', '', time()*2, '/', $domain);
setcookie('remember', '', time()*2, '/', $domain);

header("location:comment.php?postid={$postid}");

}

/*************************************/
if(isset($_POST['post']))
{

if($remember)
{
setcookie('name', $name, time()*2, '/', $domain);
setcookie('email', $email, time()*2, '/', $domain);
setcookie('website', $website, time()*2, '/', $domain);
setcookie('remember', 'checked="checked"', time()*2, '/', $domain);
}
else
{
setcookie('name', '', time()*2, '/', $domain);
setcookie('email', '', time()*2, '/', $domain);
setcookie('website', '', time()*2, '/', $domain);
setcookie('remember', '', time()*2, '/', $domain);
}

if($blogPost_Row['commenting'] >= 2)
header("location:comment.php?postid={$postid}&cc=1");

if(empty($name))
$name = 'ميهمان';

if(empty($comment))
$error = 'متن نظر وارد نشده است';

else
{

$query = sprintf("INSERT INTO `blog_comments`
VALUES('0', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
mysql_real_escape_string((($private)?'2':$blogPost _Row['commenting'])),
mysql_real_escape_string($blogPost_Row['blogid']),
mysql_real_escape_string($postid),
mysql_real_escape_string($date),
mysql_real_escape_string($name),
mysql_real_escape_string($email),
mysql_real_escape_string($website),
mysql_real_escape_string($comment));

$Result = mysql_db_query($_VAR['MYSQL']['DBNAME'], $query, $link);
/*************/
if($blogPost_Row['commenting'] == 1)
{
header("location:comment.php?postid={$postid}&nc=1&ma=1");
}
else
{
$query = sprintf("SELECT
blog_posts.*,
COUNT(comments.id) AS `commentscount`

FROM
blog_posts

LEFT JOIN
blog_comments comments
ON
comments.accept = '0'
AND comments.postid = blog_posts.id


WHERE
blog_posts.id = '%s'
AND
blog_posts.blogid = '%s'

GROUP BY blog_posts.id

ORDER BY
blog_posts.id DESC",
mysql_real_escape_string($postid),
mysql_real_escape_string($blogPost_Row['blogid']));

$Result = mysql_db_query($_VAR['MYSQL']['DBNAME'], $query, $link);
if($Row = $Row = mysql_fetch_array($Result))
{
include('../class/class.commentscount.php');
$commentscount = new CommentsCount(
$blogname,
$Row['id'],
$Row['catid'],
date('Y-m',$Row['time']),
$Row['commentscount']
);
$commentscount->_update();

}

header("location:comment.php?postid={$postid}&nc=1");
}

}
}

/*************************************/

$query = "SELECT COUNT(`id`) as `count` FROM `blog_comments` WHERE `postid` = '{$postid}' AND `accept` = '0' ";
$Result = mysql_db_query($_VAR['MYSQL']['DBNAME'], $query, $link);
$Row = mysql_fetch_array($Result);
$count = $Row['count'];
$start = ($start > $count)?0:$start;

?><!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><?=$servername?></title>
<style type="text/css">
<!--
a {
font-family: tahoma;
font-size: 11px;
color: #006699;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #006699;
}
a:hover {
text-decoration: none;
color: #006699;
}
a:active {
text-decoration: none;
color: #006699;
}
body,td,th {
font-family: tahoma;
font-size: 11px;
color: #333333;
}
input {
color:#666666;
padding:2px;
font-family:tahoma;
font-size:11px;
background-position:right;
background-repeat:repeat-x;
}
body {
background-color: #D0E6FB;
}
-->
</style></head>
<body onload="<?=isset($_GET['cc'])?"alert('نظر سنجي توسط مدير غير فعال شده است');":''?>"?>
<div style="height:190px; overflow:auto">
<?php
if(isset($error))
{
?>
<table width="440" border="0" align="center" cellpadding="2" cellspacing="1" style="border:1px solid #0033FF">
<tr>
<td height="60" align="center" bgcolor="#FF8A3C" style="color:#FFFFFF;"><?=$error?></td>
</tr>
</table>
<br />
<?php
}
?>
<?php
if($count)
{

$query = "SELECT * FROM `blog_comments` WHERE `postid` = '{$postid}' AND `accept` = '0' ORDER BY `id` DESC LIMIT {$start}, 10";
$Result = mysql_db_query($_VAR['MYSQL']['DBNAME'], $query, $link);
while($Row = mysql_fetch_array($Result))
{
?>
<br />
<table width="440" border="0" align="center" cellpadding="5" cellspacing="1" style="border:1px solid #0033FF">
<tr>
<td align="right" bgcolor="#099CFF" dir="rtl">
<div style="float:left; width:100px;" align="left">
<?=__etop(__pdate($Row['date'],1,1))?>
</div>
نويسنده :
<?=$Row['name']?>
</td>
</tr>
<tr>
<td height="50" valign="top"><div align="justify" dir="rtl"><?=$Row['comment']?></div></td>
</tr>
<tr>
<td valign="top" bgcolor="#FFFFCC">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<?=empty($Row['email'])?"":"<td> [ <a href='mailto:{$Row['email']}' >ارسال ايميل</a> ] </td>"?>
<?=empty($Row['website'])?"":"<td> [ <a href='".(substr(strtolower($Row['website']),0,7) == 'http://'?$Row['website']:"http://{$Row['website']}")."' target='_blank' >آدرس وبسايت</a> ] </td>"?>
</tr>
</table>
</td>
</tr>
</table>
<?php
}

if($count > 10)
{
?>
<table width="440" border="0" align="center" cellpadding="2" cellspacing="1">
<tr>
<td height="40px">
<div align="justify" dir="rtl">
<?php
for($i = 0; $i < $count; $i += 10)
{
echo "&nbsp;<a href='?postid={$blogname}&start={$i}'>".(($i/10)+1)."</a>&nbsp;";
}
?>
</div></td>
</tr>
</table>
<?php
}
}
else
{
?>
<table width="440" border="0" align="center" cellpadding="2" cellspacing="1" style="border:1px solid #0033FF">
<tr>
<td height="100" align="center" bgcolor="#E7E7B6" style="background-repeat:repeat-x"> نظري ارسال نشده است </td>
</tr>
</table>
<?php
}
?>

<?php
if($blogPost_Row['commenting'] >= 2)
{
?>
<br />
<br />
<table width="440" border="0" align="center" cellpadding="2" cellspacing="1" style="border:1px solid #C9C95A">
<tr>
<td height="60" align="center" bgcolor="#E7E7B6" style="background-repeat:repeat-x"> ارسال نظر توسط مدير غير فعال شده است </td>
</tr>
</table>
<?php
}else{
?>
</div>
<form id="form1" name="form1" method="post" action="comment.php?postid=<?=$postid?>" onsubmit="document.getElementById('btnSubmit').disabled = 'disabled'" style="display:inline;">
<br />
<table width="450" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td dir="rtl" align="center">
<fieldset style="border:1px solid #0033FF">
<legend>ارسال نظر</legend>
<br />
<table width="380" border="0" align="center" cellpadding="2" cellspacing="0" dir="ltr">
<tr>
<td colspan="2" align="right"><input name="name" dir="rtl" type="text" id="name" value="<?=isset($_COOKIE['name'])?$_COOKIE['name']:''?>" /></td>
<td width="78" align="right">: نام</td>
</tr>
<tr>
<td colspan="2" align="right"><input name="email" type="text" id="email" value="<?=isset($_COOKIE['email'])?$_COOKIE['email']:''?>"/></td>
<td align="right">: آدرس ايميل </td>
</tr>
<tr>
<td colspan="2" align="right"><input name="website" type="text" id="website" value="<?=isset($_COOKIE['website'])?$_COOKIE['website']:''?>"/></td>
<td align="right">: آدرس وبسايت </td>
</tr>
<tr>
<td colspan="2" align="right"><textarea name="comment" dir="rtl" cols="50" rows="4" id="comment" style="font-family:tahoma; font-size:11px; color:#666666"></textarea></td>
<td align="right" valign="top">: نظر شما </td>
</tr>
<tr>
<td colspan="2" align="right" dir="rtl">
<input name="remember" type="checkbox" id="remember" value="checkbox" <?=isset($_COOKIE['remember'])?$_COOKIE['remember']:''?> />
حفظ مشخصات [ <a href="comment.php?postid=<?=$postid?>&action=clearcookie">حذف مشخصات</a> ] </td>
<td align="right">&nbsp;</td>
</tr>
<tr>
<td width="85" height="35" align="right" valign="bottom"><input name="post" type="hidden" id="post" value="<?=$postid?>" />
<input type="submit" name="Submit" value=" ارسال " style="cursor:pointer; background-color:#808040; color:#FFFFFF; border:1px solid #757535;" id="btnSubmit" /></td>
<td width="205" align="right" valign="top">
ارسال پيام به صورت خصوصي
<input name="private" type="checkbox" id="private" value="checkbox" /></td>
<td align="right">&nbsp;</td>
</tr>
</table>
<br />
</fieldset>
</td>
</tr>
</table>
</form>
<?php
}
?>
<?php
if(isset($_GET['nc']))
{
?>
<script language="javascript" type="text/javascript">
<?php
if(isset($_GET['ma']))
{
?>
alert('نظر شما با موفقيت ثبت و پس از تائيد توسط مدير به نمايش در خواهد آمد');
<?php
}else{
?>
alert('نظر شما با موفقيت ثبت شد');
<?php
}
?>
</script>
<?php
}
?>
</body>
</html>

LORD AELX
دوشنبه 25 مرداد 1389, 15:57 عصر
سرچ می کردید، راجع به CAPTCHA مطلب زیاد بود... :متفکر:

http://barnamenevis.org/forum/showthread.php?t=233055

موفق باشید :قلب:

ahmadflasher
دوشنبه 25 مرداد 1389, 15:58 عصر
لینک زیر یه نمونه هستش. البته برای نظر نیست ولی میتونی فرم خودتو جایگزینش کنی.
http://web2fa.com/engine/download.php?id=7

urmiya
دوشنبه 25 مرداد 1389, 16:02 عصر
من نمیتونم بزارم
اگه کسی هست که میتونه کد رو در جای مناسب بزاره ممنون میشم این کار رو بکنه

LORD AELX
دوشنبه 25 مرداد 1389, 16:42 عصر
من نمیتونم بزارم
اگه کسی هست که میتونه کد رو در جای مناسب بزاره ممنون میشم این کار رو بکنه

میشه لطفا خودتون هم کمی به خودتون کمک کنید؟ :متفکر: یه لینک براتون گذاشتم، کافیه آموزشی که توی پست اول داده شده رو غیر از قسمت های مربوط به Audio انجام بدهید. کاملا هم واضح و شفاف توضیح دادم. :لبخندساده: پست دوم به بعد، آموزش کاملتری هست که نیاز نیست مطالعه بفرمایید، فقط پست اول رو بخونید.

کل کار هم بدین صورت هست که یک تگ img مخصوص CAPTCHA روی فرم تون قرار می دهید بعلاوه یک TextBox مخصوص CAPTCHA ...سپس با کد PHP صحت ورود داده ها رو چک می کنید.

که همه این ها توضیح داده شده اند. :چشمک:

این چیزی هم که دوست عزیز مون دادند، هم با کمی تغییر میتونید نتیجه بگیرید.

موفق باشید :قلب:

urmiya
دوشنبه 25 مرداد 1389, 17:22 عصر
کل کار هم بدین صورت هست که یک تگ img مخصوص CAPTCHA روی فرم تون قرار می دهید بعلاوه یک TextBox مخصوص CAPTCHA ...سپس با کد PHP صحت ورود داده ها رو چک می کنید.

من این آموزش رو دیدم
و مشکلم کدی هست که داده ها رو پردازش کنه اگه درست بود فرم رو بفرسته و اگه نه پیغام بده که کد صحیح وارد نشده است
من کد شما رو هم گذاشتم ولی فرم درست کار نکرد
اگه ممکنه شما کد رو بزارین
آدرس کدساز در روت به نام captcha.php هستش

LORD AELX
دوشنبه 25 مرداد 1389, 18:15 عصر
من با بقیه کدتون کاری ندارم، فقط این کار هایی رو که میگم به ترتیب انجام بدهید تا این قسمت به فرم تان اضافه شود:

1. کتابخانه PHP - CAPTCHA را از اینجا (http://www.ejeliot.com/samples/php-captcha/download.php) دانلود کنید. این فایل را در پوشه سایت خود قرار دهید.
2. فایلی با نام visual-captcha.php و حاوی کد زیر بسازید:


<?php
require('php-captcha.inc.php');
$aFonts = array('fonts/VeraBd.ttf', 'fonts/VeraIt.ttf', 'fonts/Vera.ttf');
$oVisualCaptcha = new PhpCaptcha($aFonts, 200, 60);
$oVisualCaptcha->Create();
?>


3. در محلی از فرم تون که قرار است تصویر CAPTCHA را نمایش بدهید، کد زیر را وارد کنید:


<img src="visual-captcha.php" width="200" height="60" alt="Visual CAPTCHA" />


4. در محلی از فرم تون که می خواهید ورودی کاربر را دریافت کنید، کد زیر را وارد کنید:


<input type="text" name="user_code" size="20">


5. کد PHP زیر نیز برای پردازش صحت ورود کد CAPTCHA استفاده می شود که در محل مناسب، آن را درج کنید:


require('php-captcha.inc.php');
if (PhpCaptcha::Validate($_POST['user_code'])) {
echo 'Valid code entered';
} else {
echo 'Invalid code entered';
}


* هیچ نامی را تغییر ندهید.
* به جای دستورات درون if و else کد بالا، عملیات مورد نظرتان را انجام دهید. بخش if مربوط به درستی کد وارد شده و بخش else مربوط به اشتباه بودن آن است.
* برای تغییر اندازه، رنگ، شکل و ... کد CAPTCHA ظاهر شده، به بخش آموزش که لینک آن را قرار دادم، بروید و option های مختلف رو ببینید.

موفق باشید :قلب:

LORD AELX
دوشنبه 25 مرداد 1389, 18:46 عصر
یک مطلب دیگه که فراموش کردم بگم...

کنار این فایل هاتون باید یک پوشه بنام fonts داشته باشید و خط سوم در فایل visual-captcha.php را بر اساس فونت هایی که درون آن قرار می دهید، ویرایش کنید. فونت هایی که استفاده می کنید حتما باید از نوع TrueType باشند.

موفق باشید :قلب:

urmiya
سه شنبه 26 مرداد 1389, 00:15 صبح
دوست گرامی ممنون ازت ولی

5. کد PHP زیر نیز برای پردازش صحت ورود کد CAPTCHA استفاده می شود که در محل مناسب، آن را درج کنید:


view source (http://www.barnamenevis.org/forum/showthread.php?t=240264#viewSource)
print (http://www.barnamenevis.org/forum/showthread.php?t=240264#printSource)? (http://www.barnamenevis.org/forum/showthread.php?t=240264#about)

1.require('php-captcha.inc.php');
2.if (PhpCaptcha::Validate($_POST['user_code'])) {
3. echo 'Valid code entered';
4.} else {
5. echo 'Invalid code entered';
6.}




محل مناسب کجاست؟
من فقط سر این مشکل دارم نه سایر مراحل
من این کار ها رو انجام میدم ولی کد رو که غلط تایپ کنم بازم فرم ارسال میشه و هیچ پیغامی مبنی بر کد صحیح نیست نمایش نمیده

LORD AELX
سه شنبه 26 مرداد 1389, 02:00 صبح
دوست گرامی ممنون ازت ولی

محل مناسب کجاست؟
من فقط سر این مشکل دارم نه سایر مراحل
من این کار ها رو انجام میدم ولی کد رو که غلط تایپ کنم بازم فرم ارسال میشه و هیچ پیغامی مبنی بر کد صحیح نیست نمایش نمیده

این کد رو باید تو قسمت PHP صفحه قرار بدی، توی بلاک شرط if، دستوراتی از کد پست اول ات رو که مربوط به پروسه های بعد از صحت کد هست رو بگذار و تو بلاک else هم کد مربوط به عدم صحت CAPTCAH رو قرار بده... همین! :لبخندساده:

سورس برنامه ای که گذاشتی زیاده و من هم حوصله خوندن اش رو ندارم، بنابراین خودت ببین چی به چیه! :چشمک: