ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingถ้าเรื่่องการเขียน Captcha [Php ให้ติดต่อกับแบบฟ
หน้า: [1] 2  ทั้งหมด   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ถ้าเรื่่องการเขียน Captcha [Php ให้ติดต่อกับแบบฟ  (อ่าน 3984 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« เมื่อ: 26 เมษายน 2011, 19:48:26 »

ผมเขียนไฟล์ captcha ขึ้นมา 1 ไฟล์ ชื่อ captcha.php
แล้วให้ส่งตัวเลขที่ Random จาก Chaptcha มาที่แบบฟอร์มสมัครสมาชิก


<label>รหัสลับ :</label>
      <img src="captcha.php" /><br/> <<<< ตรงนี้
      <input name="captcha" type="text"><br/> <<<< ตรงนี้เอาไว้กรอกรหัสจาก captcha
      <input type="hidden" name="code_hidden">
      <input name="submit" type="submit" value="ยืนยัน">
      <input type="reset" value="ล้างข้อมูล">

แล้วใ้ห้มันส่งข้อมูลต่อไปที่ ไฟล์ addregister.php โดยตรวจสอบว่ากรอก captcha ถูกหรือผิด
โค้ด addregister.php
<?
session_start();
if(strcmp($_POST['captcha'],$_POST['code_hidden'])==0){
   echo "กรอกรหัสถูกต้อง";
}else{
   echo "รหัสลับไม่ถูกต้อง";
}
?>


พอกด ยืนยันจากแบบฟอร์ม มันแสดงออกมาว่า รหัสลับไม่ถูกต้องในเมื่อผมกรอก รหัสจาก captcha ถูก อยากทราบว่าโค้ดมันผิดตรงไฟล์ไหนครับ รบกวนช่วยดูทีครับ ขอบคุณครับ  wanwan017


« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 20:18:02 โดย lucationjj » บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
smapan
Global Moderator
เจ้าพ่อบอร์ดเสียว
*****

พลังน้ำใจ: 643
ออฟไลน์ ออฟไลน์

กระทู้: 8,269



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 26 เมษายน 2011, 20:02:02 »

ลองตัวหนังสือในช่องใส่รหัสลับว่า true สิ  wanwan044
บันทึกการเข้า

จูมล่าโฮส สยามโฮสเว็บ modty.com
รวมที่พัก เช่ารายวัน ที่พักเช่ารายเดือนมากที่สุดแจ่มจริง
***Tel 083-757-1515 ติดปัญหา Joomla ตรงไหนรับปรึกษาฟรี โทรมาเถอะครับ ถ้าตอบได้ช่วยแน่นอน ไม่มีกั้ก. ***
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« ตอบ #2 เมื่อ: 26 เมษายน 2011, 20:17:34 »

ลองตัวหนังสือในช่องใส่รหัสลับว่า true สิ  wanwan044
Lips Sealed ผิดที่ท่านว่าจริงๆด้วย

ผมเอาออกแล้ว เลยลองใหม่ value="true" ออกแล้ว
แต่เหมือนเดิมครับ
บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #3 เมื่อ: 26 เมษายน 2011, 20:19:43 »

ลอง echo สองตัวนี้ออกมาดูก่อนครับ ว่ามันตรงกันมั้ย

$_POST['captcha']กะ $_POST['code_hidden']
บันทึกการเข้า
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« ตอบ #4 เมื่อ: 26 เมษายน 2011, 20:25:32 »

ลอง echo สองตัวนี้ออกมาดูก่อนครับ ว่ามันตรงกันมั้ย

$_POST['captcha']กะ $_POST['code_hidden']

มันขึ้นแบบนี้ครับ Login Success งง  Tongue
บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #5 เมื่อ: 26 เมษายน 2011, 20:32:20 »

ลอง echo สองตัวนี้ออกมาดูก่อนครับ ว่ามันตรงกันมั้ย

$_POST['captcha']กะ $_POST['code_hidden']

มันขึ้นแบบนี้ครับ Login Success งง  Tongue

แสดงว่ามันไม่ตรงกัน จีงบอกว่ารหัสลับไม่ถูก
« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 20:36:13 โดย marknary » บันทึกการเข้า
navico
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 108
ออฟไลน์ ออฟไลน์

กระทู้: 2,310



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 26 เมษายน 2011, 20:32:39 »

จากโค้ด ผมไม่เห็นว่า code_hidden จะมีค่าอะไรเลยอ่ะครับ
captcha.php เขียนโค้ดเก็บค่า สตริงของ captcha ไว้ด้วยอะไรครับ เท่าที่เคยๆเห็นจะเก็บใส่ session แล้วเอาค่าที่ส่งไปเทียบกับ session ที่เก็บไว้
แต่ส่งผ่านฟอร์มไปทั้งสองตัวนี่ไม่ค่อยเห็นนะครับ
บันทึกการเข้า
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #7 เมื่อ: 26 เมษายน 2011, 20:40:05 »

ลองเอา code ที่ผมเคยเขียนเล่นๆไปศึกษาดูครับ

อันหน้าส่ง add.php
อ้างถึง
<?php         
                  
                  function randomToken($len)
                  {
                        srand( date("s") );
                        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
                        $chars.= "1234567890"; // กำหนดอักขษะที่จะนำมา random แก้ได้นะ
                        $ret_str = "";
                        $num = strlen($chars);
                        for($i=0; $i < $len; $i++)
                           {
                              $ret_str.= $chars[rand()%$num]; // ใช้ฟังชั่น rand() เข้ามาช่วยในการทำงาน
                           }
                           return $ret_str;
                  }
                  $code = randomToken(5);
                  echo '<INPUT TYPE="hidden" NAME="verify" value="'.$code.'">';
                  echo '<center><FORM method="post" action="register.php">';
                  echo '<TABLE width="350px" bgcolor="#FFCC99">                  
                     <TR>
                        <TD width="40%" bgcolor="#FFFFCC"><font size="2px">code:<font color="red">'.$code.'</font><INPUT TYPE="hidden" NAME="verify" value="'.$code.'"></TD>
                        <TD width="60%" bgcolor="#FFFF99"><INPUT TYPE="text" name="code"></TD>
                     </TR>
                     <TR>
                        <TD width="40%" bgcolor="#FFFFCC"><font size="2px">submit</TD>
                        <TD width="60%" bgcolor="#FFFF99"><INPUT TYPE="submit"><INPUT TYPE="reset"></TD>
                     </TR>
                     </TABLE>';
                  echo '</FORM></center>';   
         
   ?>

อันนี้ตัวรับ regis.php
อ้างถึง
<?php
session_start();
ob_start();

                  $code=$_POST["code"];
                  $ver=$_POST["verify"];
                  if($code==$ver)
                                                  {
echo 'yes';
}
else{
echo 'no';
}
?>

« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 20:43:54 โดย marknary » บันทึกการเข้า
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« ตอบ #8 เมื่อ: 26 เมษายน 2011, 20:58:30 »

ถ้ามีโค้ด captcha.php อยู่แล้วจะเรียกมายังไงครับ
ต้องเพิ่มโค้ดอะไร ไปในฟอร์ม
« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 20:59:19 โดย lucationjj » บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #9 เมื่อ: 26 เมษายน 2011, 21:07:54 »

ถ้ามีโค้ด captcha.php อยู่แล้วจะเรียกมายังไงครับ
ต้องเพิ่มโค้ดอะไร ไปในฟอร์ม

ไม่รู้สิครับ คุณต้องเอา code มาให้ดูก่อนถึงจะบอกได้ครับ เพราะไม่รู้ว่าใน code มี function อะไรบ้าง
บันทึกการเข้า
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« ตอบ #10 เมื่อ: 26 เมษายน 2011, 21:11:16 »

ถ้ามีโค้ด captcha.php อยู่แล้วจะเรียกมายังไงครับ
ต้องเพิ่มโค้ดอะไร ไปในฟอร์ม

ไม่รู้สิครับ คุณต้องเอา code มาให้ดูก่อนถึงจะบอกได้ครับ เพราะไม่รู้ว่าใน code มี function อะไรบ้าง
Captcha.php
โค๊ด:
<?php
session_start
();
header("Content-type: image/png");
$myseed rand(10000000,99999999);
$string rand(10000000,99999999);
$seedar str_split($myseed,4);
$_SESSION['key'] = hash('sha256',$seedar[0].$string.$seedar[1]);
$_SESSION['seed'] = $myseed;
$simage imagecreatetruecolor(79,22);
$fcolor imagecolorallocate($simage,180,10,10);
imagestring($simage,5,4,3,$string,$fcolor);
imagepng($simage);
imagedestroy($simage);
?>

โค้ดครับ
บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
hero-nana
ก๊วนเสียว
*

พลังน้ำใจ: 52
ออฟไลน์ ออฟไลน์

กระทู้: 207



ดูรายละเอียด
« ตอบ #11 เมื่อ: 26 เมษายน 2011, 21:25:18 »

โค๊ด:
<?php
session_start
();

$RandomStr md5(microtime());// md5 to generate the random string

$ResultStr substr($RandomStr,0,5);//trim 5 digit 

$NewImage =imagecreatefromjpeg("captcha.jpg");//image create by existing image and as back ground 

$LineColor imagecolorallocate($NewImage,51,182,240);//line rgb(175, 207, 228)
$TextColor imagecolorallocate($NewImage2137833);//text color

imageline($NewImage,1,1,40,40,$LineColor);//create line 1 on image 
imageline($NewImage,1,100,60,0,$LineColor);//create line 2 on image 
imageline($NewImage,1,50,50,0,$LineColor);//create line 3 on image 
imageline($NewImage,0,20,100,15,$LineColor);//create line 5 on image 

imagestring($NewImage52010$ResultStr$TextColor);// Draw a random string horizontally 

$_SESSION['1k2j48djh'] = md5($ResultStr);// carry the data through session

header("Content-type: image/jpeg");// out out the image 

imagejpeg($NewImage);//Output image to browser 

?>


code ของ wordpress plugin register plus คับ เผือได้ไอเดีย
เวลาใช้ก็
โค๊ด:
$number = md5($_POST['captcha']);
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
unset($_SESSION['1k2j48djh']);
}
« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 21:31:51 โดย hero-nana » บันทึกการเข้า

รับเขียนโปรแกรม magento module, แก้ไข theme หรืออื่นๆ สนใจ pm มาครับ
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #12 เมื่อ: 26 เมษายน 2011, 21:25:56 »

ถ้ามีโค้ด captcha.php อยู่แล้วจะเรียกมายังไงครับ
ต้องเพิ่มโค้ดอะไร ไปในฟอร์ม

ไม่รู้สิครับ คุณต้องเอา code มาให้ดูก่อนถึงจะบอกได้ครับ เพราะไม่รู้ว่าใน code มี function อะไรบ้าง
Captcha.php
โค๊ด:
<?php
session_start
();
header("Content-type: image/png");
$myseed rand(10000000,99999999);
$string rand(10000000,99999999);
$seedar str_split($myseed,4);
$_SESSION['key'] = hash('sha256',$seedar[0].$string.$seedar[1]);
$_SESSION['seed'] = $myseed;
$simage imagecreatetruecolor(79,22);
$fcolor imagecolorallocate($simage,180,10,10);
imagestring($simage,5,4,3,$string,$fcolor);
imagepng($simage);
imagedestroy($simage);
?>
โค้ดครับ
แหมะอ่าน code แล้วงงๆว่าจะเอาอะไรเทียบดี ถ้าเอาง่ายไม่เข้ารหัสก็ ใช้ $string เอาละกัน
จาก
อ้างถึง
<label>รหัสลับ :</label>
      <img src="captcha.php" /><br/> <<<< ตรงนี้
      <input name="captcha" type="text"><br/> <<<< ตรงนี้เอาไว้กรอกรหัสจาก captcha
      <input type="hidden" name="code_hidden">
      <input name="submit" type="submit" value="ยืนยัน">
      <input type="reset" value="ล้างข้อมูล">

แก้เป็น
อ้างถึง
echo '<label>รหัสลับ :</label>
      <img src="captcha.php" /><br/> <<<< ตรงนี้
      <input name="captcha" type="text"><br/> <<<< ตรงนี้เอาไว้กรอกรหัสจาก captcha
      <input type="hidden" name="code_hidden" value="$string">
      <input name="submit" type="submit" value="ยืนยัน">
      <input type="reset" value="ล้างข้อมูล">';


« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 21:28:09 โดย marknary » บันทึกการเข้า
hero-nana
ก๊วนเสียว
*

พลังน้ำใจ: 52
ออฟไลน์ ออฟไลน์

กระทู้: 207



ดูรายละเอียด
« ตอบ #13 เมื่อ: 26 เมษายน 2011, 21:32:05 »

ถ้ามีโค้ด captcha.php อยู่แล้วจะเรียกมายังไงครับ
ต้องเพิ่มโค้ดอะไร ไปในฟอร์ม

ไม่รู้สิครับ คุณต้องเอา code มาให้ดูก่อนถึงจะบอกได้ครับ เพราะไม่รู้ว่าใน code มี function อะไรบ้าง
Captcha.php
โค๊ด:
<?php
session_start
();
header("Content-type: image/png");
$myseed rand(10000000,99999999);
$string rand(10000000,99999999);
$seedar str_split($myseed,4);
$_SESSION['key'] = hash('sha256',$seedar[0].$string.$seedar[1]);
$_SESSION['seed'] = $myseed;
$simage imagecreatetruecolor(79,22);
$fcolor imagecolorallocate($simage,180,10,10);
imagestring($simage,5,4,3,$string,$fcolor);
imagepng($simage);
imagedestroy($simage);
?>
โค้ดครับ
แหมะอ่าน code แล้วงงๆว่าจะเอาอะไรเทียบดี ถ้าเอาง่ายไม่เข้ารหัสก็ ใช้ $string เอาละกัน
จาก
อ้างถึง
<label>รหัสลับ :</label>
      <img src="captcha.php" /><br/> <<<< ตรงนี้
      <input name="captcha" type="text"><br/> <<<< ตรงนี้เอาไว้กรอกรหัสจาก captcha
      <input type="hidden" name="code_hidden">
      <input name="submit" type="submit" value="ยืนยัน">
      <input type="reset" value="ล้างข้อมูล">

แก้เป็น
อ้างถึง
echo '<label>รหัสลับ :</label>
      <img src="captcha.php" /><br/> <<<< ตรงนี้
      <input name="captcha" type="text"><br/> <<<< ตรงนี้เอาไว้กรอกรหัสจาก captcha
      <input type="hidden" name="code_hidden" value="$string">
      <input name="submit" type="submit" value="ยืนยัน">
      <input type="reset" value="ล้างข้อมูล">';



ถ้าแก้โค๊ตของคุณคงประมาณนี้

โค๊ด:
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['verify'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
}
บันทึกการเข้า

รับเขียนโปรแกรม magento module, แก้ไข theme หรืออื่นๆ สนใจ pm มาครับ
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #14 เมื่อ: 26 เมษายน 2011, 21:34:53 »

เห็นใจมือใหม่ wanwan019
« แก้ไขครั้งสุดท้าย: 26 เมษายน 2011, 21:36:32 โดย marknary » บันทึกการเข้า
marknary
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 273
ออฟไลน์ ออฟไลน์

กระทู้: 1,134



ดูรายละเอียด
« ตอบ #15 เมื่อ: 26 เมษายน 2011, 21:36:06 »

สรุป อันนี้เลยครับ ของคุณข้างบน คงใช้ได้
โค๊ด:
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['verify'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
}
บันทึกการเข้า
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« ตอบ #16 เมื่อ: 26 เมษายน 2011, 21:44:19 »

สรุป อันนี้เลยครับ ของคุณข้างบน คงใช้ได้
โค๊ด:
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['verify'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
}

ผมเอาไปใส่ใน ไฟล์ addregister.php
แต่มันขึ้นแบบนี้ครับ ERROR: Image Validation does not match.
กรอกถูกก็ขึ้น
  Tongue
บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
hero-nana
ก๊วนเสียว
*

พลังน้ำใจ: 52
ออฟไลน์ ออฟไลน์

กระทู้: 207



ดูรายละเอียด
« ตอบ #17 เมื่อ: 26 เมษายน 2011, 21:48:34 »

สรุป อันนี้เลยครับ ของคุณข้างบน คงใช้ได้
โค๊ด:
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['verify'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
}

ผมเอาไปใส่ใน ไฟล์ addregister.php
แต่มันขึ้นแบบนี้ครับ ERROR: Image Validation does not match.
กรอกถูกก็ขึ้น
  Tongue
โค๊ด:
session_start();
ด้วยนะครับเอาไว้บนสุดเลย
บันทึกการเข้า

รับเขียนโปรแกรม magento module, แก้ไข theme หรืออื่นๆ สนใจ pm มาครับ
lucationjj
สมุนแก๊งเสียว
*

พลังน้ำใจ: 46
ออฟไลน์ ออฟไลน์

กระทู้: 888



ดูรายละเอียด
« ตอบ #18 เมื่อ: 26 เมษายน 2011, 21:50:44 »

สรุป อันนี้เลยครับ ของคุณข้างบน คงใช้ได้
โค๊ด:
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['verify'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
}

ผมเอาไปใส่ใน ไฟล์ addregister.php
แต่มันขึ้นแบบนี้ครับ ERROR: Image Validation does not match.
กรอกถูกก็ขึ้น
  Tongue
โค๊ด:
session_start();
ด้วยนะครับเอาไว้บนสุดเลย

เติมไว้แล้วครับ แต่ก็เหมือนเดิม
บันทึกการเข้า


วันนี้มี ไม่มีบล็อก index แล้ว
hero-nana
ก๊วนเสียว
*

พลังน้ำใจ: 52
ออฟไลน์ ออฟไลน์

กระทู้: 207



ดูรายละเอียด
« ตอบ #19 เมื่อ: 26 เมษายน 2011, 22:03:00 »

สรุป อันนี้เลยครับ ของคุณข้างบน คงใช้ได้
โค๊ด:
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['verify'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
echo "<strong>ERROR</strong>: Image Validation does not match.";
}

ผมเอาไปใส่ใน ไฟล์ addregister.php
แต่มันขึ้นแบบนี้ครับ ERROR: Image Validation does not match.
กรอกถูกก็ขึ้น
  Tongue
โค๊ด:
session_start();
ด้วยนะครับเอาไว้บนสุดเลย

เติมไว้แล้วครับ แต่ก็เหมือนเดิม

ผิดตรงนี้มั้งครับ แก้ตรงสีแดงอะคับ ดู name captcha ที่ส่งมาผิด wanwan031
$myseed=$_SESSION['seed'] ;
$seedar = str_split($myseed,4);
$number = hash('sha256',$seedar[0].$_POST['captcha'].$seedar[1]);
$key=$_SESSION['key'];
if($number!=$key){
   echo "<strong>ERROR</strong>: Image Validation does not match.";
}
บันทึกการเข้า

รับเขียนโปรแกรม magento module, แก้ไข theme หรืออื่นๆ สนใจ pm มาครับ
หน้า: [1] 2  ทั้งหมด   ขึ้นบน
พิมพ์