

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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
検索時の選択内容を保持する方法
-
PHPの初心者です。現在チェック...
-
大量のcheckboxにcheckedを入れる
-
cookieでチェックボックスの状...
-
phpで分からないエラーが出てし...
-
入力した部分を表示させたまま...
-
クレジットカード決済のPHP
-
チェックボックスによる検索
-
【PHPチェック】ラジオボタンが...
-
PHPで、ボタンを押すと同じペー...
-
HTMLで前の画面に戻る時、入力...
-
PHPで画像の渡しが上手く行きま...
-
PHPでURLにジャンプするには?
-
都道府県選択
-
JavaScript変数をPHPへ渡す
-
複数のセレクトボックスを1つに...
-
PHPの質問:フォームから受け取...
-
複数 selectフォームから今回on...
-
CodeIgniter/set_value()
-
fputcsv()で1レコード1行になる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
フォームへの前回入力値をクリ...
-
PHP ボタンが押されたら処理を...
-
DBの値をチェックボックスに反...
-
パラメーターを隠す
-
【PHPチェック】ラジオボタンが...
-
PHPで画像の渡しが上手く行きま...
-
テキストボックスに初期値を入れる
-
ラジオボタンをsessionで使いたい
-
ラジオボタンを押すと、表示が...
-
入力フォーム→確認画面→送信画...
-
PHPの関数実行
-
PHPで、ボタンを押すと同じペー...
-
画面が更新されてもチェックボ...
-
HTMLフォームで複数選択のチェ...
-
<input type='checkbox'>要素で...
-
同じページでフォームデータを...
-
$_SESSIONについて教えて下さい。
おすすめ情報
参考にさせていただき、次のように修正したらできました。
ただ、はじめての訪問のときに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
では、お礼しかできないと思って補足で疑問を完全に解消できていませんでした。
またこの補足か、改めて質問させていただきます。