我正在codeigniter网站上工作,客户已要求隐藏数据表中的价格列,除非用户输入正确的密码(他们会给出正确的密码通过电话向客户提供)。Codeigniter - 如何显示通过ajax输入密码后的信息
显而易见的方法是使用户登录,然后显示包含价格的新表/页面。
我可以通过AJAX实现吗?即出现一个对话框,用户输入密码,发送一个请求并添加一个包含价格的新表格?
我是Codeigniter的新手,但我每天都在学习,请有人指点我的方向?
感谢 丹
我正在codeigniter网站上工作,客户已要求隐藏数据表中的价格列,除非用户输入正确的密码(他们会给出正确的密码通过电话向客户提供)。Codeigniter - 如何显示通过ajax输入密码后的信息
显而易见的方法是使用户登录,然后显示包含价格的新表/页面。
我可以通过AJAX实现吗?即出现一个对话框,用户输入密码,发送一个请求并添加一个包含价格的新表格?
我是Codeigniter的新手,但我每天都在学习,请有人指点我的方向?
感谢 丹
其实它并不是真正的代码点火器问题,更多的JavaScript。在ci中添加一个控制器函数,通过ajax调用(强烈推荐使用jquery这样的javascript框架)。
为了保持简单,您可以将密码添加到请求中。控制器功能检查密码,如果其正确,则回应价格。
的JavaScript代码可能看起来类似的东西:
$.ajax({
type: "POST",
url: 'controller/function',
data: {'password': $('#password').attr(value)},
success: function(data){
$('#price').html(data);
},
});
你可以通过AJAX实现它:它的工作是这样的:
1)用户在框中输入密码,然后点击按钮
2)点击事件上按钮触发以下内容:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'getPrices.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.readState == 200)
putPricesIntable(xmlhttp.responseXML)
}
}
xmlhttp.send('password=' + 'password');
这个问题对于特定的语言或框架确实很少,但更多的是关于如何最好地解决问题。这种情况下的问题是仅在正确输入密码的情况下显示一列。所以首先你需要有一个允许网站用户输入密码的方法。如何做到这一点再次是毫不相关的,它可能是一个页面上的表单,或者它可能是一个单独的页面。
一旦提交密码并发现密码正确,就需要为用户创建一个会话。这个会话基本上会告诉页面是否显示该列。
您可能不想完全依赖ajax方法,就好像用户禁用JavaScript一样,他们将永远无法看到该列,而只能使用JavaScript来增强网站的可用性。
阿贾克斯只是意味着你的登录控制器将返回一些机器可读(JSON/XML),而不是HTML。
你的控制器真的只需要设置一个会话变量。
class Login extends Controller {
function __construct() {
parent::Controller();
$this->load->model('user_m');
}
function json_login() {
$user = $this->user_m->get_user($_POST['username']);
if($user->password == md5($_POST['password'])) {
$this->session->set_userdata('username',$user->username);
print json_encode($this->user);
}
else {
print json_encode(FALSE);
}
return;
}
function logout() {
$this->session->destroy();
redirect('/theloginpage');
}
}
假设你正在使用jQuery的JavaScript的Ajax调用可以工作是这样的:
$('#login_form').submit(function(event) {
event.preventDefault();
$.ajax({
type:"POST",
data:$(this).serialize(),
dataType:"json",
url:"/login/json_login",
success: function(data) {
if(data['username'] != null) {
$(this).append('<p>You are now logged in</p>');
reload_table_data();
}
else if(data == flase){
$(this).append('<p>Fail whale, wrong username or password</p>');
}
}
});
}
现在显示的是数据检查时,如果“用户名”已在会议中设置。另外不要忘记创建销毁会话的注销方法。您可以将表格数据作为html代码片段返回,并直接将其插入到DOM或json/xml循环中。
登录表单可以显示在页面上的任何地方,并有大量的jQuery的,道场,原型等库,它会提供一个对话框。