【问题标题】:match user input in HTML Form with data in MY SQL database将 HTML 表单中的用户输入与 MY SQL 数据库中的数据匹配
【发布时间】:2015-12-28 08:12:53
【问题描述】:

我正在尝试在我的网站上设置电话号码验证系统。我使用的逻辑是:-

1) 用户单击一个按钮,上面写着完成电话号码验证。(运行一个脚本,该脚本发送一条带有随机数的 SMS,该随机数是使用 Rand () 生成的。这个数字也存储在数据库中的该用户行中。

  <html>
        <head>
        </head>
           <body>
             <form id="sms2" name="sms2" method="POST" action="index.php?option=com_content&view=article&id=83">
              <table width= "400">

                 <tr>
                   <td align="right" valign="top">Verification Code:</td>
                   <td align="left"><textarea name="veficationcode" cols="82" rows="5" id="veficationcode"></textarea></td>
                 </tr>
                 <tr>
                   <td colspan="4" align="right"><input type="submit" name= "submit" value="submit"/>
                   </td>
                 </tr>
                </table>
              </form>

            </body>
    </html>



<?php


Global $_CB_framework;

$myId = $_CB_framework->myId();
$cbUser =& CBuser::getInstance( $myId );

if ( ! $cbUser ) {
 $cbUser =& CBuser::getInstance( null );
}

$user =& $cbUser->getUserData();

echo$myId;
        $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "UPDATE tablename SET phoneverificationcode ='$phverf'
    WHERE id = $myId";


    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
    ?>

2) 用户将被重定向到一个页面,在该页面中输入他通过短信收到的验证码,然后点击提交。脚本运行并从数据库中该用户行中获取数据,并将其与他输入的内容相匹配。如果匹配,他会收到一条成功消息,否则他会收到一条错误消息。

<?php

Global $_CB_framework;

$myId = $_CB_framework->myId();
$cbUser =& CBuser::getInstance( $myId );

if ( ! $cbUser ) {
 $cbUser =& CBuser::getInstance( null );
}

$user =& $cbUser->getUserData();

echo$myId;
    if(isset($_POST['submit'])){
    $verificationcode = $_POST["veficationcode"]; 
    echo "verificationcode".$verificationcode;

    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    // Create connection
    $connect = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$connect) {
        die("Connection failed: " . mysqli_connect_error());
    }

    //select the data from the database for the users own row based on his unique id
    $query = "SELECT phoneverificationcode FROM tablename WHERE id=$myId";

    $result = mysqli_query($connect,$query);
    while($row = mysqli_fetch_array($result));
    echo $row[0];

    if($verificationcode == $row){echo "SUCCESS!!!";}

    else{
    echo "verification code mismatch". "Please try again.";

    }
    $connect->close();
    }
    ?>

我面临的问题是它总是说不匹配。不确定我在这里缺少什么?

【问题讨论】:

  • 我面临的问题是它总是说不匹配。需要帮助...不确定我在这里缺少什么?
  • 编辑您的问题以包含实际问题,不要将其添加到 cmets。 - 你在哪里设置$myId
  • 匹配 $row[0] 不仅是 $row $verificationcode == $row
  • 看起来 $phverf/$myId 似乎未定义...如果您检查您的数据库,您的数据是否真的被存储了?请使用更多代码编辑您的帖子,您也可以更新您的代码格式。

标签: php mysql


【解决方案1】:

因为您想检查 phoneverificationcode 这是数据库本身的字段名称,请将您的 If-Statement 更改为:

  if($verificationcode == $row['phoneverificationcode']){echo "SUCCESS!!!";}

                    else{
                    echo "verification code mismatch". "Please try again.";

                    }

【讨论】:

  • 我编辑了,但它的行为仍然相同,并显示验证码不匹配.... $row['phoneverificationcode'];
  • 现在当我将代码更改为:- 第 2 步:- $query = "SELECT phoneverificationcode FROM tablename WHERE id= $myId"; $result = mysqli_query($connect,$query); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) echo "db queryresult=".$row['phoneverificationcode']; } else { echo "0 个结果"; } if($verificationcode == $row['phoneverificationcode']){echo "SUCCESS!!!";} 我回显客户输入和查询结果,它们与完全相同的值匹配,If 语句给出了验证码不匹配。只有 IF 语句失败??
  • 现在的问题是,如果使用 if 语句,即使值不匹配,它也总是会成功,我已经更改了代码,因为我必须解决这个问题:- if($row['cb_userinputphonecode '] === $row['cb_phoneverificationcode'] ){echo "SUCCESS!!!";} else { echo "验证码不匹配,请重试";}
  • 好的...请仅使用两个等号再试一次... '==' 而不是 '===' ...您能否发布您的选择声明...完成
  • 仍然与 == 相同,$query = "SELECT cb_userinputphonecode,cb_phoneverificationcodeFROM t4qcm_comprofiler WHERE id=$myId";我还回显并执行 Var_dump,回显正确显示单元格值,但 Var_dump() 显示 null,因此即使由于用户输入不正确导致值不匹配,它们也显示为始终匹配
【解决方案2】:

我将 if 语句放在解决此问题的 while 循环中。 `if ($result = mysqli_query($connect,$query)) { while($row = mysqli_fetch_assoc($result)){if($row["cb_phoneverificationcode"] == $row["cb_userinputphonecode"]){ echo "SUCCESS!!!"; }

else{ echo "验证码不匹配,请重试";} }`

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2015-03-12
    • 2015-01-28
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多