登录后自动返回到用户登录前的页面,这在实际应用中非常常见。比如,用户从index.php页面通过登录链接跳转到login.php,登录成功后提交数据到check.php文件,检查数据是否正确。如果数据正确,则使用header('location: url')指令跳转到指定的页面。这种方法虽简单直接,但也存在一定的局限性,因为它需要人工指定返回的路径,不够自动,操作起来不够方便。
使用$_SERVER['HTTP_REFERER']变量来获取前一个页面,这并不是一个理想的选择。例如,在上述示例中,当登录成功后,如果使用$_SERVER['HTTP_REFERER']从check.php跳转,check.php可能会跳转到login.php,而不是用户实际登录前的index.php页面。因此,这种方法存在较大风险。
为了解决这个问题,可以将url保存到cookie中。具体操作是在index.php页面上调用setcookie('url','index.php'),并在提交数据后,通过$_COOKIE['url']随时获取登录前的页面。然而,这种方法也有缺点,如果网站上有100个页面都包含登录链接,那么就需要在这100个页面上都修改cookie的url设置。更好的方法是在login.php中检查前一个页面,然后设置cookie。这样,就不是让100个页面都去修改cookie,而是将这个任务交给login.php处理。
这种方式不仅更加自动化,还可以避免因$_SERVER['HTTP_REFERER']可能导致的错误。通过在login.php中设置cookie,可以确保用户总是被重定向回登录前的页面,而不是前一个页面。这种方法可以提高用户体验,并减少错误的发生。
下载本文