Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在codeigniter中验证ajax表单_Php_Forms_Codeigniter_Validation - Fatal编程技术网

Php 如何在codeigniter中验证ajax表单

Php 如何在codeigniter中验证ajax表单,php,forms,codeigniter,validation,Php,Forms,Codeigniter,Validation,我想使用codeigniter表单验证程序库验证表单 问题是数据来自ajax,所以我不理解代码应该是什么 public function register(){ $this->load->library('form_validation'); $json = $_POST['data']; $json = json_decode($json); $data = get_object_vars($json); $this->for

我想使用codeigniter表单验证程序库验证表单

问题是数据来自ajax,所以我不理解代码应该是什么

    public function register(){
    $this->load->library('form_validation');
    $json = $_POST['data'];
    $json = json_decode($json);
    $data = get_object_vars($json);

    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');
    if($this->form_validation->run()){
        echo 'asdf';
    } else {
        echo 'xyz';
    }

}
您可以看到有一个与$\u POST superglobal数组类似的$data数组。如何验证$data数组并使用json编码的数组返回一个响应,该数组包含表单状态和错误消息

这是我使用ajax发送数据的方式:

    function register(){
    var site_url = $("#site_url").val();
    var post_url = site_url+"index.php/ajax/register";

    var details = { };

    details.username = $("#username").val();
    details.password = $("#password").val();
    details.rpassword = $("#rpassword").val();
    details.country = $("#country").val();
    details.postal_code = $("#postal_code").val();
    details.email = $("#email").val();
    details.date_of_birth = $("#date_of_birth").val();


    var json = JSON.stringify(details);

    $.post(post_url, {'data': json}, function(data){
        alert(data);
        //data = JSON.parse(data);



    });

    return false;
}
谢谢。

发件人:

注意:这些规则也可以称为离散函数。例如:$this->form\u validation->required$string

发件人:

注意:这些规则也可以称为离散函数。例如:$this->form\u validation->required$string


好的,我还没有测试过,但应该可以

首先,甚至不用麻烦将数据作为json发送到控制器,只需将其作为普通post请求发送即可

$.post(post_url, {'data': details}, function(data){
然后在控制器中处理验证,就像处理任何表单验证一样

public function register(){
$this->load->library('form_validation');
$this->form_validation->set_rules($this->input->post('username'), 'Username',
'trim|required|min_length[5]|max_length[12]|xss_clean');
if($this->form_validation->run()==FALSE){
    $errors = 'Username error here';
}
//You can iterate through any other validation rules building the $errors 
//variable then pass them back to the view with:

if(isset($errors))
{
    print json_encode(array("status"=>"error", "message"=>$errors));
} else {
   /execute pass code here
}

}

之后,如果有错误,您可以在视图中回显错误。

好的,我们还没有测试过,但它应该可以工作

首先,甚至不用麻烦将数据作为json发送到控制器,只需将其作为普通post请求发送即可

$.post(post_url, {'data': details}, function(data){
然后在控制器中处理验证,就像处理任何表单验证一样

public function register(){
$this->load->library('form_validation');
$this->form_validation->set_rules($this->input->post('username'), 'Username',
'trim|required|min_length[5]|max_length[12]|xss_clean');
if($this->form_validation->run()==FALSE){
    $errors = 'Username error here';
}
//You can iterate through any other validation rules building the $errors 
//variable then pass them back to the view with:

if(isset($errors))
{
    print json_encode(array("status"=>"error", "message"=>$errors));
} else {
   /execute pass code here
}

}

之后,如果存在错误,您可以在视图中回显错误。

有一种方法可以验证不是来自POST/GET请求的数据。 我认为这个链接应该有帮助:

我用解码后的数据测试了它php://input


有一种方法可以验证不是来自POST/GET请求的数据。 我认为这个链接应该有帮助:

我用解码后的数据测试了它php://input


如何从视图发送数据,能否显示AJAX调用?我已经编辑了第一篇文章。我已经添加了ajax代码。为什么要序列化数据并将其作为JSON发送?为什么不使用POST字段呢?如何从视图发送数据,可以显示AJAX调用吗?我已经编辑了第一篇文章。我已经添加了ajax代码。为什么要序列化数据并将其作为JSON发送?为什么不直接使用POST字段呢?它不起作用。我不知道$this->validation\u表单对象如何在$\u POST数组中查找$\u POST['username']。“$this->input->post['username]有什么用?代码需要转义才能工作。这就是codeigniter处理$\u POST对象的方式。验证的第一个参数是要验证的内容,第二个参数是在出现错误时要返回给用户的用户友好名称,第三个参数是要检查的内容。我还注意到验证行中有一个输入错误。现在试试吧。grrr,另一个打字错误。我使用一个自定义输入处理程序,$this->input->post上的圆括号不是正方形。它不起作用。如果你写var_dump$this->input->post'username';它将返回false。if括号内的代码每次都会执行,不管用户名是否有效。它不会发布到表单中。在表单中转储$\u POST以确保POST变量实际已填充,请参见if语句的编辑,主啊,我写这篇文章时一定很累了。对不起,它坏了。我不知道$this->validation\u表单对象如何在$\u POST数组中查找$\u POST['username']。“$this->input->post['username]有什么用?代码需要转义才能工作。这就是codeigniter处理$\u POST对象的方式。验证的第一个参数是要验证的内容,第二个参数是在出现错误时要返回给用户的用户友好名称,第三个参数是要检查的内容。我还注意到验证行中有一个输入错误。现在试试吧。grrr,另一个打字错误。我使用一个自定义输入处理程序,$this->input->post上的圆括号不是正方形。它不起作用。如果你写var_dump$this->input->post'username';它将返回false。if括号内的代码每次都会执行,不管用户名是否有效。它不会发布到表单中。在表单中转储$\u POST以确保POST变量实际已填充,请参见if语句的编辑,主啊,我写这篇文章时一定很累了。很抱歉