質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

3519閲覧

Cookieが保存されない

na___r

総合スコア12

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/06/25 06:31

前提・実現したいこと

PHPで簡単なカウントアプリを作っています。
formで「カウント」を押すとカウントアップされ、「リセット」で値が0になるというものです。

COOKIEで値を保存したいのですが、保存されずに困っています。

発生している問題・エラーメッセージ

ローカル環境では1つ目のCOOKIEは保存されます。
しかし、サーバーに環境を移すとCOOKIEが保存されず、NULLになってしまいます。

setcookie('count', $count,time()+86400);

COOKIEの削除はローカルでもサーバーでも不可能です。
ローカルでは$count=0でお茶を濁していました。

setcookie('count','',time()-100000);

該当のソースコード

PHP

1<?php 2 3/* COOKIE['count']が存在すれば読み込み、なければ0を代入する */ 4if(isset($_COOKIE['count'])){ 5 $count=$_COOKIE['count'];} 6 else{ 7 $count=0; 8 } 9 10/* POST['count']の入力があったとき$countに+1してCOOKIEに格納する */ 11if(isset($_POST['count'])){ 12 $count++; 13 setcookie('count', $count,time()+86400); 14 }else{;} 15 16/* POST['reset']の入力があったときCOOKIEを削除する */ 17if(isset($_POST['reset'])){ 18 setcookie('count','',time()-100000); 19 }else{; 20 } 21 22?>

HTML

1<div class="count"><?= $count ?></div> 2<form action="count.php" method="post"> 3<input name="count" type="submit" value="カウント"> 4<input name="reset" type="submit" value="リセット"> 5</form>

試したこと

1日ほどコードを眺めたりCOOKIEについて検索したりしましたがまったく解決法が見えません。
お手数ですがお力をお借りできれば幸いです。

補足情報(FW/ツールのバージョンなど)

ローカルではXAMPP、サーバーではロリポップを使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

cookie の挙動の切り分けは、ブラウザの開発ツールでヘッダ情報を確認するのが初手です。

投稿2019/06/25 06:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

na___r

2019/06/26 03:01

こんな詳細なエラーが見れるのですね、知りませんでした。 おかげで自己解決することができました!ありがとうございます!
退会済みユーザー

退会済みユーザー

2019/06/26 03:05

一応何が原因だったのか記せるなら記しておいて下さい。 後日別の方の役に立つ可能性があります。
退会済みユーザー

退会済みユーザー

2019/06/26 03:06

入れ違いになりましたね^^;
guest

0

PHP

1<?PHP 2$count=isset($_COOKIE['count'])?(int)$_COOKIE['count']:0; 3if(isset($_POST['count'])){ 4 $count++; 5 setcookie('count',$count,time()+86400); 6} 7if(isset($_POST['reset'])){ 8 setcookie('count','',time()); 9} 10var_dump($count); 11?> 12<form method="post"> 13<input type="submit" value="reload"> 14<input type="submit" name="count" value="set"> 15<input type="submit" name="reset" value="reset"> 16</form>

場合によってはBOMが悪さする場合もあるので、念の為BOMなしで保存してみてください

投稿2019/06/25 06:45

編集2019/06/25 06:48
yambejp

総合スコア114777

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

na___r

2019/06/26 03:03

BOMはダメなんですね。ばっちりついていました。 詳細なコードまでありがとうございます。お陰様できちんと動作するアプリケーションができました!ありがとうございました!
guest

0

開発ツールを覗いたところ、一律で読み込んでいたscript.jsが邪魔をしていたようでした。
質問内容とは全く別のところで躓いていたようでお恥ずかしいです。
削除したらきちんと動作するようになりました。

回答くださった皆様ありがとうございました。

投稿2019/06/26 03:05

編集2019/06/26 03:07
na___r

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問