ทำ captcha ไม่ได้ครับ...

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ทำ captcha ไม่ได้ครับ...

ทำ captcha ไม่ได้ครับ...
register1.php 
<?php  
session_start();  
?> 
<head>
<link href="captcha.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>:: Register ::</h1>
<form method="post" action="registerr.php">
  <table width="320" border="0" cellpadding="2" cellspacing="5">
    <tr>
      <td width="90" height="23">Username :</td>
      <td width="194"><input type="text" name="user_reg" />
      <span style="color: #F63;">*</span></td>
    </tr>
    <tr>
      <td width="90" height="23">Password :</td>
      <td><input type="password" name="pass_reg" />
      <span style="color: #F63;">*</span></td>
    </tr>
    <tr>
      <td height="120" colspan="2" style="text-align: center">
      <?php
$_SESSION['num_to_check'][0]=rand(1,9);
$_SESSION['num_to_check'][1]=rand(1,9);
?>
  <div id="verify_math">
  <span class="digital" style="background-position:<?=($_SESSION['num_to_check'][0]*-30)?>px 0px;"></span>
  <span>+</span>
  <span class="digital" style="background-position:<?=($_SESSION['num_to_check'][1]*-30)?>px 0px;"></span>
  <span>=</span>
  <span>
  <input name="i_verify" type="text" id="i_verify" maxlength="2" />
</span>
</div>
<br />
<br /></tr>
    <tr>
      <td align="right"><input type="submit" value="สมัคร" /></td>
      <td align="left"><input type="reset" value="รีเซ็ต" /></td>
    </tr>
  </table>
</form>
</body>
</html>
registerr.php
<?
$user_reg=$_POST[user_reg];
$pass_reg=$_POST[pass_reg];
$sex_reg=$_POST[sex_reg];
$email_reg=$_POST[email_reg];
$date_reg=$_POST[date("Y-m-d")];

if($user_reg=='' or $pass_reg==''){
	echo'<h3>กรอกข้อมูลไม่ครบ</h3>'; exit();
}
include 'connect.php';
$sql="SELECT * FROM tb_member where username='$user_reg'";
$result=mysql_db_query($dbname,$sql);
$num=mysql_num_rows($result);
if($num>0){
	echo'<h3>Username นี้มีผู้ใช้แล้ว</h3>'; exit();
}
$sql="INSERT INTO tb_member
values('','$user_reg','$pass_reg','$sex_reg','$email_reg','".date("Y-m-d")."')";
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
$result=mysql_db_query($dbname,$sql);
if($result){
	echo'<h3>บันทึกข้อมูลเรียบร้อยแล้ว</h3>';
	echo"<a href='index.html'>คลิกเพื่อเข้าสู่ระบบสมาชิก</a>";
}else{
	echo'<h3>สมัคสมาชิกไม่สำเร็จ</h3>';
}
mysql_close();
?>
chksession.php
<?
session_start();
$sess_userid=$_SESSION[sess_userid];
$sese_username=$_SESSION[sess_username];
if($_POST['button2']){
	if(isset($_POST['i_verify']) && $_POST['i_verify']==@array_sum($_SESSION['num_to_check']) && $_POST['i_verify']>0 && trim($_POST['i_verify'])!=""){
		echo "<span style="color:green;">Right</span>";
		$_SESSION['num_to_check'][0]=rand(1,9);
		$_SESSION['num_to_check'][1]=rand(1,9);
		exit;
	}else{
		echo "<span style="color:red;">Wrong</span>";
		$_SESSION['num_to_check'][0]=rand(1,9);
		$_SESSION['num_to_check'][1]=rand(1,9);		
		exit;	
	}
}
if ($sess_userid<>session_id() or  $sess_username==''){
	header('Location: index.html'); exit();
}
?>

 

ผมพิมพ์คำตอบมั่วๆ  มันก็ยังให้ผ่านครับ

ผมเลยไม่แน่ใจว่า ผมอาจจะวางโค้ดผิดที่รึป่าว 

ไม่แน่ใจว่าต้องวางที่ registerr.php หรือ chksession.php กันแน่

รบกวนด้วยครับ  ติดอยู่อันเดียวนี่แหละครับ  captcha  ทำไม่ได้สักที



Norranun 19-08-2010 23:18:28

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

ไม่รู้ว่านำไปใช้แบบไหน แต่เท่าที่ดู น่าจะนำไปใช้ไม่ถูกต้อง

https://www.ninenik.com/ป้องกัน_spam_ด้วย_captcha_คำถาม_ทางคณิตศาสตร์_อย่างง่าย-288.html

PHP Code หน้าตรวจสอบ  จะต้องอยู่ในไฟล์ register.php หรือหน้าที่รับข้อมูลตามแต่กรณี เช่น ไฟล์ตรวจสอบล็อกอิน ไฟล์โพสกระทู้ อื่นๆ เป็นตั้น

ตัวอย่างถ้าสมัครสมาชิก register.php รูปแบบโค้ดจะประมาณนี้
 

<?php
session_start();
if($_POST['button2']){
	if(isset($_POST['i_verify']) && $_POST['i_verify']==@array_sum($_SESSION['num_to_check']) && $_POST['i_verify']>0 && trim($_POST['i_verify'])!=""){
		echo "<span style=\"color:green;\">Right</span>";

		$user_reg=$_POST[user_reg];
		$pass_reg=$_POST[pass_reg];
		$sex_reg=$_POST[sex_reg];
		$email_reg=$_POST[email_reg];
		$date_reg=$_POST[date("Y-m-d")];
		
		if($user_reg=='' or $pass_reg==''){
		echo'<h3>กรอกข้อมูลไม่ครบ</h3>'; exit();
		}
		include 'connect.php';
		$sql="SELECT * FROM tb_member where username='$user_reg'";
		$result=mysql_db_query($dbname,$sql);
		$num=mysql_num_rows($result);
		if($num>0){
		echo'<h3>Username นี้มีผู้ใช้แล้ว</h3>'; exit();
		}
		$sql="INSERT INTO tb_member
		values('','$user_reg','$pass_reg','$sex_reg','$email_reg','".date("Y-m-d")."')";
		mysql_query("SET character_set_results=utf8");
		mysql_query("SET character_set_client=utf8");
		mysql_query("SET character_set_connection=utf8");
		$result=mysql_db_query($dbname,$sql);
		if($result){
		echo'<h3>บันทึกข้อมูลเรียบร้อยแล้ว</h3>';
		echo"<a href='index.html'>คลิกเพื่อเข้าสู่ระบบสมาชิก</a>";
		}else{
		echo'<h3>สมัคสมาชิกไม่สำเร็จ</h3>';
		}
		mysql_close();		
		
		$_SESSION['num_to_check'][0]=rand(1,9);
		$_SESSION['num_to_check'][1]=rand(1,9);
		exit;
	}else{
		echo "<span style=\"color:red;\">Wrong</span>";
		$_SESSION['num_to_check'][0]=rand(1,9);
		$_SESSION['num_to_check'][1]=rand(1,9);		
		exit;	
	}
}
?>

แต่ถ้าต้องการประยุกต์ไว้ใช้ในหลายๆ หน้า ก็ต้องปรับเพิ่ม ดังนี้ เช่นตั้งเป็นชื่อไฟล์ valid_data.php
 

<?php
if(isset($_POST['i_verify']) && $_POST['i_verify']==@array_sum($_SESSION['num_to_check']) && $_POST['i_verify']>0 && trim($_POST['i_verify'])!=""){
	$valid_check=1;
	$_SESSION['num_to_check'][0]=rand(1,9);
	$_SESSION['num_to_check'][1]=rand(1,9);
}else{
	$valid_check=0;
	$_SESSION['num_to_check'][0]=rand(1,9);
	$_SESSION['num_to_check'][1]=rand(1,9);		
}
?>

พอหน้าตรวจสอบก็จะใช้เป็น ดังนี้
 

<?php
session_start();
if($_POST['button2']){
	include("valid_data.php");
	if($valid_check==1){
		// แทรกโค้ดกรณีผ่านเงื่อนไข captcha
	}else{
		// แทรกโค้ดกรณีไม่ผ่านเงื่อนไข captcha
	}
}
?>

 



ninenik 20-08-2010
 ความคิดเห็นที่ 2

โอวมายก้อด  ทำได้แล้วครับ  หลังจากงมอยู่นาน

ขอบคุณมากครับ  ninenik



norranun 20-08-2010 01:09






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ