Вход в PHP + Ajax

Просто имея несколько вопросов, отправляющих форму входа через ajax, я в первую очередь разработчик PHP, я не использую Jquery + Ajax, что часто с PHP.

На данный момент Если я проверю данные POST Firebug после отправки формы, он, похоже, получит имя пользователя и пароль, которые были добавлены в форму, однако страница просто перезагружается независимо от того, добавлено ли неправильное имя пользователя и пароль или если они правильны и сеанс не создается.

Это форма:

<form id="loginform" method="post"> Username: <input type="text" name="username" id="username" value=""> Password: <input type="password" name="password" id="password" value=""> <input type="submit" name="loginsub" id="loginsub" value="Login"> </form> 

Это Ajax / Jquery:

  <script type="text/javascript"> $(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'); } } }); }); }); </script> 

И это 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; } } 

Я думаю, это не работает, потому что я не называю класс и функцию, но я не уверен, как это сделать. Я попытался создать страницу контроллера между двумя, которые будут инициировать класс и функцию php, но безрезультатно.

Чтобы редактировать, логин работает правильно, если я удалю 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 (включая класс пользователей). Или напишите общий контроллер, который обрабатывает запросы.