只是有几个问题通过ajax提交登录表单,我主要是一个PHP开发人员,我不经常使用PHP的Jquery + Ajax.
目前如果我在提交表单后检查firebug POST数据,它似乎确实获得了已添加到表单的用户名和密码,但无论是否添加了错误的用户名和密码,或者是否重新加载该页面它们是正确的,没有创建会话.
这是形式:
<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>
Run Code Online (Sandbox Code Playgroud)
这是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>
Run Code Online (Sandbox Code Playgroud)
这是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;
}
}
Run Code Online (Sandbox Code Playgroud)
我想它不起作用,因为我没有调用类和函数,但我不确定如何成功地这样做.我尝试在2之间创建一个控制器页面,它将启动php类和功能,但无济于事.
只是为了编辑,如果我删除了ajax并且只是通过登录表单动作调用php页面,登录就能正常工作.
有任何想法吗?
Jak*_*edl 12
整个问题是在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');
}
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50139 次 |
| 最近记录: |