アプリ版:「スタンプのみでお礼する」機能のリリースについて

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>

質問者からの補足コメント

  • 参考にさせていただき、次のように修正したらできました。
    ただ、はじめての訪問のときに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>';

      補足日時:2023/05/30 20:48
  • //訪問回数10回目ならカウントリセット
    if($_COOKIE['visit'] >= 9){
    $visit = 0;
    setcookie('visit',0,time()-60);
    }
    }else{
    echo 'ようこそ!初めての訪問ありがとうございます!<br>';
    setcookie('visit',1,time()+60*60*24);
    $visit = 1;
    }
    ?>

      補足日時:2023/05/30 20:48
  • 教えてgoo初心者でして、質問に追加して補足をつけてやりとりできることに最近気づいたので、
    https://oshiete.goo.ne.jp/qa/13479077.html
    では、お礼しかできないと思って補足で疑問を完全に解消できていませんでした。
    またこの補足か、改めて質問させていただきます。

      補足日時:2023/06/01 11:06

A 回答 (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>
    • good
    • 0
この回答へのお礼

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);
}


?>

お礼日時:2023/05/28 18:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!