[解決済み] Cookieが有効かどうか確認する
2023-06-21 03:20:03
質問
私はjavascriptとセッションを必要とするページで作業しています。私はすでにjavascriptが無効になっている場合、ユーザーに警告するコードを持っています。さて、私はセッションIDがクッキーに保存されているので、クッキーが無効になっているケースを処理したい。
私はちょうど2つのアイデアを考えてきました。
- リンクとフォームにセッション ID を埋め込む
- クッキーが無効になっている場合、ユーザーにクッキーを有効にしなければならないことを警告する (クッキーが無効になっているかどうかを検出する手助けが必要です)
これにアプローチする最良の方法は何でしょうか?ありがとうございます。
EDIT
リンク先の記事に基づいて、私は自分自身のアプローチを思いついたので、共有しようと思いました。(PHPのセッションが、以下のような名前のクッキーに保存されると仮定します。
PHPSESSID
)
<div id="form" style="display:none">Content goes here</div>
<noscript>Sorry, but Javascript is required</noscript>
<script type="text/javascript"><!--
if(document.cookie.indexOf('PHPSESSID')!=-1)
document.getElementById('form').style.display='';
else
document.write('<p>Sorry, but cookies must be enabled</p>');
--></script>
どのように解決するのですか?
JavaScript
JavaScriptでは、単純に cookieEnabled プロパティをテストします。これはすべての主要なブラウザでサポートされています。古いブラウザを扱う場合は、クッキーを設定し、それが存在するかどうかをチェックすることができます。(借用元 モダナイザー ):
if (navigator.cookieEnabled) return true;
// set and read cookie
document.cookie = "cookietest=1";
var ret = document.cookie.indexOf("cookietest=") != -1;
// delete cookie
document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
return ret;
PHP
PHPでは、ページを更新したり、別のスクリプトにリダイレクトしたりする必要があるため、かなり複雑です。ここでは、2つのスクリプトを使用します。
somescript.php
<?php
session_start();
setcookie('foo', 'bar', time()+3600);
header("location: check.php");
check.php
<?php echo (isset($_COOKIE['foo']) && $_COOKIE['foo']=='bar') ? 'enabled' : 'disabled';
- PHPでCookieが有効になっているかどうかを検出する
- PHPとCookie、いいとこ取り!
関連
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで変数が文字列かどうかをチェックする
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?