質問があります。私のウェブサイトのイントロであるindex.phpページがあります。イントロが開始および終了すると、home.phpページにリダイレクトされますが、このイントロページをユーザーが1回だけ表示するようにします。コンピューターでは、ユーザーが既にイントロページにアクセスしている場合は、index.php(イントロ)ページに移動せずに、リダイレクトでホームページに送信されます。PHPでそれを達成するにはどうすればよいですか?
4 に答える
index.php
if(isset($_COOKIE['visit'])){
header("Location:home.php");
}
Your Intro
setCookie("visit","1",time()+60*60*7*12);
ユーザーにCookieを送信して、ユーザーが戻ってきたときにそのCookieを認識できるようにすることができます。Cookieの設定は適切ではなく、ユーザーがCookieを削除する可能性があります。
たぶん、ユーザーが最初にホームページにアクセスしたときにCookieを設定してみることができます。そうすれば、次にユーザーがサイトにアクセスしたときに、イントロが再生される前にCookieを探すことができます。
これを行う100%の方法はありません。現在のユーザー(たとえば、このサイトにアクセスしたことがあるユーザー)のデータを使用$_SESSION
または$_COOKIE
保存できますが、別のブラウザーでサイトを開くと、ユーザーは再びイントロを表示します。ユーザーはCookieをクリアすることもできるので、ユーザーは再びイントロを見ることができます。
サイトにメンバーシップが実装されていて、ユーザーがログインしたままでいる場合は、この情報をデータベース(または他のデータソース)に保存できるため、ユーザーにはイントロが表示されません(ログアウトしない限り)。
セッションを使用して現在のユーザーの情報を保存する例(メンバーシップなどは必要ありません。サイトにアクセスするすべてのユーザーのデータが保存されるため、機能します)。
<?php
// index.php
// if you prefer to use cookies instead of sessions
// then replace $_SESSION with $_COOKIE
$hasVisited = ($_SESSION['hasVisited'] === true);
if($hasVisited) {
header("Location: home.php");
die();
}
// here you show your intro
// user has visited this site, so:
$_SESSION['hasVisited'] = true;
?>
Cookieとセッションの違いの説明:Cookieとセッション。