PHP + Ajax登录

只是有一些问题通过ajax提交登录表单,我主要是一个PHP开发人员,我不经常使用PHP的Jquery + Ajax。

目前如果我在提交表单后检查firebug POST数据,它似乎确实获得了已添加到表单的用户名和密码,但无论是否添加了错误的用户名和密码,或者是否重新加载页面它们是正确的,没有创建会话。

这是forms:

Username: Password:

这是Ajax / Jquery:

   $(document).ready(function() { $('#loginform').submit(function() { $.ajax({ type: "POST", url: '/class/login.php', data: { username: $("#username").val(), password: $("#password").val() }, success: function(data) { if (data === 'Login') { window.location.replace('/user-page.php'); } else { alert('Invalid Credentials'); } } }); }); });  

这是PHP:

  class Users { public $username = null; public $password = null; public function __construct( $data = array() ) { if( isset( $data['username'] ) ) $this->username = stripslashes( strip_tags( $data['username'] ) ); if( isset( $data['password'] ) ) $this->password = stripslashes( strip_tags( $data['password'] ) ); } public function storeFormValues( $params ) { $this->__construct( $params ); } public function Login() { $success = false; try{ $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sql = "SELECT * FROM users WHERE username = :username AND password = :password LIMIT 1"; $user = username; $stmt = $con->prepare( $sql ); $stmt->bindValue( "username", $this->username, PDO::PARAM_STR ); $stmt->bindValue( "password", md5($this->password), PDO::PARAM_STR ); $stmt->execute(); $valid = $stmt->fetchColumn(); if( $valid ) { $success = true; session_start(); session_regenerate_id(); $_SESSION['user'] = $user['user']; session_write_close(); echo ('Login'); exit(); } $con = null; return $success; }catch (PDOException $e) { echo $e->getMessage(); return $success; } } 

我想它不起作用,因为我没有调用类和函数,但我不知道如何成功地这样做。 我尝试在2之间创建一个控制器页面,它将启动php类和function,但无济于事。

只是为了编辑,如果我删除ajax并通过登录表单操作调用php页面,登录确实可以正常工作。

有任何想法吗?

整个问题是在jquery中使用它

 $(document).ready(function() { $('#loginform').submit(function(e) { e.preventDefault(); $.ajax({ type: "POST", url: '/class/login.php', data: $(this).serialize(), success: function(data) { if (data === 'Login') { window.location = '/user-page.php'; } else { alert('Invalid Credentials'); } } }); }); }); 
  $user = new User(array("username" => $_POST['username'], "password" => $_POST['password'])); $user->Login(); 

将上面的代码放入login.php控制器文件(包括您的用户类)。 或者编写一个处理请求的通用控制器。