PHP -成功登录后执行javascript并重定向到新页面


PHP - Execute javascript and redirect to a new page after successful login

我有这个login.php和一个javascript来同步日期和时间从客户端浏览器到我的openwrt路由器的服务器。我想要的是,每次用户成功登录时,它都会执行javascript,然后重定向到status.php,也就是主页。以下是我到目前为止所做的尝试

if ($_POST['username'] == $user[0] && $_POST['password'] == $pass[0]) {
        $_SESSION['loggedin'] = 1;
        echo '<script src="date.js"></script>';
        header("Location: status.php");
        exit;
    }

但是它给了我这个错误:

警告:无法修改报头信息-报头已由(输出开始于/www/login.php:10)在/www/login.php第11行

如何修复?

你们中的一些人可能认为我的问题是重复的,但请理解,我需要在成功登录后执行javascript。

问题是您无法在回显后发送标头。为了解决这个问题,ob_start用于打开输出缓冲,这意味着当使用echo时,不发送输出,而是存储在内部缓冲区中,当我们调用header()后调用ob_end_flush时,内部缓冲区的内容将被刷新,输出缓冲将停止。

试题:

ob_start();
echo '<script src="date.js"></script>';
header("Refresh: 5; url=status.php");
ob_end_flush();

不能放header..在"echo .."或其他HTML元素..之后

为什么你要把你的date.js放上去?

if ($_POST['username'] == $user[0] && $_POST['password'] == $pass[0]) {
    $_SESSION['loggedin'] = 1;
 //   echo '<script src="date.js"></script>';
    header("Location: status.php");
    exit;
}

将JavaScript代码放在php代码之外,打开php代码在JavaScript代码之前关闭php代码将JavaScript代码正常地不加回显然后为php添加开始和结束标签