Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > Captcha ไม่รีเฟรชบนเซิฟเวอร์ แต่ในเครื่องใช้งานได้ปกติ



 

Captcha ไม่รีเฟรชบนเซิฟเวอร์ แต่ในเครื่องใช้งานได้ปกติ

 



Topic : 075082



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์




ปัญหาคือ captcha สามารถใช้งานได้ปกติเมื่ออยู่ localhost ในเครื่องของเรา แต่พอเรานำขึ้นไปบนเซิฟเวอร์เพื่อใช้งานจริงกับมีปัญหา

ดังนี้
เมื่อเราคลิกไปหน้าที่มี captcha อยู่ แล้วกรอกข้อมูลเลย จะไม่มีปัญหา สามารถทำงานได้ปกติ
แต่เมื่อเราคลิกไปหน้าที่มี captcha อยู่ แล้วไม่ได้กรอกข้อมูล คลิกไปลิงค์อื่นๆ แล้วกลับมาลิงค์ที่มี captcha อยู่นั้น รูป captcha นั้นจะไม่เปลี่ยนเป็นรูปอื่น แต่เมื่อเรากรอกข้อมูลไป ปรากฎว่าา โค๊ดไม่ถูกต้อง

แต่เมื่อเราทำการกดปุ่ม Refresh บน browser รูป captcha ถึงจะเปลี่ยน ไม่เข้าใจ งง จิงๆๆ รบกวนช่วยทีนะค่ะ

(คิดว่า รูปไม่เปลี่ยน แต่โค๊ด random มีการทำงาน ทำให้เช็คไม่ตรงกันอ่ะค่ะ)


โค๊ด captcha ค่ะ

Code (PHP)
function createRandomPassword() { // ฟังก์ชั่นสำหรับสุ่มรหัสลับ<br>
	srand ( date("s") );
	$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // ตัวแปรที่จะทำการสุ่ม จะเป็นตัวเลข ตัวเล็ก ตัวใหญ่ หรือผสมกันไปก็ใส่เพิ่มเอาเอง<br>
	$ret_str = "";
	$num = strlen($chars);
		for($i=0; $i < 6; $i++) {
			$ret_str.= $chars[rand()%$num]." ";// สุ่มเอามาสัก 6 ตัว 0 ถึง 5 ก็ 6 นั่นหล่ะน่าาา<br>
			}
	return $ret_str;
	}
	
	$text = createRandomPassword(); // เรียกใช้หังก์ชั้นสุ่มรหัสลับ แล้วมาเก็บค่าไว้ในตัวแปร $text
	echo '<input name="code_chk" id="code_chk" value="'.ereg_replace(" ","",$text).'"="" type="hidden">'; // ตรงนี้สำหรับเก็บค่าตัวแปรที่ได้เพื่อส่งไปทำการตรวจเช็คกับ รหัสลับ ที่ผู้ใช้กรอก ว่าถูกต้องตรงกันหรือไม่<br>
	$font_size = 13;
	$height = 20;
	$width = 100;
	
// ข้างล่างนี้เป็นการสร้างภาพและเอารหัสลับที่ได้ยัดใส่เข้าไปอยู่ในภาพที่สร้าง สามารถปรับเปลี่ยนได้นะครับ<br>
	$im = ImageCreate($width, $height);
	$grey = ImageColorAllocate($im, 230, 230, 230);
	$black = ImageColorAllocate($im, 0, 0, 0);
	
	$text_bbox = ImageTTFBBox($font_size, 0, "ALGER.TTF", $text); // อย่าลืมก๊อปไฟล์ฟอร์นมาไว้ในโฟลเดอร์ด้วยนะ ไม่งั้นจะไม่แสดงผล<br>
	$image_centerx = $width / 2;
	$image_centery = $height / 2;
	$text_x = $image_centerx - round(($text_bbox[4]/2));
	$text_y = $image_centery + 5;
	 //$text_y = $image_centery;<br>
	
	 ImageTTFText($im, $font_size, 0, $text_x, $text_y, $black, "ALGER.TTF", $text);
	ImagePng($im,"image-code.png");
	ImageDestroy ($im);
	echo "<img src='image-code.png'>"; // และสุดท้ายก็แสดงผลรูปภาพออกมา<br>
	?>
	
	<input name="code" type="text" id="code" size="10">




------------------------------------------------------------------------------
อันนี้ เอาไว้เช็คเมื่อกดปุ่ม submit

Code (PHP)
<script language="javascript">
function chkblank(){
var Email=document.forma.mail;
var format_mail =/^([a-zA-Z0-9\_\-\.]{3,})+@([a-zA-Z0-9\-]{3,})+.+([a-zA-Z\-]{3,}|com|net|gov|mil|org|edu|int)$/; 
// รูปแบบอีเมลกำหนดที่บรรทัดนี้ลองดูเองนะว่ารูปแบบที่ให้มาเป็นยังไง ถ้าไม่ชอบการเช็ครูปแบบอีเมลให้แก้ บรรทัดนี้ ^ 

		if(document.forma.subject.value=="") {
			alert("กรุณากรอกหัวเรื่อง")
			return false
		}
				if(document.forma.txt.value=="") {
			alert("กรุณากรอกข้อความที่คุณต้องการส่งถึงเรา")
			return false
		}
				if(document.forma.by.value=="") {
			alert("กรุณากรอกชื่อของคุณ") 
			return false
		}
		


		if(document.forma.mail.value==""){
			alert("กรุณากรอกอีเมล์ของคุณ")
			return false;
		}
		else if (!format_mail.test(Email.value)) { 
		alert("รูปแแบบ Email ไม่ถูกต้อง");
		Email.focus()
		return false;
		}		
	
		if(document.getElementById('code').value==""){ // ตรงนี้เช็คว่าได้กรอกรหัสหรือยัง
	 alert("กรุณาระบุ code ด้วยครับ");
	 document.getElementById('code').focus();
	 return false;
	}
	 	if(document.getElementById('code').value!=document.getElementById('code_chk').value){ // ถ้ากรอกแล้ว รหัสถูกต้องไหม>
	 alert("Code ไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง"); // ถ้าไม่ถูกต้องก็แจ้งให้เขาทราบ
	 document.getElementById('code').value=""; // ล้างค่าในเท็กซ์ออกเพื่อพร้อมสำหรับการกรอกรหัสลับใหม่
	document.getElementById('code').focus();
	 return false;
	}
		
		
 document.forma.submit()
}

</script>




Tag : PHP, JavaScript, Ajax, jQuery









ประวัติการแก้ไข
2012-03-06 16:30:02
2012-03-06 16:30:32
2012-03-06 16:31:12
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-03-06 15:51:54 By : wilaiwan_a View : 2063 Reply : 5
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ลองใส่ตัวนี้ดูครับ

Code (PHP)
<?php header("Cache-Control: no-cache, must-revalidate");







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-07 07:18:27 By : webmaster
 


 

No. 2



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


นำไปใส่แล้วมันขึัน Warrning แบบนี้อ่ะค่ะ ส่วนการทำงานก็ัยังมีปัญหาเหมือนเดิมค่ะ

Warning: Cannot modify header information - headers already sent by (output started at /home/itlandthai/domains/thammatan.com/public_html/gestbook_addNew.php:10) in /home/itlandthai/domains/thammatan.com/public_html/gestbook_new.php on line 115
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-08 08:52:11 By : wilaiwan_a
 

 

No. 3



โพสกระทู้ ( 144 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ลองใส่ <? ob_start() ?> ไว้บรรทัดแรกสุดของหน้าดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-08 09:37:41 By : 13eachz
 


 

No. 4



โพสกระทู้ ( 437 )
บทความ ( 3 )



สถานะออฟไลน์


ลองเอาแยกไฟล์ดูครับ

ไฟล์ captcha.php
Code (PHP)
function createRandomPassword() { // ฟังก์ชั่นสำหรับสุ่มรหัสลับ<br>
	srand ( date("s") );
	$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // ตัวแปรที่จะทำการสุ่ม จะเป็นตัวเลข ตัวเล็ก ตัวใหญ่ หรือผสมกันไปก็ใส่เพิ่มเอาเอง<br>
	$ret_str = "";
	$num = strlen($chars);
		for($i=0; $i < 6; $i++) {
			$ret_str.= $chars[rand()%$num]." ";// สุ่มเอามาสัก 6 ตัว 0 ถึง 5 ก็ 6 นั่นหล่ะน่าาา<br>
			}
	return $ret_str;
	}
	
	    $text = createRandomPassword(); // เรียกใช้หังก์ชั้นสุ่มรหัสลับ แล้วมาเก็บค่าไว้ในตัวแปร $text
	$font_size = 13;
	$height = 20;
	$width = 100;
	
// ข้างล่างนี้เป็นการสร้างภาพและเอารหัสลับที่ได้ยัดใส่เข้าไปอยู่ในภาพที่สร้าง สามารถปรับเปลี่ยนได้นะครับ<br>
	$im = ImageCreate($width, $height);
	$grey = ImageColorAllocate($im, 230, 230, 230);
	$black = ImageColorAllocate($im, 0, 0, 0);
	
	$text_bbox = ImageTTFBBox($font_size, 0, "ALGER.TTF", $text); // อย่าลืมก๊อปไฟล์ฟอร์นมาไว้ในโฟลเดอร์ด้วยนะ ไม่งั้นจะไม่แสดงผล<br>
	$image_centerx = $width / 2;
	$image_centery = $height / 2;
	$text_x = $image_centerx - round(($text_bbox[4]/2));
	$text_y = $image_centery + 5;
	 //$text_y = $image_centery;<br>
	
	 ImageTTFText($im, $font_size, 0, $text_x, $text_y, $black, "ALGER.TTF", $text);
	ImagePng($im,"image-code.png");
	ImageDestroy ($im);

	?>	


เวลาใช้ก็เรียกแบบนี้

หน้าที่จะใช้
Code (PHP)
	echo '<img src="captcha.php?'.rand(0,999999999).'">';



เช็ค captcha วิธีนี้ไม่ปลอดภัยครับ เอาค่าใส่ hidden input แบบนี้ ควรใช้แบบ session ดีกว่า

ในไฟล์ captcha.php ใส่ session_start() ไว้บนสุด แล้วที่
Code (PHP)
 $text = createRandomPassword(); // เรียกใช้หังก์ชั้นสุ่มรหัสลับ แล้วมาเก็บค่าไว้ในตัวแปร $text
 $_SESSION['captch'] = $text; // เอารหัสใส่ไว้ใน session


เวลาเช็คก็
Code (PHP)
<?php
session_start();

if(!$_SESSION['captcha'] || !$_SESSION['captcha']==$_POST['code'])
{
   die('รหัสไม่ตรงกัน'); //ถ้าไม่มี session ที่เก็บค่า captcha  หรือ  ค่าใน session ไม่ตรงกับค่าที่กรอกมา 
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-08 10:13:24 By : randOmizE
 


 

No. 5



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์


ยังไม่ได้อยู่ดีอ่ะค่ะ
ภาพมันไม่เปลี่ยนตอนที่เรากดลิงค์อื่นไปมา แล้วกลับมาที่เดิม ภาพมันก็เหมือนเดิม ไม่รีเฟรช

แต่ในเครื่องใช้ได้ปกติ ไม่เข้าใจว่าต้องแก้ไขอะไรที่เซิฟเวอร์หรือป่าวค่ะ งงงมากมาย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-08 13:42:49 By : wilaiwan_a
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Captcha ไม่รีเฟรชบนเซิฟเวอร์ แต่ในเครื่องใช้งานได้ปกติ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่