مشکل نمایش کد کپچا

پرسیده شده
فعالیت 1285 روز پیش
دیده شده 1205 بار
0

سلام و خسته نباشید

من یک پروژه mvc ایجاد کردم

 

یک مشکل پیدا کردم که نتونستم حلش کنم

 

فایل تولید کد کپچا نوشتم و در فایل لاگین در بخش تصویر وارد کردم

<img src='chaptcha.php' alt>

اصل مشکل اینجاست که اگر فایل رو بدون ادرس مجازی و با پسوند php باز کنم تصویر کپچا نمایش داده میشه

 

اما زمانی که از طریق ادرس مجازی که url های بازنویسی شده رو اجرا میکنه ، صفحه لاگین رو باز میکنم

دیگه تصویر  کپچا نمایش داده نمیشه . 

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

 

تنها چیزی که کامل متوجه شدم اگر بدون بازنویسی url ها و ادرس مجازی و با پسوند کامل صفحه لاگین رو باز کنم کد کپچا نمایش داده میشه . 

 

http://localhost/login :: تصویر کپچا نمایش داده نمیشه

http://localhost/khabarche.dv/views/login.php :: تصویر کپچا نمایش داده میشه

فایل پیوست

0
حذف شده

سلام و احترام 

الان شما فایل هاتون مستقیم داخل پوشه htdocs ( داخل زمپ و یا www داخل ومپ هستش ) و یا پوشه ای دارین ؟ 

ضمن اینکه khabarche.dv دامین مجازی هست ؟ 

اگر بله دیگه نباید localhost  رو قرار بدید 

میتونین تنها khabarche.dv  رو استفاده کنید 

اگر نه پوشه هستش و میخواید از فایل htaccess استفاده کنید فایل htaccess رو در مسیری که فایل index قرار داره بسازید

لطفا تمامی کد هایی که مربوط به ساخت این کپچا هستش رو  قرار بدید تا بتونم راهنمایی کنم 

من احتمال میدم از آدرس دهی مسیر عکس باشه در هر صورت تا کد ها نباشه نمیتونم به قطعیت بگم مشکل از کجاست 

در ضمن لطفا کد هاتون رو در بلاک کد قرار بدید.

 

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

28 شهریور 99

0
حذف شده

فایل های داخل پوشه htdocs (xampp) قرار داره و از دامین مجازی استفاده میکنم

ضمن اینکه با ادرس localhost یا khabarche.dv  فرقی نداره در کل فایل captcha.php رو نمیشناسه

ممنون از کمک تون

include 'C:\xampp\htdocs\khabarche.dv\views\sections\header.php';
include 'C:\xampp\htdocs\khabarche.dv\public\captcha.php';

if(isset($_GET['error']) && !empty($_GET['error']))
{
	echo
	"<div class='alert alert-danger' role='alert'>
	!! خطایی رخ داده است ، لطفا مجدد تلاش کنید !!
	</div>";
}
?>
</head>
<body dir="rtl">
  <div class="container-fluid" style="padding:3% 25%">
	<div class="card mt-5">
	   <div class="card-header text-center">
		  <h3>ورود به سایت</h3>
	   </div>
		<div class="card-body">
		<div class="sign-in-htm">
			<form action="/login/loginOne" method="post">
				<div class="form-group">
					<label for="email" class="label"></label>
					<input id="email" name="email" type="email" class="form-control" >
				</div>
					<div class="form-group">
					   <label for="password" class="label"></label>
					   <input id="password" name="password" type="password" class="form-control">
					</div>
					<div class="form-group" style='width:100px;height:100px;'>
						<img src='captcha.php' alt='not found'>
					</div>
					<div class="form-group text-center">
						<input type="submit" class="btn btn-primary w-100" value="ورود">
					</div>
					</form>
				</div>
			</div>
		</div>
	</div>
</body>

<script src='/assets/js/showPassword.js'></script>
<?php include_once  'C:\xampp\htdocs\khabarche.dv\views\sections\header.php' ?>

 

فایل پیوست
public.zip
161.34 KB

سید سروش ساری زاده

توسط

سید سروش ساری زاده

29 شهریور 99

0
حذف شده

دوست عزیز آدرس دهی هات رو چرا اینجوری دادی ؟ بهتر از آدرس دهی های داینامیک استفاده کنید (جهت اطلاع هدر رو یکبار بالا و یکبار پایین فراخوانی کریدن)

برای مثال : 
برای بدست آوردن آدرس captcha به این شکا عمل کن : 
 

include dirname(__DIR__).DIRECTORY_SEPARATOR."public".DIRECTORY_SEPARATOR."captcha.php";

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

به احتمال زیاد حل بشه هر جا آدرس دهی دارید بهتر اینه که بصورت داینامیک آدرس دهی بشن 

داخل فایل bootstarp یک ثبت بسازید و آدرس root پروژه رو داخل اون ثابت قرار بدید و هر کجا که خواستید آدرس دهی کنید از اون ثابت استفاده کنید تا مشکلی برای آردس دهی هاتون پیش نیاد 

 

فایل پیوست

میثم نصرتی

توسط

میثم نصرتی

29 شهریور 99

0
حذف شده

سلام و احترام

لطفا نکات آدرس دهی های ذکر شده توسط آقای نصرتی رو رعایت کنید و نتیجه رو اعلام کنید تا بتونیم کمکتون کنیم.

فایل پیوست

امیر صالحی

توسط

امیر صالحی

29 شهریور 99

0
حذف شده

الان بعد از اینکه صفحه لاگین رو باز میکنم کل صفحه سیاه میشه و فرم نمایش داده نمیشه ، تصویر از مرورگر رو هم ضمیمه کردم . کد های html رو نمیخونه مرورگر و بعد از مشمول کردن فایل کپچا تداخل پیش میاد

کد صفحه لاگین :

<?php
include dirname(__DIR__).DIRECTORY_SEPARATOR."views".DIRECTORY_SEPARATOR."sections" .DIRECTORY_SEPARATOR."header.php";
include dirname(__DIR__).DIRECTORY_SEPARATOR."public".DIRECTORY_SEPARATOR."captcha.php";

if(isset($_GET['error']) && !empty($_GET['error']))
{
	echo
	"<div class='alert alert-danger' role='alert'>
	!! خطایی رخ داده است ، لطفا مجدد تلاش کنید !!
	</div>";
}
?>
</head>
<body dir="rtl">
 <div class="container-fluid" style="padding:3% 25%">
  <div class="card mt-5">
   <div class="card-header text-center">
	<h3>ورود به سایت</h3>
   </div>
   <div class="card-body">
	<div class="sign-in-htm">
	 <form action="/login/loginOne" method="post">
	   <div class="form-group">
		 <label for="email" class="label"></label>
		 <input id="email" name="email" type="email" class="form-control" placeholder="ایمیل">
	   </div>
	   <div class="form-group">
		<label for="password" class="label"></label>
		<input id="password" name="password" type="password" class="form-control">
	   </div>
	   <div class="form-group" style='width:100px;height:100px;'>
		<img src="captcha.php" alt='not found'>
	   </div>
	   <div class="form-group text-center">
		<input type="submit" class="btn btn-primary w-100" value="ورود">
	   </div>
	 </form>
    </div>
   </div>
  </div>
 </div>
</body>

<script src="<?php dirname(__DIR__) ?>/assets/js/showPassword.js"></script>
<?php include dirname(__DIR__).DIRECTORY_SEPARATOR."views".DIRECTORY_SEPARATOR."sections" .DIRECTORY_SEPARATOR."footer.php";?>

کد صفحه captcha : 

$captcha_num = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz';
$captcha_num = substr(str_shuffle($captcha_num), 0, 6);
$_SESSION["code"] = $captcha_num;

$font_size = 30;
$img_width = 70;
$img_height = 40;

header('Content-type: image/jpeg');

$image = imagecreate($img_width, $img_height); // create background image with dimensions
imagecolorallocate($image, 255, 255, 255); // set background color

$text_color = imagecolorallocate($image, 0, 0, 0); // set captcha text color

imagettftext($image, $font_size, 0, 15, 30, $text_color, 'arial.ttf', $captcha_num);
imagejpeg($image);

 

فایل پیوست

سید سروش ساری زاده

توسط

سید سروش ساری زاده

29 شهریور 99

1
حذف شده

دوست عزیز از الگوی زیر استفاده کن، من تست کردم و جواب گرفتم

فرم توی صفحت:

<?php session_start();
include 'captcha.php';
?> 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>کد کپچا</title>
</head>
<body>
    
<?php
    create_image();
    display();
    
    function display()
    {
?>
       <div style="text-align:center;">
            <div style="display:block;margin-bottom:20px;margin-top:20px;">
                <img src="captcha_image.png">
            </div>
            <form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
                <input type="submit" value="refresh captcha">
            </form>
            <form action="#" method="POST"/ >
                <input type="text" name="input"/>
                <input type="hidden" name="flag" value="1"/>
                <input type="submit" value="ارسال" name="submit"/>
            </form>
            
        </div>      
 
<? } ?>

</body>
</html>

 

فایل captcha.php که توش کد کپچا ایجاد میکنه:

<?php
    function  create_image()
    {
        $image = imagecreatetruecolor(200, 50);       
        $background_color = imagecolorallocate($image, 255, 255, 255);  
        imagefilledrectangle($image,0,0,200,50,$background_color); 
 
        $line_color = imagecolorallocate($image, 64,64,64);
        $number_of_lines=rand(3,7);
 
        for($i=0;$i<$number_of_lines;$i++)
        {
            imageline($image,0,rand()%50,250,rand()%50,$line_color);
        }
 
        $pixel = imagecolorallocate($image, 0,0,255);
        for($i=0;$i<500;$i++)
        {
            imagesetpixel($image,rand()%200,rand()%50,$pixel);
        }  
 
        $allowed_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
        $length = strlen($allowed_letters);
        $letter = $allowed_letters[rand(0, $length-1)];
        $word='';
        $text_color = imagecolorallocate($image, 0,0,0);
        $cap_length=6;// No. of character in image
        for ($i = 0; $i< $cap_length;$i++)
        {
            $letter = $allowed_letters[rand(0, $length-1)];
            imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);
            $word.=$letter;
        }
 
        $_SESSION['captcha_string'] = $word;
 
        imagepng($image, "captcha_image.png");
    }
?>

 

باز اگه مشکلی بود درمیون بزار

فایل پیوست

امیر صالحی

توسط

امیر صالحی

30 شهریور 99

0
حذف شده

با تشکر از کمک تون ، مشکل حل شد 

فکر میکنم موضوع این بود که کد تولید کد کپچا رو تو function قرار دادیم و حل شد

اگر توضیحاتی دارین ، ممنون میشم ذکر کنید . 

من کد شما رو به شکل زیر استفاده کردم و جواب گرفتم

<?php
include dirname(__DIR__).DIRECTORY_SEPARATOR."views".DIRECTORY_SEPARATOR."sections" .DIRECTORY_SEPARATOR."header.php";
include dirname(__DIR__).DIRECTORY_SEPARATOR."views".DIRECTORY_SEPARATOR."captcha.php";

if(isset($_GET['error']) && !empty($_GET['error']))
{
	echo
	"<div class='alert alert-danger' role='alert'>
	!! خطایی رخ داده است ، لطفا مجدد تلاش کنید !!
	</div>";
}

create_image();

?>
</head>
<body dir="rtl">
 <div class="container-fluid" style="padding:3% 25%">
  <div class="card mt-5">
   <div class="card-header text-center">
	<h3>ورود به سایت</h3>
	 </div>
	 <div class="card-body">
	 <div class="sign-in-htm">
	   <form action="/login/loginOne" method="post">
	   <div class="form-group">
		 <label for="email" class="label"></label>
		 <input id="email" name="email" type="email" class="form-control">
	   </div>
	   <div class="form-group">
		 <label for="password" class="label"></label>
		 <input id="password" name="password" type="password" class="form-control">
	   </div>
		 <div class="form-group" style='width:100px;height:100px;'>
	     <img src='captcha_image.png'>
	   </div>
	   <div class="form-group text-center">
	     <input type="submit" class="btn btn-primary w-100" value="ورود">
	   </div>
	  </form>
	 </div>
    </div>
   </div>
  </div>
</body>

<script src="<?php dirname(__DIR__) ?>/assets/js/showPassword.js"></script>
<?php include dirname(__DIR__).DIRECTORY_SEPARATOR."views".DIRECTORY_SEPARATOR."sections" .DIRECTORY_SEPARATOR."footer.php";?>

 

فایل پیوست

سید سروش ساری زاده

توسط

سید سروش ساری زاده

30 شهریور 99

حذف شده
خب خیلی هم عالی ، خوش حالم که مشکلت حل شد. نکته‌‌ای نیست فقط اگه سوالی داشتی دوباره بپرس ما در خدمتیم
امیر صالحی

30 شهریور 99