这是我的ajax和php的小代码,我希望传递并获取登录系统。
这里我有ajax代码。
<script>
$("input#login_btn").on('click',function(e){
e.preventDefault();
var x = document.forms["loginform"]["login_username"].value;
var x1 = document.forms["loginform"]["login_password"].value;
var y = document.getElementById('login-error');
var z = document.getElementById('password-error');
if (x == "") { y.style.display ='block'; }else{ y.style.display ='none'; }
if (x1 == "") { z.style.display ='block'; }else{ z.style.display ='none'; }
var d = document.forms["loginform"]["login_username"].value;
var d1 = document.forms["loginform"]["login_password"].value;
if(d != '' && d1 != ''){
$.ajax({
url:"<?php echo base_url(); ?>Auth",
type: "POST",
data:{login_username: $('input#login_username').val(), login_password: $('input#login_password').val()},
success : function(data){
if(data.success == "true"){
var url = $('#current_loginurl').val();
window.location.href=url;
}else{
$('#loginform')[0].reset();
$("#login_fail").show('fast');
}
},
error : function(data){
$('#loginform')[0].reset();
$("#login_fail").show('fast');
}
});
}
});
</script>
这是我在codeigniter中的PHP代码。我在codeigniter中使用了myslqi。
public function index(){
require_once('connect.php');
$url = $this->input->post('current_loginurl');
$username = $this->input->post('login_username');
$password = $this->input->post('login_password');
$qry = mysqli_query($con ,"select * from `user_profile` where E_Id = '".$username."'") or die(mysqli_error($con));
$row = mysqli_fetch_array($qry);
$data = mysqli_num_rows($qry);
if(!empty($data) && $data >0){
$session = array(
'client_username' => $row['F_Name']." ".$row['L_Name']
);
$this->session->set_userdata($session);
$datas = array(
'success' => true
);
echo json_encode($datas);
//redirect($url);
return true;
}else{
$datas = array(
'success' => false
);
echo json_encode($datas);
return false;
}
}
我在这段代码中输了但是无法获得成功。任何人都可以帮助我错在哪里。如何在ajax中获得返回结果。
答案 0 :(得分:0)
启用CSRF后,我们需要提交帖子数据:
data: {
csrf_token_name: CONFIG.csrf_cookie_name
}
CONFIG在CI视图文件(.php)中创建,并与您的控制器或模板系统一起加载:
<script type="text/javascript">
var CONFIG = {
'base_url': '<?php echo base_url(); ?>',
'csrf_token_name' : "<?php echo $this->security->get_csrf_token_name(); ?>",
'csrf_cookie_name' : "<?php echo $this->security->get_csrf_hash(); ?>"
}
</script>
备注:当第二次拨打CSRF再生时(config.php),它将发出错误403 (检查浏览器控制台中的网络选项卡)。要么为整个应用程序关闭CSRF再生 https://security.stackexchange.com/questions/22903/why-refresh-csrf-token-per-form-request
或者仅仅通过在第435行($config['csrf_regenerate'] = TRUE;
下方)的config.php中的CSRF部分添加这些用于ajax的方法来执行此操作:
$no_regen = array(
'(HMVC-module/)controller/method'
);
if (isset($_SERVER["REQUEST_URI"])) {
foreach ($no_regen as $csrf_page){
if(stripos($_SERVER["REQUEST_URI"], $csrf_page) !== FALSE) {
$config['csrf_regenerate'] = false;
break;
}
}
}
奖励评论:请验证您的POST数据。