如何验证通过帖子发送的数据?

时间:2016-02-15 14:08:21

标签: php ajax post

我有一个将postidcomment发送到另一个页面的ajax代码。

ajax.php

$.ajax({
            type: "POST",
            url: "addcomment.php",
            data: {comment : comment,postid : postid},

我在其他页面上收到数据:

 if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $postid=$_POST['postid'];
    $comment=$_POST['comment'];

这里我可以对验证第二个代码进行哪些改进。我的意思是代码只有在postidcomment发布后才能继续。

3 个答案:

答案 0 :(得分:1)

只需检查它们是否已定义......

function myfunc(offset) {
    var d = $.Deferred();                      // Create "Deferred" object
    setTimeout(function(){
        return $.ajax({
            url:"https://www.URL.com",
            crossDomain: true,
            dataType: "jsonp",
            success: function (response) {
                // console.log(response);
                data = data.concat(response);
                d.resolve();                   // Resolve it
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                // handle errors
                d.reject();                    // Reject it
            } 
        });
    },offset/10);
    return d.promise();                        // Return its promise
}

或者您可以在进行AJAX调用之前执行此操作。在获取postid和comment元素的值时,只需检查它们是否有值。如果没有从功能返回。

答案 1 :(得分:1)

你可以做一些事情,首先你要确保两个变量都存在,你可以使用isset()

对于这样的代码,我倾向于支持早期返回嵌套ifs,所以你可以这样做:

if (!isset($_POST['postid']) || !isset($_POST['comment'])) {
    $error = 'Values for postid and comment were not set.';
    return $error;
}

检查两个变量都已设置后,您可以开始验证变量是否是正确的类型和大小。

您可以将isset()替换为empty(),所以:

if (empty($_POST['postid'] || empty($_POST['comment']) {
    $error = 'Values are not set.';
    return $error;
}

例如,我假设postid是数字,所以...

if (!is_numeric($_POST['postid'])) {
    $error = 'Value for postid must be numeric.';
    return $error;
}

您还可以检查它是否高于0:if (!$_POST['postid'] > 0) {}

然后,您可以检查长度是否大于0。

if (!strlen($_POST['comment']) > 0) {
    $error = 'Comment was left blank, ensure it is filled in.';
    return $error;
}

所以这只是一些让你入门的例子,希望它有所帮助。 :)

答案 2 :(得分:1)

我建议您创建一个通用的Validator类,它将根据您要验证的表单进行不同的配置(使用配置数组或文件轻松完成)。 这样,您只需要完成一次工作,就可以在项目中重复使用它,也可以使代码更清晰,更易于维护。