PHPの講座で課題が出ましたが、解答がないのでここで質問させてください。
PHPでCookieを使って、下記のような訪問回数を表示するカウンターを作りたいです。
自分の書いたコードは下記ですが、どうもスマートでないとわかります。
無駄もあると思います。
どう考えなおせばもっとすっきりするか、コードが整理されてスマートなものになるか
教えてください。
<?php
//formのデータを受け取る
if(isset($_POST["comment"])){
$comment=$_POST["comment"];
echo $comment;
}
$count = $_COOKIE["count"];
if(!isset($count)){
$count = 0;
}else{
$count++;
}
setcookie("count", $count, time()+60*60*24);
if($count==0){
print(" はじめまして");
}else if($count == 1){
print(" 2回目ですね!");
}else{
print(" たくさん来てくれてありがとう");
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> Submit the form data</title>
</head>
<body>
<h1>submit the form data</h1>
<form action="index.php" method="POST">
<input type="text" name="comment"/><br/>
<input type="submit" value="send"/>
<input type="submit" name="clear" value="clear">
</form>
</body>
</html>
No.1ベストアンサー
- 回答日時:
dice_zk1 さん
・・・・どうもスマートでない・・・・・・・・
何をしたいのか、何をスマートとお考えかは解りませんが、
まずは間違いを直さないといけないのでは。
ご参考に↓
https://oshiete.goo.ne.jp/qa/13479077.html
<?php
//formのデータを受け取る
if(isset($_POST["comment"])){
$comment=$_POST["comment"];
echo $comment."<br>";
}
if(!isset($_COOKIE["count"])){
$count = 0;
}else{
$count = $_COOKIE["count"] + 1;
}
setcookie("count", $count, time()+60*60*24);
if($count==0){
print(" はじめまして");
}else if($count == 1){
print(" 2回目ですね!");
}else{
print(" たくさん来てくれてありがとう");
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> Submit the form data</title>
</head>
<body>
<h1>submit the form data</h1>
<form action="#" method="POST">
<input type="text" name="comment"/><br/>
<input type="submit" value="send"/>
<input type=reset value="clear">
</form>
</body>
</html>
gura_さん回答有難うございます。
なんとか間違いなどを正して、次のようなコードにたどり着きました。
課題は解決できました。
大変お世話になりました。また機会がありましたらよろしくお願い致します。
<?php
//訪問回数判定
if(isset($_COOKIE['visit'])){
$counter = $_COOKIE['visit'] + 1;
setcookie('visit',$counter,time()+60*60*24);
$_COOKIE['visit'] = $_COOKIE['visit'] + 1;
echo 'こんにちは!あなたの訪問は'.$_COOKIE['visit'].'回目です<br>';
}else{
echo 'ようこそ!初めての訪問ありがとうございます!<br>';
setcookie('visit',1,time()+60*60*24);
}
//訪問回数10回目ならカウントリセット
if($_COOKIE['visit'] >= 9){
setcookie('visit',0,time()-60);
}
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP php ログイン 1 2022/11/01 00:24
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンをsessionで使いたい
-
アップロードの際にファイルパス
-
フォームに入力された値を計算...
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
【PHP】 文字サイズの変更につ...
-
PHP ボタンが押されたら処理を...
-
チェックボックスから複数のval...
-
チェックボックスでの送信
-
チェックボックスのvalueに変数...
-
フォーム入力パスワードとラン...
-
入力フォーム→確認画面→送信画...
-
PHPで受け取ったパラメータを別...
-
cookieでチェックボックスの状...
-
サーバへのアップロードが出来...
-
フォームへの前回入力値をクリ...
-
<input type="hidden" >で配列...
-
PHPのsubmitボタンが複数ある場合
-
PHPで、ボタンを押すと同じペー...
-
連動させたいセレクトボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
PHPで画像の渡しが上手く行きま...
-
POSTデータのNAME属性をVALUEに...
-
UPDATEの記述について
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
画面が更新されてもチェックボ...
-
DBの値をチェックボックスに反...
-
PHPでクリックするたびに変数を...
-
同じページでフォームデータを...
-
smartyでチェックボックスをチ...
-
入力フォーム→確認画面→送信画...
-
パラメーターを隠す
-
チェックボックスによる検索(...
-
チェックボックスのvalueを連結...
おすすめ情報
参考にさせていただき、次のように修正したらできました。
ただ、はじめての訪問のときにUndefinedのエラーがでます。
これが出なくなればほぼ完成なのですが。。。
有難うございます。
<?php
//訪問回数判定
if(isset($_COOKIE['visit'])){
$counter = $_COOKIE['visit'] + 1;
setcookie('visit',$counter,time()+60*60*24);
$_COOKIE['visit'] = $_COOKIE['visit'] + 1;
echo 'こんにちは!あなたの訪問は'.$_COOKIE['visit'].'回目です<br>';
//訪問回数10回目ならカウントリセット
if($_COOKIE['visit'] >= 9){
$visit = 0;
setcookie('visit',0,time()-60);
}
}else{
echo 'ようこそ!初めての訪問ありがとうございます!<br>';
setcookie('visit',1,time()+60*60*24);
$visit = 1;
}
?>
教えてgoo初心者でして、質問に追加して補足をつけてやりとりできることに最近気づいたので、
https://oshiete.goo.ne.jp/qa/13479077.html
では、お礼しかできないと思って補足で疑問を完全に解消できていませんでした。
またこの補足か、改めて質問させていただきます。