สอบถามการเช็คข้อมูลซ้ำแบบยังไม่กด submit หน่อยครับ

เริ่มโดย Permlogin, 28 มิถุนายน 2016, 22:31:09

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

Permlogin

เช็คข้อมูลซ้ำแบบยังไม่กด submit หรือ post 
ตัวอย่างเหมือนเวลาเราสมัครใช้อีเมล์ของ hotmail โดยที่เมื่อเรากรอกข้อมูลชื่อของอีเมล์ โปรแกรมจะเช็คให้เลยว่าสามารถใช้ได้หรือไม่

พอดีมีปัญหาเกี่ยวกับการกรอกข้อมูลครับ กรอกมาตั้งเยอะพอ submit ไป ข้อมูลกลายเป็นซ้ำ ค่อนข้างเสียเวลา

อยากให้เช็คได้ทั้ง user กับ email เลยอ่าครับ

ตัวอย่างโค๊ด register.php
<?php include ('header.php'); 
$strSQL "SELECT * FROM setting";
$objQuery mysqli_query($sql,$strSQL);
$objResult mysqli_fetch_array($objQuery);

?>

<div id="content">
<div class="panel panel-default">
  <div class="panel-body">
    <form id="form1" name="form1" method="post" action="save_register.php" >
      <center><h3>สมัครสมาชิก</h3></center><br>
      <table width="350" align="center" cellspacing="5">
        <tr>
          <td align="center"><p>User-ID : </p>
            </td>
          <td align="center"><p>
            <input name="textuser" type="text" id="textuser" maxlength="10" required>
          </p>
            </td>
  <td></td>
        </tr>
        <tr>
          <td align="center"><p>Password : </p>
            </td>
          <td align="center"><p>
            <input name="textpassword" type="password" id="textpassword" maxlength="10" required>
          </p>
            </td>
  <td></td>
        </tr>
        <tr>
          <td align="center"><p>Re-Password :</p>
            </td>
          <td align="center"><p>
            <input name="textrepassword" type="password" id="textrepassword" maxlength="10" required>
          </p>
            </td>
  <td></td>
        </tr>
        <tr>
          <td align="center"><p>Name :</p>
            </td>
          <td align="center"><p>
            <input name="textname" type="text" id="textname" required>
          </p>
            </td>
  <td></td>
        </tr>
        <tr>
          <td align="center"><p>E-mail :</p>
            </td>
          <td align="center"><p>
            <input name="textemail" type="email" id="textemail" required>
          </p>
            </td>
  <td></td>
        </tr>
        <tr align="center">
          <td><p>Status :</p>
            </td>
          <td><p>USER</p>
            </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
  <td></td>
  </tr>
      </table><br>
  <p align="center">
  คุณจะได้รับ Point : <?php echo $objResult["setcoin"]; ?> ฟรีสำหรับสมัครสมาชิกครั้งแรก
  <br><br>
        <input class="btn btn-primary" type="submit" name="Submit" value="ลงทะเบียน" />
      </p>
    </form>
</div>
  </div>
</div>
<?php include ('footer.php'); ?>


หน้าเช็คเพิ่มข้อมูลสมาชิกลงฐานข้อมูล save_register.php
<?php
include (
'include/conncet.php');

$set "SELECT * FROM setting";
$setname mysqli_query($sql,$set);
$setcoins mysqli_fetch_array($setname);
$coins $setcoins["set_usercoin"];

$_POST["textuser"];
$_POST["textpassword"];
$_POST["textname"];
$_POST["textemail"];

$strSQL "SELECT * FROM member WHERE Username='".trim($_POST['textuser'])."'";
$objQuery mysqli_query($sql,$strSQL);
$objResult mysqli_fetch_array($objQuery);
if($objResult)
{
echo "<script language='javascript'>alert('User-ID ของคุณมีคนอื่นใช้ไปเเล้ว !');</script>";
echo "<meta http-equiv='refresh' content='0;URL=register.php'>";
}
else 
{
$strSQL "INSERT INTO member (Username,Password,Name,email,Status,Coin) VALUES 
('"
.$_POST["textuser"]."', 
'"
.$_POST["textpassword"]."',
'"
.$_POST["textname"]."',
'"
.$_POST["textemail"]."',
'USER',
'
$coins')";
$objQuery mysqli_query($sql,$strSQL);

echo "คุณสมัครสมาชิกสำเร็จเเล้ว !<br>";
echo "<META HTTP-EQUIV='Refresh' CONTENT='2;URL=http://like-2.esy.es/login.php'><br>";
echo"คุณกำลังกลับไปยังหน้าเข้าสู่ระบบ . . .<br>
<a href='http://like-2.esy.es/login.php'>คลิกที่นี้หากคุณไม่อยากรอ . . .</a>"
;

}


?>


ปกติเเล้วใช้วิธีขึ้น textbox แสดงเเต่ค่อนข้างไม่สะดวกนักเลยอ่าครับ

รบกวนทีครับ  :wanwan017:

kingofdollars

เขียนโค้ดแบบนี้

SELECT * FROM member WHERE Username='".trim($_POST['textuser'])."'";

เปิดช่องให้กับ SQL injection เลยละครับ  ระวังจะโดนแฮคทั้งฐานข้อมูลนะครับ

วิธีการตือต้องกรอง $_POST[] ให้เหลือแค่สิ่งที่ต้องการ ก่อนนำไปใช้ใน SQL statement

_____

คราวนี้มาถึงการแก้ bug

แนะนำว่า แค่ echo ตัวแปรในโปรแกรมของเรา คือข้อมูลที่รับมา กับข้อมูลที่มีอยู่ เราก็จะเห็นปัญหาแล้วครับ

แนะนำแทรกบรรทัด

echo $strSQL;

แล้วก็ตัวแปรอื่นๆ ลองให้มันแสดงค่าดูครับ

Permlogin

ช่วยเเนะนำหน่อยได้มั้ยครับพอดีไม่ค่อยเก่ง php น่ะครับ  :wanwan017:

postmunnet

ค้น google ว่า jquery no post php refresh ครับ

หลักการทำงานคือเมื่อพิมพ์ตัวอักษรลงไป javascript จะส่งค่าไปให้ php เพื่อตรวจสอบเช็คข้อมูลซ้ำ แล้ว php ส่งค่ากลับมา
javascript รับค่าแล้วแปลงเป็นผลว่ามันซ้ำหรือไม่ซ้ำต่อไป

perasak

Back link, Text Link Ads เพียง 500 บาทต่อปี เปลี่ยนคีย์ได้ฟรี