ホームページ >バックエンド開発 >PHPチュートリアル >いいねをするときに、1 日に 1 回しかいいねできないコードを追加するのはなぜですか?
@$love=$_POST['id'];if(isset($love)){ $query="SELECT * FROM ecs_article_love where article_id='$love' AND ip='$realip'"; $result=mysql_query($query); $row=mysql_fetch_row($result); //dump($row); $ip1=$row[2]; $ip2=$realip; $todaytime=strtotime(date('Y-m-d')); $iptime=$row[3]; //$endtime=strtotime(date('Y-m-d',strtotime('+1 day'))); //echo $todaytime; if(strcmp($ip1,$ip2)==0){ echo 2; } if(!$row && $iptime<$todaytime){ $query="INSERT INTO ecs_article_love (ip,article_id,iptime) VALUES ('".$ip2."','".$love."','".$todaytime."')"; mysql_query($query); //echo "<script>alert('点赞成功')</script>"; $sql = $GLOBALS['db']->query("update ".$GLOBALS['ecs']->table('article')." set love=love+1 where article_id=$love"); echo 1; } die();}これはデータベースの設計です
クエリステートメントが取得されません。その日のデータは、IP に対応する記事のデータをすべて取得します。
1 つ目に大きな問題があります。 sql, IP ='$realip' $realip がない場合、エラーが報告されますか?その背後にある where 条件を削除できます。
$realip があり、IP が最初の SQL から見つかるか空であると仮定して、次の比較を実行します。後で書いたロジックはおそらく間違っています。
以前は記事IDで判断したので、IPが同じか、今日いいねされたかだけの違いです。ロジックは次のようになると思います。
if(今日の時刻 = この記事のデータベース){
if(現在の like ip = データベース内の IP){
好きではありません。 > }else{
気に入っていただけます;
}
}else{
気に入っていただけます
}
私も初心者です、お願いします。私が間違っていたらアドバイスをください。
最初の SQL ip='$realip' に大きな問題があります。$realip がない場合、エラーが報告されますか?その背後にある where 条件を削除できます。
$realip があり、IP が最初の SQL から見つかるか空であると仮定して、次の比較を実行します。後で書いたロジックはおそらく間違っています。
以前は記事IDで判断したので、IPが同じか、今日いいねされたかだけの違いです。ロジックは次のようになると思います。
if(今日の時刻 = この記事のデータベース){
if(現在の like ip = データベース内の IP){
好きではありません。 > }else{
気に入っていただけます;
}
}else{
気に入っていただけます
}
私も初心者です、お願いします。私が間違っていたらアドバイスをください。
$realip はクライアント IP を取得するために使用され、エラーは報告されません。データベースに 2 つのデータがある場合、昨日のタイムスタンプが自動的に取得され、いつでも正常に「いいね!」することができます。
$realip があり、IP が最初の SQL から見つかるか空であると仮定して、次の比較を実行します。後で書いたロジックはおそらく間違っています。
以前は記事IDで判断したので、IPが同じか、今日いいねされたかだけの違いです。ロジックは次のようになると思います。
if(今日の時刻 = この記事のデータベース){
if(現在の like ip = データベース内の IP){
好きではありません。 > }else{
気に入っていただけます;
}
}else{
気に入っていただけます
}
私も初心者です、お願いします。私が間違っていたらアドバイスをください。
SQL ステートメントに当日のデータを取得する関数を追加する限り、昨日のデータを取得して常に「いいね!」を取得することはできないことがわかりました。 。