【发布时间】:2017-04-07 01:58:28
【问题描述】:
我有这个代码,用于登录的网络应用程序。 我在 Windows 操作系统上,使用 CodeIgniter(在 Sublime Text 3 中)和 AJAX 调用。我在 AJAX 调用期间收到 403 Forbidden(对于它的 url)。
现在,我只需在登录表单中输入用户名和密码,获取该信息并通过 AJAX 从 JS 文件发送。现在我只想知道给定的用户是否存在于数据库中,并提醒或关于它的东西(它存在/它不存在)
来自 config.php 的 Base_url:
$config['base_url'] = 'http://localhost/myFolder/';
这里是登录信息(部分):
<form action="<?php echo base_url(); ?>index.php/login/enter" method="POST" id="formularioLogin">
<div class="form-group row">
<label for="userInfo" class="col-md-2 col-sm-12 col-form-label">User:</label>
<div class="col-md-10 col-sm-12">
<input type="text" class="form-control" id="userInfo" name="userInfo" placeholder="">
</div>
</div>
<div class="form-group row">
<label for="passwordInfo" class="col-md-2 col- sm-12 col-form-label">Password:</label>
<div class="col-md-10 col-sm-12">
<input type="password" class="form-control" id="passwordInfo" name="passwordInfo" placeholder="">
</div>
</div>
<div class="form-group row text-right">
<div class="col-md-12 col-sm-12">
<button type="button" class="btn btn- primary" id="botonSubmitLogin" onClick="login()">Login</button>
</div>
</div>
</form>
这是带有登录功能的JS文件: 函数登录(){
if(validacionLogin()){
$.ajax({
url: "<?php echo site_url(); ?>.'index.php/login/enter/';? >",
type: "POST",
data: {"userInfo": userInfo,
"passwordInfo": passwordInfo,
},
dataType: "html",
cache: false,
beforeSend: function() {
console.log("Procesando...");
},
success: function(data) {
if(data == "OK"){
alert("Exists");
console.log(data);
return;
}
if(data == "ERROR"){
alert("Doesn't exist");
console.log(data);
return;
}
}
});
//alert("data passed");
console.log("User: "+userInfo);
console.log("Password: "+passwordInfo);
}else{
alert("Incorrect");
console.log("User: "+userInfo);
console.log("Password: "+passwordInfo);
}
}
这里是登录的模型(login_model):
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Login_model extends CI_Model{
public function __construct(){
}
public function login($user, $password){
$this->db->where('user', $user);
$this->db->where('contrasenia', $password);
$query = $this->db->get('users');
if($query->num_rows()>0){
return true;
}else{
return false;
}
}
}
这里是控制器(login.php):
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Login extends CI_Controller{
function __construct() {
parent::__construct();
$this->load->model('login_model');
}
function enter(){
$usuario = $_POST['userInfo'];
$password = $_POST['passwordInfo'];
if(isset($user) || isset($password)){
if($this->login_model->login($user, $password)){
$rta='OK';
}
else{
$rta="ERROR";
}
}
}
function index() {
$this->load->view('login.php');
}
}
注意:我已经有一个包含用户的数据库,并且我还在 autoload.php 和 database.php 中添加了数据库
不过,当我在表单中按“登录”时,我在开发工具中收到此错误:
POST http://localhost/myFolder/index.php/%3C?php%20echo%20site_url();%20?%3E.%27index.php/login/enter/%27;?%3E 404 (Not Found)
但是根据我是否将默认控制器更改为 login.php,我会收到 403(禁止)错误。我对如何前进没有太多想法:/
编辑:我已经尝试了用户 @Nobita 的建议。结果:错误 403 禁止。 EDIT2:我回到拥有它的代码(包括 config.php 中的 index.php 并更改 dafult 控制器以欢迎)并将 ajax url 中的链接硬编码为 --> http://localhost/myFolder/index.php/login/enter/ 结果:jquery.min .js:6 POST http://localhost/myFolder/index.php/login/enter/ 500 (Internal Server Error) 我真的不知道发生了什么:/
【问题讨论】:
-
你尝试在浏览器上打开你的 php
-
@SachinBahukhandi 嗨!嗯,我想是的,但没有用......我认为它与路径有关,而不是代码,但似乎无法意识到问题出在哪里:(
-
根据我的观点,从 ajax url 中删除空格,第二种数据类型等于 json。如果不工作,请通知我。
-
我确定你的控制器有一些问题
-
Ajax url 将是 `url: "login/enter"` 如果需要,表单操作也一样
标签: jquery ajax codeigniter localhost