2012-01-25 28 views
1

Cookieを使用してスプラッシュページに一度リダイレクトするにはどうすればよいですか?クッキーを使用したPHPのリダイレクト

私はこれに私のsplash.phpページでクッキーを設定しています:

<?php 
$expire = time()+60; 
setcookie("no_splash", "1", $expire); 
?> 

そのページでは、これで私のindex.phpへのリンクがあります:

<?php 
if($_COOKIE['no_splash']== '1') { 
    header("Location: index.php"); 
    echo "it works"; 
} else if($_COOKIE['no_splash']!= '1') { 
    header("Location: splash.php"); 
}; 
?> 

私は入れませんリダイレクトループエラーですが、理由を説明することはできません。

<?php 
if($_COOKIE['no_splash']== '1') { 
    echo "it works"; 
} else { 
    header("Location: splash.php"); 
}; 
?> 

たぶんisset($_COOKIE['no_splash'])ではなく、 `$ _COOKIE [ 'no_splash'] ==よりを '1':

+0

60秒後にCookieの有効期限が切れます。それが理由だろうか? – OptimusCrime

答えて

2

あなたはindex.phpファイルからindex.phpにリダイレクトされます。したがって、ループです。

は同じものであるだけで

if($_COOKIE['no_splash'] != '1') { 
    header("Location: splash.php"); 
    exit; 
} 

または実際

if(!$_COOKIE['no_splash']) { 
    header("Location: splash.php"); 
    exit; 
} 

であるためにあなたのコードを変更し

+0

+1彼は最初の条件を削除し、2番目の条件を残すだけです。 – Josh

+1

最後の行の括弧の後に ';'を削除することを忘れないでください。 – Josh

+0

良い点。 –

0
$expire = time()+60; 

header("Set-Cookie: no_splash=1; expires=$expire; path=/"); 
header("Location: index.php"); 
+2

ヘッダーのリダイレクト行の後ろには必ず 'exit;'を置く必要があります。そうしないと、PHPは残りのファイルを実行します。 –

+0

@Grim +1。それはあなたが通常、難しい方法で学ぶものです。 – ppp

+0

これは、彼のスプラッシュページがルートディレクトリにあると仮定して、これ以外の何も達成しません。 – Josh

0

は、あなたは、単に試したことがありますか?
また、これはあなたが望むものではありませんが、有効期限を設定しない(または0に設定する)だけで、ブラウザーが閉じられたときにクッキーが削除されるため、彼らは跳ね返る必要はありません。

+0

これは動作しません。インデックスページにアクセスしたときにクッキーが存在すると、インデックスページ、つまりループにリダイレクトされます。 –

+0

Woops、はい、リダイレクトを削除する必要はありませんか? –

+0

index.phpへのリダイレクトは全くありません。私は思っていません。 –

関連する問題