Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
将值从jQuery传递到PHP_Php_Jquery - Fatal编程技术网

将值从jQuery传递到PHP

将值从jQuery传递到PHP,php,jquery,Php,Jquery,情况如下: 我使用jquery.validate.js来验证我的表单,但我需要添加一个服务器端验证层。jQuery Validate使用表单元素中的类名来确定它应该做什么——我想将这些类名提取到PHP中,以便在服务器端执行相同的验证 我希望这样做: foreach($_POST as $key=>$value) { $class=array(...// get this #key element class name list with jQuery $error=..

情况如下:

我使用jquery.validate.js来验证我的表单,但我需要添加一个服务器端验证层。jQuery Validate使用表单元素中的类名来确定它应该做什么——我想将这些类名提取到PHP中,以便在服务器端执行相同的验证

我希望这样做:

foreach($_POST as $key=>$value) {
     $class=array(...// get this #key element class name list with jQuery
     $error=...// based on the class names, perform specific PHP validations
     if($error=="")
         return true;
     else
         return false;
}
问题是,我可以这样做吗?我可以用jQuery获取元素类名并将它们传递给PHP吗?

将把表单数据转换为JSON:

var json = $('#formid').serializeArray();
通常,您可以将整个JSON字符串发送到服务器,服务器可以从那里获取该字符串。

将表单数据转换为JSON:

var json = $('#formid').serializeArray();

通常,您可以将整个JSON字符串发送到服务器,服务器可以从那里获取它。

您可以让jQuery将类名与表单一起发送,但是这会导致严重的安全问题。由于发布到服务器上的所有内容实际上都是由您的用户浏览器完成的,因此您的用户将能够更改您的验证规则,从而绕过这些规则,这将使您在这里的整个目的变得毫无用处。相反,我建议如下

在php中创建一个函数,以获取表单元素的名称并返回适当的类名。为表单生成每个表单元素时,调用此函数以获取类名(然后应用jQuery验证)。当您在PHP代码中读取表单时,使用相同的函数获取类名,然后您就知道要在服务器端PHP代码中应用哪些验证规则


希望它有意义。

您可以让jQuery将类名与表单一起发送-但是这会导致严重的安全问题。由于发布到服务器上的所有内容实际上都是由您的用户浏览器完成的,因此您的用户将能够更改您的验证规则,从而绕过这些规则,这将使您在这里的整个目的变得毫无用处。相反,我建议如下

在php中创建一个函数,以获取表单元素的名称并返回适当的类名。为表单生成每个表单元素时,调用此函数以获取类名(然后应用jQuery验证)。当您在PHP代码中读取表单时,使用相同的函数获取类名,然后您就知道要在服务器端PHP代码中应用哪些验证规则

希望它有意义。

客户端:

function validate()
{
    var params = {
       var1: {key:$('#field1').get(0).className, value:$('#field1').get(0).value},
       var2: {key:$('#field2').get(0).className, value:$('#field2').get(0).value},    
       ...
    }
    $.post('http://host/validate_script.php', params, onValidate);
}
function onValidate(data)
{
    alert(data);
}
希望这将有助于。。。当然,这是一种简单的方法,您可以更正式地进行操作。

客户端:

function validate()
{
    var params = {
       var1: {key:$('#field1').get(0).className, value:$('#field1').get(0).value},
       var2: {key:$('#field2').get(0).className, value:$('#field2').get(0).value},    
       ...
    }
    $.post('http://host/validate_script.php', params, onValidate);
}
function onValidate(data)
{
    alert(data);
}
希望这将有助于。。。当然,这是一种简单的方法,您可以更正式地进行操作。

永远不要信任客户端(浏览器)

您不应该允许客户端上的任何内容向服务器指示如何测试发布信息的有效性

这是一个非常糟糕的主意。

永远不要信任客户端(浏览器)

您不应该允许客户端上的任何内容向服务器指示如何测试发布信息的有效性


这是一个非常糟糕的主意。

如上所述,您可以使用AJAX和JSON将值传递给PHP。但是,这不会提供比常规JS验证更安全的验证(因为PHP仍然依赖于JS)

如果您选择使用此方法,那么下面是对Evgeniy Savichev之前提供的脚本的一些改进

<script type="text/javascript">
params = {
    elementName : {
        className : $('elementId').attr('class'),
        elementValue : $('elemenetId').val()
    },
    anotherElement : {
        //etc
    }

}

$.post('http://host/validate_script.php', params, onValidate);

function onValidate(data)
{
    alert(data);
}
</script>

如上所述,您可以使用AJAX和JSON将值传递给PHP。但是,这不会提供比常规JS验证更安全的验证(因为PHP仍然依赖于JS)

如果您选择使用此方法,那么下面是对Evgeniy Savichev之前提供的脚本的一些改进

<script type="text/javascript">
params = {
    elementName : {
        className : $('elementId').attr('class'),
        elementValue : $('elemenetId').val()
    },
    anotherElement : {
        //etc
    }

}

$.post('http://host/validate_script.php', params, onValidate);

function onValidate(data)
{
    alert(data);
}
</script>

如何从jQuery调用PHP函数?@Ronny AndréBendiksen-这是一个完全不同的主题,如果有新问题,可能会更好。简短的版本是在调用该函数的地方有一个常规的.php页面,然后使用jQuery.ajax方法(请参阅jQuery手册以获得更深入的解释)如何从jQuery调用php函数?@Ronny AndréBendiksen-这是一个完全不同的主题,可能会更好地解决一个新问题。简短的版本是在调用该函数的地方有一个常规的.php页面,然后使用jQuery.ajax方法(请参阅jQuery手册以获得更深入的解释)