こんばんは、お世話になっております。
事あるたびに投函しているようで恐縮なのですが、調べてもその原因がわからず、皆様のアドバイスを頂戴できればと投函させて頂きます。
下記のソースは、ログイン認証時のものですが、ID、パスワードを入力時、次回より自動ログインにチェックを入れたかの分別によりクッキーを送信する内容を変えているものです。
しかしながら、チェックを入れたときは無事クッキーがセットされるのですが、チェックを入れないときはクッキーがセットされません。
お忙しい中恐縮ですが、ソースの誤りはもちろん、クッキーがセットされないポイントなど御座いましたら、アドバイスいただければ幸いに思います。宜しくお願い致します。
$addr = $_SERVER['REMOTE_ADDR'];
if($check == "auto"){//自動ログインにチェックを入れた場合
setcookie("addr", $addr, time() + 60*60*24*30, "/");
setcookie("key_no", $key_no, time() + 60*60*24*30, "/");
}
else{//チェックなし。ブラウザを閉じるとクッキーを無効
setcookie("login", $addr, 0, "/");
setcookie("key_no", $key_no, 0, "/");
}
No.4
- 回答日時:
$addr = $_SERVER['REMOTE_ADDR'];
if($check == "auto"){//自動ログインにチェックを入れた場合
setcookie("addr", $addr, time() + 60*60*24*30, "/");
setcookie("login", '', time() + 60*60*24*30, "/");
setcookie("key_no", $key_no, time() + 60*60*24*30, "/");
}
else{//チェックなし。ブラウザを閉じるとクッキーを無効
setcookie("addr", 'NG', time() + 60*60*24*30, "/");
setcookie("login", 'NG', time() + 60*60*24*30, "/");
setcookie("key_no", 'NG', time() + 60*60*24*30, "/");
}
ソースを上記のように変更してみては、いかがでしょうか?
これでチェックしない場合も、各クッキーに'NG'が書き込まれるはずですよね?
書き込まれないので有れば、それ以外の原因です。
チェックの場合は、addrに値,loginは空欄,key_noに値
未チェックの場合は、addrに値,loginは値,key_noに値
が書き込まれるのが正常な動作なのでしょうか?
NickAomori様
こんばんは。お付き合いいただき有難う御座います。
只今、ご指導いただいた内容で試したところ、無事クッキーをセットすることが出来ました。
しかしながら、チェックを入れない場合は、「ブラウザを閉じたらクッキーを無効に・・」という事を踏まえ、time() + 60*60*24*30,を
time()-100や、0とするとセットされないのです。
time()+60*3であれば、セットされるものの、時間の経過と共に、当然クッキーが無効となってしまいます。
今回の設定は、ブラウザを閉じたらクッキーを無効(削除?)にしたく、その理由とは、ログイン認証した者はログアウトするまで新しいブラウザを開いてもログインを継続させたい、といった考えから出てきた内容です。
些か当初の質問に言葉足らずなところが御座いましたが、ブラウザを閉じるまでクッキーを有効にする、という設定は、有効期限の箇所を、0 にすれば宜しいのですよね?でも何故かクッキーがセットされません。
time() + 60*60*24*30 だとセットされるのですが・・・。
幾度の渡るアドバイスに感謝しております。
No.3
- 回答日時:
何度もすみません。
以下の様に変更してはいかがですか?$addr = $_SERVER['REMOTE_ADDR'];
if($check == "auto"){//自動ログインにチェックを入れた場合
setcookie("addr", $addr, time() + 60*60*24*30, "/");
setcookie("key_no", $key_no, time() + 60*60*24*30, "/");
}
else{//チェックなし。ブラウザを閉じるとクッキーを無効
setcookie("login", $addr, time()-100, "/");
setcookie("key_no", $key_no, time()-100, "/");
}
NickAomori 様
こんばんは。何度も有難う御座います。
只今、time()-100に変更してみましたが、クッキーはセットされないようです。
また、同じ名前login→addrでも行ってみましたが、これもセットされないようです。
チェックを入れないとクッキーがセットされない状況になっています。
度重なるご指導、感謝いたします。
No.2
- 回答日時:
>しかしながら、チェックを入れたときは無事クッキーがセットされるのですが、チェックを入れないときはクッキーがセットされません。
どのクッキー名にセットされないのでしょうか?
セットされないとは、値が入らない?値が空にならない?のどちらでしょうか?
ソースから、私が考えると
チェックがあれば、以下のクッキーに書込
addr に $addr
key_no に $key_no
をセットし、30日間
チェックがなければ、以下のクッキーを無効
login に$addr
key_no に $key_no
(addrのクッキ名ーがないですよね?addrは一度セットされてしまっていれば、30日間は有効のままですよね?、ここかな?)
クッキーがチェック有りと、チェック無しでクッキー名前が違うのですが、それですか?
あと、クッキーを無効にするので有れば、有効期限を0にすれば良いです。
NickAomori 様
こんにちは。お忙しい中、早速のお返事有難う御座います。
>ソースから、私が考えると......
仰る通りです。クッキーの名前が違うのはあえてそうしているのですが、
チェックがあった場合30日間有効で、もう一方は仮に1人の方が違うIDを
持っていた場合、新たにブラウザを立ち上げた場合、ログイン中に他の
IDでログインしないようするための処置として設定いたしました。
テストで状況確認は30日間有効のチェックを削除(ログアウト)して
行っているので、チェックのあった場合のクッキーはない状態で確認しています。
NickAomori様のアドバイスを察すると、キックーは同じ名前でセットすべきなのでしょうか・・。
No.1
- 回答日時:
setcookie("login", $addr, 0, "/");
setcookie("key_no", $key_no, 0, "/");
クッキーの有効期限が0だからじゃないですか?
setcookie("login", $addr, time() + 60*60*24*30, "/");
setcookie("key_no", $key_no, time() + 60*60*24*30, "/");
としたらどうですか?
NickAomori様
はじめまして、おはよう御座います。
休み明けの朝のご回答、ありがとう御座います。
>クッキーの有効期限が0だからじゃないですか?
最初、この設定で躓いていたのですが、この有効期限を0にしているのは、ブラウザを閉じたらクッキーを無効としたいための処置としています。
ブラウザを閉じたら無効にするための記述は違うのでしょうか?
色々と調べて居てはいるものの、無効にするには有効期限を省略と説明があるものの、そのあとのパスの指定もあるので、あえて0として記述しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Windows 10 dアカウントでログイン 5 2022/11/25 17:26
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Chrome(クローム) Cookieを削除 他サイトでの自動ログインなどの設定も削除されますか パソコン クロームです 1 2022/09/10 21:47
- その他(メールソフト・メールサービス) メールアプリ spark にauメールが入れられない!!! 1 2022/08/19 23:51
- PHP ログインした掲示板ですが、直接開かないような設計するには? 2 2022/10/29 16:30
- その他(セキュリティ) Facebookアカウントを乗っ取られ、ログインも出来ずパスワードの再設定もできずに困っている 2 2023/02/17 14:24
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cookieにカンマ区切りでつめこ...
-
ブラウザ間でCookieを共有する...
-
クッキーがセットされない
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
エクセルシート名の制限を変更...
-
ピクセル,dpiから容量(バイト...
-
Excel VBA メール作成について ...
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
Line Inputにて改行があっても...
-
SQLで1バイト、2バイト混在...
-
バイナリとBCDコード
-
DataGridViewの特定列に入力さ...
-
[VBScript][wsh]byte単位でのデ...
-
バイト列とバイナリ列の違いが...
-
3バイト文字(UTF-8)をprintfで...
-
ビットスワップとバイトスワッ...
-
int型(2バイト)データの分割
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
COleDateTime とtime_t
-
異なるドメインのサイトでcooki...
-
PHPのCookieが有るか無いかで、...
-
PHPの可変変数で数字部分を演算
-
ブラウザ間でCookieを共有する...
-
ログインに関するフラグについて
-
クッキーが消せない
-
cookieが無効のブラウザへの対...
-
なんでブラウザでPHPを動かすた...
-
クッキーの発行と取得
-
cURLでcookieを送受信する方法...
-
現在日時から、任意の時日時を...
-
クッキーを連想配列で扱う方法...
-
PHPで違うサーバーのスクリプト...
-
javascriptでcookieを削除するには
-
cookieにカンマ区切りでつめこ...
-
一度回答した人をはじくアンケ...
-
Perlのフリーソフトの掲示板
-
LWP::Simple;でWebページを取得...
-
ゲームノベルのような分岐のあ...
おすすめ情報