使用PHP和Javascript重定向并设置cookie
好吧,我会尽量保持这个简单和甜蜜。我正在我的wesbsite上工作,当用户第一次加载站点时,它当前会加载一个启动页面。这就是我想要的行为使用PHP和Javascript重定向并设置cookie,php,javascript,redirect,Php,Javascript,Redirect,好吧,我会尽量保持这个简单和甜蜜。我正在我的wesbsite上工作,当用户第一次加载站点时,它当前会加载一个启动页面。这就是我想要的行为 如果用户以前从未访问过该站点,请重定向到初始页面 如果用户以前访问过该站点并且不想看到飞溅,请不要重定向 若用户喜欢splash并希望在新会话中查看,请显示splash页面 这些基本上都是我正在处理的场景,真的想不出更多了,在过去的几个小时里,我一直在尝试破解一些东西,但没有运气 index.php <?php setcookie("visit", "t
<?php
setcookie("visit", "true", mktime (0, 0, 0, 12, 31, 2014), "/"); // delete cookie on 31DEC14
$cookie_splash = $_COOKIE['splash'];
$cookie_visit = $_COOKIE['visit'];
$cookie_visit_now = $_COOKIE['visit_now'];
do {
if ($cookie_splash == '' && $cookie_visit == '' && $cookie_visit_now == '') {
/*
echo "<script type = text/javascript>";
echo "window.location = 'http://chrisrjones.com/splash.php'";
echo "</script>";
*/
header('Location: splash.php');
}
if ( $cookie_splash == 'false' && $cookie_visit_now == 'true') {
break;
}
if ( $cookie_splash == 'true' && $cookie_visit_now == 'false') {
/*
echo "<script type = text/javascript>";
echo "window.location = 'http://chrisrjones.com/splash.php'";
echo "</script>";
*/
header('Location: splash.php');
}
if ( $cookie_splash == 'true' && $cookie_visit == 'true' && $cookie_visit_now == "false") {
/*
echo "<script type = text/javascript>";
echo "window.location = 'http://chrisrjones.com/splash.php'";
echo "</script>";
*/
header('Location: splash.php');
}
if ($cookie_splash == 'true' && $cookie_visit == 'true' && $cookie_visit_now == 'true') {
break;
}
}
while (0);
?>
<p>
<form name="tosplashornottosplash" action="scripts/splash-process.php" method="post" onSubmit="return valForm()">
Splash pages are stupid.
<input type="radio" name="splash" id="splash_false" value="false" /> No
<input type="radio" name="splash" id="splash_true" value="true" /> Yes
<input type="submit" name="splashSubmit" onClick="return valForm(tosplashornottosplash)" value="Enter" />
</form>
</p>
<?php
setcookie("visit", "true", mktime (0, 0, 0, 12, 31, 2014), "/"); // delete cookie on 31DEC14
setcookie("visit_now", "true", NULL, '/'); // cookie should expire / delete at end of session.
$splashvar = $_POST["splash"];
if ( $splashvar == "false" ) {
// create cookie - splash 1
setcookie("splash", "true", time()+3600, '/'); // expires in one hour
}
else {
// create cookie - splash 0
setcookie("splash", "false", time()+3600, '/'); // expires in one hour
}
echo "<script type = text/javascript>";
echo "window.location = 'http://chrisrjones.com/index.php'";
echo "</script>";
?>
尝试以下操作:
<?php
if (($_GET['nosplash'] == '1') || ($_COOKIE['nosplash'] == '1')) {
setcookie('nosplash','1',strtotime('+1 year'),'/');
header('Location: http://'.$_SERVER['HTTP_HOST'].'/index2.html');
exit;
}
?><html>
<head>
<title>Splash screen</title>
</head>
<p>
Splash screen
</p>
<p>
<a href="/index2.html">continue (and show splash screen on next visit)</a><br />
<a href="<?=$_SERVER['SCRIPT_NAME']?>?nosplash=1">continue and don't show the splash again</a>
</p>
</html>
闪屏
闪屏
好吧,所以我认为问题不在于我的代码,而在于理解浏览器的行为。如果我现在在FF 18.0.2中访问该网站(chrisrjones.com),并在splash pages上选择“No”是愚蠢的,那么我可以在单击enter后进入该网站
但是,如果我保持选项卡打开,并且FF设置为在重新启动时保持选项卡打开(不管它叫什么,你知道我的意思),然后退出FF,然后重新启动它,会话cookie将永远不会过期。因此,当我刷新页面时,启动页面不会加载。但是,如果关闭选项卡,然后退出浏览器,然后重新加载页面,则会加载启动页面。(这就是我想要的)
另一方面,浏览器关闭后,Chrome似乎不会删除会话cookie,这就是为什么我在使用Chrome时遇到如此大的困难
我现在更好地理解了为什么事情会这样,并意识到这并不全是我糟糕的编码实践。出了什么问题?什么需要修改?请提供更多信息。另存为test.php
,看看它是否达到了您的目的。您可能需要编辑硬编码的/index2.html
,才能转到第二页。