ホームページ >バックエンド開発 >PHPチュートリアル >いいねをするときに、1 日に 1 回しかいいねできないコードを追加するのはなぜですか?

いいねをするときに、1 日に 1 回しかいいねできないコードを追加するのはなぜですか?

WBOY
WBOYオリジナル
2016-06-20 12:45:301269ブラウズ

@$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 つのデータがある場合、昨日のタイムスタンプが自動的に取得され、いつでも正常に「いいね!」することができます。

最初の SQL ip='$realip' に大きな問題があります。$realip がない場合、エラーが報告されますか?その背後にある where 条件を削除できます。

$realip があり、IP が最初の SQL から見つかるか空であると仮定して、次の比較を実行します。後で書いたロジックはおそらく間違っています。

以前は記事IDで判断したので、IPが同じか、今日いいねされたかだけの違いです。ロジックは次のようになると思います。

if(今日の時刻 = この記事のデータベース){
if(現在の like ip = データベース内の IP){
好きではありません。 > }else{
気に入っていただけます;
}

}else{
気に入っていただけます
}

私も初心者です、お願いします。私が間違っていたらアドバイスをください。
SQL ステートメントに当日のデータを取得する関数を追加する限り、昨日のデータを取得して常に「いいね!」を取得することはできないことがわかりました。 。

クエリ文は取得されません。その日のデータは、IP に対応する記事のすべてのデータが取得されます。 そうですね。こうすることで、常に昨日のデータを取り出していいねが成功するという事態はなくなります。 。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。