我试图让我的登录请求重定向到一个会话"logged_in"与php头位置,如果用户名和密码是正确的,我的问题是,header("Location:secret.php");
不会做任何事情,唯一的工作是echo..我不知道为什么:/
<html>
<head>
</head>
<body>
<div class="login_box">
<div class="user_logo"></div>
<div class="login_form">
<form>
<input id="username" type="text" placeholder="Username">
<input id="password" type="password" placeholder="Password">
<input id="login" type="button" value="Login">
</form>
</div>
<p id="result"></p>
</div>
<script src="script/jquery-2.1.4.min.js"></script>
<script src="script/ajax_script.js"></script>
</body>
</html>
Ajax脚本$(document).ready(
function(){
$('#login').click(function(){
$.post("ajax.php",
{
username : $('#username').val(),
password : $('#password').val()
},
function(data){
if (data=="0") {
$('.login_box').addClass("overflow");
var $login_form = $('.login_form').addClass("error_shake");
$('.login_form input').addClass("error_border");
setTimeout(function() {
$login_form.removeClass("error_shake");
}, 300);
$('#result').html('Forkert brugernavn eller adgangskode!');
}
}
);
});
}
);
PHP require('includes/db.php');
if ( isset($_POST['username']) && isset($_POST['password']) ) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = $db->query($query); // udfører databaseopkald og sætter det ind i vores query
$rows = $result->num_rows; // hent antal rækker og sæt det ind i resultat
if($rows == 1){
$_SESSION['logged_in'] = TRUE;
while ($row = $result->fetch_assoc()) {
$_SESSION['user_id'] = $row['ID'];
}
header("Location:secret.php"); //THIS WON'T WORK
}
else{
echo "0";
}
}
重定向到
的秘密站点<?php
session_start();
if ($_SESSION['logged_in'] != TRUE) {
header("Location: index");
exit();
}
?>
Top secret!!!
我希望有人知道怎么做,或者有一些想法。谢谢!
由于您正在进行Ajax调用,因此无法以这种方式重定向。如果你想,你可以从你的php在你重定向的地方返回一个字符串,你想重定向到的路径,然后在你的javascript做一些像location.href = "your_secret_url"
重定向。
(未测试)例子:
PHP:if($rows == 1){
$_SESSION['logged_in'] = TRUE;
while ($row = $result->fetch_assoc()) {
$_SESSION['user_id'] = $row['ID'];
}
// Yeah, we're logged in!
$result = array(
'result' => 1,
'location' => '/secret.php',
);
}
else{
// Nope.
$result = array(
'result' => 0,
);
}
// return the result
echo json_encode($result);
die();
JS:
$.post("ajax.php",
{
username : $('#username').val(),
password : $('#password').val()
},
function(data){
if (data.result == 0) {
$('.login_box').addClass("overflow");
var $login_form = $('.login_form').addClass("error_shake");
$('.login_form input').addClass("error_border");
setTimeout(function() {
$login_form.removeClass("error_shake");
}, 300);
$('#result').html('Forkert brugernavn eller adgangskode!');
} else if (data.result == 1) {
location.href = data.location;
}
}, "json" // get content which has been returned in json format
);
编辑可能重复:使用AJAX调用PHP函数,但重定向不起作用
将ajax调用的页面重定向到secret.php。这不会影响正在从中运行ajax请求的调用页面。