php重定向(如果已登录)

php重定向(如果已登录),php,Php,我使用的是一个简单的登录表单;如果已经登录的用户进入登录页面,我想重定向 登录表单 <?php session_start(); ?> <!DOCTYPE html> <html> <body> <form action="login.php" method="POST"> <input type="text" placeholder="username" name="uname" required /><br

我使用的是一个简单的登录表单;如果已经登录的用户进入登录页面,我想重定向

登录表单

<?php session_start(); ?>
<!DOCTYPE html>
<html>
<body>
<form action="login.php" method="POST">
    <input type="text" placeholder="username" name="uname" required /><br>
    <input type="password" placeholder="password" name="pwd" required /><br>
    <input type="submit" value="Login">
</form>
  <script>
    <?php if(isset($_SESSION['user'])&&!empty($_SESSION['user']))
            header("Location: booking.php");
          else if(isset($_SESSION['login_status']) && $_SESSION['login_status'] !='') { ?>
    alert('<?php echo $_SESSION['login_status']; ?>');
    <?php  unset($_SESSION['login_status']); session_destroy ();} ?>
</script>

</body>
</html>



警报(“”);
用于数据库连接和查询的PHP

<?php
require_once '../config.php';
session_start();
$user   =   $_POST['uname'];
$pwd    =   $_POST['pwd'];
// To protect MySQL injection (more detail about MySQL injection)
$user = stripslashes($user);
$pwd = stripslashes($pwd);
$pwd    =   sha1($pwd);
$query="SELECT * FROM user WHERE uname='$user' and pwd='$pwd' and isActive=1";
$stmt=$conn->prepare($query);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);

$result=$stmt->fetch();
if($result){
        $_SESSION['user'] = $result['fullname'];
        $_SESSION['login_status'] = "Sucessfully Logged in";
        header("Location: booking.php");
    }else{
        $_SESSION['login_status'] = "Login Credentials incorrect";
        header("Location: " . $_SERVER["HTTP_REFERER"]);
    }
?>

这段代码非常适合我的本地主机,但当我将其放入共享主机时,如果我已经登录并转到登录页面,它不会将我重定向到page->booking.php。 如果我在这里给一个alret

<?php if(isset($_SESSION['user'])&&!empty($_SESSION['user']))
                header("Location: booking.php");

您需要在html代码之前使用
标题。尝试以下方法:

<?php session_start();
if(isset($_SESSION['user'])&&!empty($_SESSION['user'])){
   header("Location: booking.php");
   exit();
}
 ?>
<!DOCTYPE html>
<html>
<body>
<form action="login.php" method="POST">
    <input type="text" placeholder="username" name="uname" required /><br>
    <input type="password" placeholder="password" name="pwd" required /><br>
    <input type="submit" value="Login">
</form>
  <script>
    <?php if(isset($_SESSION['login_status']) && $_SESSION['login_status'] !='') { ?>
    alert('<?php echo $_SESSION['login_status']; ?>');
    <?php  unset($_SESSION['login_status']); session_destroy ();} ?>
</script>

</body>
</html>



警报(“”);
您需要在html代码之前使用
标题。尝试以下方法:

<?php session_start();
if(isset($_SESSION['user'])&&!empty($_SESSION['user'])){
   header("Location: booking.php");
   exit();
}
 ?>
<!DOCTYPE html>
<html>
<body>
<form action="login.php" method="POST">
    <input type="text" placeholder="username" name="uname" required /><br>
    <input type="password" placeholder="password" name="pwd" required /><br>
    <input type="submit" value="Login">
</form>
  <script>
    <?php if(isset($_SESSION['login_status']) && $_SESSION['login_status'] !='') { ?>
    alert('<?php echo $_SESSION['login_status']; ?>');
    <?php  unset($_SESSION['login_status']); session_destroy ();} ?>
</script>

</body>
</html>



警报(“”);
您正在解除elseif语句中的日志记录状态并销毁会话:

<?php if(isset($_SESSION['user'])&&!empty($_SESSION['user']))
            header("Location: booking.php");
          else if(isset($_SESSION['login_status']) && $_SESSION['login_status'] !='') { ?>
    alert('<?php echo $_SESSION['login_status']; ?>');
    <?php  unset($_SESSION['login_status']); session_destroy ();} ?>

您正在取消登录\u状态并在elseif语句中销毁会话:

<?php if(isset($_SESSION['user'])&&!empty($_SESSION['user']))
            header("Location: booking.php");
          else if(isset($_SESSION['login_status']) && $_SESSION['login_status'] !='') { ?>
    alert('<?php echo $_SESSION['login_status']; ?>');
    <?php  unset($_SESSION['login_status']); session_destroy ();} ?>

Myabe在PHP上的版本。。。尝试编写完整的IF语句。。。如果(var=1){ok}或者{header.location}使用javascript重定向,查看它是否工作,只是为了调试
window.location.replace(“booking.php”)
session_start()
不是应该在php代码的第一行吗?@roy我已经全部尝试过了;事实上,处于相同位置的警报执行良好。因此,我得出结论,问题只在于重定向,但同样的代码在另一个页面中运行良好,这让我完全混淆了session_start()的文件;最后的php?>Myabe是php上的版本。。。尝试编写完整的IF语句。。。如果(var=1){ok}或者{header.location}使用javascript重定向,查看它是否工作,只是为了调试
window.location.replace(“booking.php”)
session_start()
不是应该在php代码的第一行吗?@roy我已经全部尝试过了;事实上,处于相同位置的警报执行良好。因此,我得出结论,问题只在于重定向,但同样的代码在另一个页面中运行良好,这让我完全混淆了session_start()的文件;最后的php?>谢谢@Ryan.Hunt:)解决了这个问题。事实上,我已经试过了,但我错过了出口();再次感谢您的帮助:)谢谢@Ryan.Hunt:)这解决了问题。事实上,我已经试过了,但我错过了出口();再次感谢您的帮助:)