防止将数据添加到数据库

时间:2016-05-31 12:32:08

标签: php mysql

我试图通过输入代码短信来创建一个可以添加自己的目录。输入正确的代码短信后,它会检查数据库中是否存在代码,然后从数据库中删除输入的代码并从表单中添加数据。现在我遇到了一个问题,因为当给定的代码不正确时,我不知道如何防止将数据添加到数据库中。 目前,它看起来像这样:

    if ($sum != $val1+$val2) {   //simple captcha
            echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
        }
        else {
            if ($_POST['code']){
    $code=$_POST['code'];

    global $wpdb;
    $sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
    $check_code = $wpdb->get_results($sql);

    if ($check_code>0)  {

    $wpdb->delete( 'code_sms', array( 'code' => $code ) );


    if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
                $company_nip = strip_tags($_POST["company_nip"], "");
                $company_name = strip_tags($_POST["company_name"], "");
    $result = $wpdb->insert( 
                    'test', 
                    array( 
                        'company_nip' => $company_nip, 'company_name' => $company_name)
                );

    if (!$result) {
            echo '<div>
    ERROR</div>';
            }
            else {

             echo '<div>
    Succes</div>';
            }
        }
         }
}
    }

修改 我编辑了我的代码,就像@thephatp说的那样,它现在正在工作:)

3 个答案:

答案 0 :(得分:0)

您必须在if条件中包含将数据添加到数据库中的代码,其中已验证短信代码为真{ - 1}} - 只需在代码短信删除后立即附加。

if ($check_code>0)  {

答案 1 :(得分:0)

if ($sum != $val1+$val2) {   //simple captcha
        echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
    }
    else {
        if ($_POST['code']){
$code=$_POST['code'];

global $wpdb;
$sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
$check_code = $wpdb->get_results($sql);

if ($check_code>0)  {

$wpdb->delete( 'code_sms', array( 'code' => $code ) );


    if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
            $company_nip = strip_tags($_POST["company_nip"], "");
            $company_name = strip_tags($_POST["company_name"], "");
    $result = $wpdb->insert( 
                'test', 
                array( 
                    'company_nip' => $company_nip, 'company_name' => $company_name)
            );

    if (!$result) {
        echo '<div>
    ERROR</div>';
        }
        else {

         echo '<div>
    Succes</div>';
            }
        }
     }
  }
  else
  {
      echo '<div>
    ERROR WRONG CODE</div>';
  }
}

答案 2 :(得分:0)

您基本上是在检查“数据库中是否存在sms_code”,然后“删除代码;插入表单数据。”

但是,您正在关闭if语句之前以添加表单数据。移动关闭if语句的},如下所示。这样,如果sms_code不正确,则不处理表单数据if if statement&amp;插入

此外,您的$check_code变量不是行数,而是结果集。如果查询导致错误,则此结果集仅为FALSE。 请在此处查看get_result的文档: mysqli_stmt_get_result

  

返回成功SELECT查询的结果集,或其他的FALSE   DML查询或失败。 mysqli_errno()函数可用于   区分两种类型的失败。

您需要检查行数的结果集,并在if语句中对其进行测试。以下代码已更新。

  if ($sum != $val1+$val2) {   //simple captcha
            echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
        }
        else {
            if ($_POST['code']){
    $code=$_POST['code'];

    global $wpdb;
    $sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);

   $result = $wpdb->get_results($sql);

   /* Get the number of rows */
   $num_of_rows = $result->num_rows;

    if ($num_of_rows>0)  {

        $wpdb->delete( 'code_sms', array( 'code' => $code ) );

        if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
                    $company_nip = strip_tags($_POST["company_nip"], "");
                    $company_name = strip_tags($_POST["company_name"], "");
            $result = $wpdb->insert( 
                        'test', 
                        array( 
                            'company_nip' => $company_nip, 'company_name' => $company_name)
                    );

            if (!$result) {
                echo '<div>
                ERROR</div>';
            }
            else {

                 echo '<div>
                Succes</div>';
            }
        }
    }