我用 Codeigniter+jQuery 组合做了很多自己的编码。我目前的项目有很多不同类型的输入,当数据不同时,我必须以不同的方式处理它。一个字段可以是电子邮件字段,一个字段可以是数字字段,必须只允许数字和逗号等。你明白了。
我做了一个非常简单的例子,我是如何做事的。因此,当按下提交时,我会使用正则表达式匹配检查每个输入的数据,如果有问题,它将改变该输入的颜色,并在某些字段上通知有什么问题。非常简单。
这种方法有效,但是当我有很多输入时,它会变得非常混乱且难以维护,我的意思是如果用户禁用了 javascript,我必须使用 PHP 后备。所以我在 jQuery 和 PHP 方面有同样的检查。
另一件事是安全。我认为我对漏洞利用/XSS 攻击几乎太偏执了,我经常用正则表达式删除所有不需要的字符,然后我用其他正则表达式检查剩余数据是否有效。
如果有人能告诉我是否有更好的方法来实现 Codeigniter 和 jQuery 之间的数据处理/验证,我将不胜感激。
应用程序/控制器/example.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Example extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper('url');
}
public function index()
{
$this->load->view('example_view');
}
public function jquery()
{
echo "Username: ". $this->input->post('userName');
echo "userAge: ". $this->input->post('userAge');
echo "userEmail: ". $this->input->post('userEmail');
}
}
?>
应用程序/视图/example_view.php
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<title>My test</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<div id="status"></div> <br />
<form id="userForm">
<label for="userName">Username:</label>
<input type="text" name="userName" id="userName" /> <br />
<br />
<label for="userAge">Age:</label>
<input type="text" name="userAge" id="userAge" /> </br >
<br />
<label for="userEmail">E-Mail:</label>
<input type="text" name="userEmail" id="userEmail" /> </br >
</br >
<input type="submit" name="sendData" value="Send it" />
</form>
</body>
</html>
<script>
$("#userForm").submit(function(event) {
event.preventDefault();
var error = 0;
if($("#userForm").match('/regexp_here/'))
{
$("#userName").addClass('alert');
error++;
}
else
{
$("#userName").removeClass('alert');
}
if($("#userAge").match('/regexp_here/'))
{
$("#userAge").addClass('alert');
error++;
}
else
{
$("#userAge").removeClass('alert');
}
if($("#userEmail").match('/regexp_here/'))
{
$("#userEmail").addClass('alert');
error++;
}
else
{
$("#userEmail").removeClass('alert');
}
if(error == 0)
{
$.ajax({
type: 'POST',
url: 'example/jquery/',
data: {
userName: userName,
userAge: userAge,
userEmail: userEmail
},
success:function(data)
{
$("status").html(data);
},
error:function()
{
$("status").html("Well, it was error...");
}
});
}
else { }
});
</script>