尽管存在错误,但数据仍存储在db中

时间:2016-07-08 13:21:19

标签: javascript php ajax

我接受来自用户的永久帐号(pan),在提交之前,我正在检查db中是否已存在pan编号。它正在工作,我也收到一个错误,说 pan no已经注册如果我忽略错误并且不更改盘号并继续提交,它将进入数据库。

我观察到在验证检查后,输入的号码保持不变。我想知道如何在收到错误后清空输入框。如果它仍然为空,则提交按钮将不起作用。那么一旦出现错误,如何从输入框中删除输入的数字,如何将光标焦点放在输入框中?

由于

enter image description here

HTML

<input name="panno" type="text"  id="panno" style="width:219px;" />
<span id="pan_status1"></span>

功能

$("#panno").change(function()
            {
                $("#pan_status1").html('<img src="images/9.gif" align="absmiddle">&nbsp;Loading Please wait...');
                var id=$(this).val();
                var dataString = 'panno='+ id;
                $.ajax
                ({
                    type: "POST",
                    url: "checkp.php",
                    data: dataString,
                    cache: false,
                    success: function(html)
                    {
                        $("#pan_status1").html(html);

                    } 
                });

            });

CHECKP.PHP

<?php

require("connection/config.php");
    if(isset($_POST['panno']))
    {
    $mpan = $_POST['panno'];

    $sql_check = mysql_query("select * from register where pan_no='".$mpan."'") or die(mysql_error());

    if(mysql_num_rows($sql_check))
    {
    echo '<font color="red"><STRONG>'.$madhar.'</STRONG> is already registered.</font>';


             $response = array();
             $response['successStatus'] = 'error';
             $response['responseMessage'] = $erroMessage;
             header('Content-type: application/json');
             echo json_encode($response);      

    }
    else
    {
             $response = array();
             $response['successStatus'] = 'success';
             $response['responseMessage'] = $erroMessage;
             header('Content-type: application/json');
             echo json_encode($response);
    }
}
?>

修改

我在php文件中进行了更改。现在当我输入平移编号并且数据库中不存在输入的平移编号时,我在输入按钮旁边得到以下输出

{"successStatus":"success","responseMessage":null}

如果存在,我会得到以下

123456789012 is already registered.{"successStatus":"error","responseMessage":null}

现在已捕获状态,如果状态为错误

,如何将输入字段设为空

如果状态成功,我不想显示html / json输出,如果状态错误,我想只显示html。

2 个答案:

答案 0 :(得分:0)

由于不推荐使用mysql(php扩展),因此您应mysqli执行SQL代码。接下来将是逃避传入的POST请求,因为您不希望通过SQL注入被黑客攻击。

您可以使用JSON进行响应,以宣告您是否收到错误的客户端(jQuery)。

此外,不要将PHP错误发送给客户端,您可以使用try / catch解决方案。

答案 1 :(得分:0)

尽管用户可能不希望你这样做,但是直接足以清除这个领域,特别是如果他们是一个慢打字员。 (他们可以对自己说,“哦,我交换了两个数字!”并修复他们的实际tpyo,然后再次按下按钮。)

我建议您在这里需要做的是让您的JavaScript 记住服务器告诉它(通过POST结果)该号码无效。 (或者,更好的是,要记住它尚未告诉您某个特定号码 有效。)如果用户仍然按下按钮,您可以向他提供信息性消息,而不是发送给他服务器什么。

然后,无论如何,您必须验证服务器端的传入信息。即使您提供AJAX调用来验证PAN编号,服务器也最终负责确保正确更新数据库。在将数字发布到数据库之前,它必须再次检查以查看该数字是否有效。并且,您必须在JavaScript中提供对该结果的适当测试:查看帖子是否成功,如果不成功,为什么不成功。

您的JavaScript不应故意向主机发送丢失或无效的PAN号。但是,主持人不能假设客户是“做正确的事情”。数据库内容的最终责任在于主持人。