![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input type="hidden" >で配列...
-
$_SESSIONについて教えて下さい。
-
HTMLで前の画面に戻る時、入力...
-
PHPでじゃんけん勝負
-
ラジオボタンをsessionで使いたい
-
PHP ボタンが押されたら処理を...
-
フォームへの前回入力値をクリ...
-
phpでの複数選択チェックボック...
-
検索時の選択内容を保持する方法
-
smartyでチェックボックスをチ...
-
【HTML(PHP?)】複数のフォーム...
-
extract($_POST)
-
テキストボックスに初期値を入れる
-
DBの値をチェックボックスに反...
-
チェックボックスの必須項目指定
-
PHPでCookieを使った訪問回数に...
-
フォームの送信ボタンが押され...
-
VBA で、スペースを含むファイ...
-
POSTを使わずに値を渡す方法
-
フォーム送信後の更新ボタンで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHP ボタンが押されたら処理を...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
フォームへの前回入力値をクリ...
-
フォームでのリセットを使う方法
-
PHPで画像の渡しが上手く行きま...
-
画面が更新されてもチェックボ...
-
フォームボタンを押すたびに数...
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
syntax error, unexpected '}' ...
-
【HTML(PHP?)】複数のフォーム...
-
チェックボックスの必須項目指定
-
HTMLのリンクをクリックするこ...
-
DBの値をチェックボックスに反...
-
複数チェックボックスの入力制...
-
チェックボックスのvalueに変数...
-
input nameで日本語を使うと
-
POSTデータのNAME属性を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
では、お礼しかできないと思って補足で疑問を完全に解消できていませんでした。
またこの補足か、改めて質問させていただきます。