PDA

View Full Version : کار نکردن کپچا کد



nokhodi
یک شنبه 16 شهریور 1393, 13:54 عصر
سلام
دستورات صفحه ایجاد کپچا :


<?php


session_start();


$string = '';


for ($i = 0; $i < 4; $i++) {
// this numbers refer to numbers of the ascii table (lower case)
$string .= chr(rand(48, 57));
}


$_SESSION['rand_code'] = $string;


$dir = 'fonts/';


$image = imagecreatetruecolor(90, 35);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 100, 100, 90);
$white = imagecolorallocate($image, 255, 255, 255);


imagefilledrectangle($image,0,0,399,99,$white);
imagettftext ($image, 16, 0, 5, 30, $color, $dir."acmesai.ttf", $_SESSION['rand_code']);


header("Content-type: image/png");
imagepng($image);


?>


برای ارسال و شرط بررسی کپچا :



<?php if(isset($_POST['frm_submit'])) {

if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['content']) && !empty($_POST['code']) && !empty($_POST['subject'])) {

if($_POST['code'] == $_SESSION['rand_code']) {

$name=htmlspecialchars($_POST['name']);
$email=htmlspecialchars($_POST['email']);
$subject=htmlspecialchars($_POST['subject']);
$content=htmlspecialchars($_POST['content']);

if(sendEmail($name,$email,$subject,$content)){

?>
<p><?php echo " درخواست شما با موفقیت ثبت شد.در صورت نیاز با شما تماس گرفته می شود";?></p>
<?php

}
}

else {

?>
<p><?php echo " کد امنیتی را اشتباه وارد کرده اید! دوباره امتحان کنید";?></p>
<?php


}
}


else {

?>
<p><?php echo "لطفا تمامی فیلد ها را تکمیل نمایید.";?></p>
<?php
}

}

function sendEmail($name,$email,$subject,$content){
ob_start();
include 'template.php';
$html=ob_get_contents();
ob_end_clean();
$html= str_replace('{name}',$name, $html);
$html= str_replace('{email}',$email, $html);
$html= str_replace('{subject}',$subject, $html);
$html= str_replace('{content}',$content,$html);
$headers = 'From: no-reply@domain.com'. "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/html; charset=utf-8' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

return mail("Admin<xxxxx@gmail.com>","درخواست جدید در وب سایت", $html, $headers);
}
?>


شرط بررسی کپچا میگه اشتباه وارد میکنی در صورتی که دقیقا اعداد رو وارد میکنم

arash691
یک شنبه 16 شهریور 1393, 16:28 عصر
از SESSION و POST یه echo بگیر چی چاپ میشه ...

nokhodi
یک شنبه 16 شهریور 1393, 16:50 عصر
code7709session

مقداری برای session چاپ نکرده...

اما تو فرم کپچا رو نشون داد ...
بهصفحه دوم که اعتبار سنجی داده هاست نمیرسه :(

hamedarian2009
یک شنبه 16 شهریور 1393, 17:06 عصر
تو صفحه دوم سشن رو استارت کردین؟

session_start();

nokhodi
یک شنبه 16 شهریور 1393, 17:17 عصر
نذاشته بودم...
الان گذاشتم...
اما خطا میده تو صفحه دوم :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/XXXX/public_html/metro/mailer.php:116) in/home/XXXXX/public_html/metro/mailer.php on line 118
code8052session8052

nokhodi
یک شنبه 16 شهریور 1393, 17:25 عصر
حل شد...
مکان ستارت سیشن رو جابه جا کردم...


ممنونم دوستان

arash691
یک شنبه 16 شهریور 1393, 17:25 عصر
در ابتدا صفحه تابع ob_start و در انتها تابع ob_end_flush رو قرار بدین همچنین برای start کردن شرط
if(!isset($_SESSION)){ session_start(); }

hamedarian2009
یک شنبه 16 شهریور 1393, 17:31 عصر
نذاشته بودم...
الان گذاشتم...
اما خطا میده تو صفحه دوم :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/XXXX/public_html/metro/mailer.php:116) in/home/XXXXX/public_html/metro/mailer.php on line 118
code8052session8052

باید سشن رو در ابتدای صفحه قبل هر کد دیگه ای استارت کنید

nokhodi
دوشنبه 17 شهریور 1393, 08:17 صبح
بله مکان رو وسط دستورات داده بودم...انتقالش دادم به ابتدای کدهای صفحه و حل شد

:لبخندساده:

nokhodi
دوشنبه 17 شهریور 1393, 11:05 صبح
دوستان به یه مشکل دیگه برخوردم...
توصفحه اصلیم میخوام از سیشن مقدار بگیرم... استارت سیشن رو هم گذاشتم اما به $_SESSION['rand_code'] هیچ مقداری نمیده :(

میخوام شرط $_POST['code'] == $_SESSION['rand_code'] رو با جاوا تو صفحه اصلی داشته باشم...جاواشو نوشتم اما الان چک کردم دیدم session مقدار نداره!!!!!