ホームページ > バックエンド開発 > PHPチュートリアル > 教えてください。いいねをするとき、各 IP アドレスで各記事に 1 回だけいいねをするように制限しています。コードを実装するにはどうすればよいですか?

教えてください。いいねをするとき、各 IP アドレスで各記事に 1 回だけいいねをするように制限しています。コードを実装するにはどうすればよいですか?

WBOY
リリース: 2016-06-20 12:45:29
オリジナル
1943 人が閲覧しました

//フロントエンド ajax がデータを送信します

     <input type="button"  onClick="change_love({$article.article_id})" value="赞一下"/></a>      <!--<input type="button" value="点赞" onClick="zan()"/>-->      {$article.love}</p>    </div>  </div></section><script>function change_love(article_id){ //var Lastsend = document.getCookie('ECS_auction_Lastsend_'+article_id); //alert('点赞成功'); $.ajax({    url:'article.php',//后台处理路径    type:'post',//post提交方式    data:{id:article_id},//点赞的文章id    success:function(data){//数据返回成功             if(data==1){//成功              }   }});}</script>
ログイン後にコピー



//バックグラウンドでデータベースを更新し、IP が存在するかどうかを判断します
$realip=getip();//echo $realip;modifyipcount($realip);@$love=$_POST['id'];if(isset($love)){	$query="SELECT * FROM ecs_article_love where article_id='".$article_id."'";	$result=mysql_query($query);	$row=mysql_fetch_row($result);	//dump($row);	$ip1=$row[2];	$ip2=$realip;	//echo $ip;	if(!empty($row) && strcmp($ip1,$ip2)==0){		echo "<script>alert('ip已存在')</script>";	}else{		//$iptime=time();		//$day=date('Y-m-d');		//if($row[article_id]!=$article_id || $row[ip]!='')		$query="INSERT INTO ecs_article_love (ip,article_id) VALUES ('".$ip2."','".$article_id."')";		mysql_query($query);		echo "<script>alert('点赞成功')</script>";	}}
ログイン後にコピー


//


<🎜のIPテーブルを決定します> ディスカッションへの返信 (解決策)

2 つのフィールドのみを持つテーブルを設計するだけで十分だと思います。1 つは記事 ID、もう 1 つはユーザーの IP で、2 つのフィールドは共同主キーとして使用されます。 。

ユーザーがアクセスしたり、クエリを実行したり、見つけたりするたびに、ユーザーはそれを気に入ります。見つからない場合は、「いいね」を押してください。結合主キーであるため、挿入できる項目は 1 つだけです。そのため、データベースは一度に制限するのに役立ちます。記事の「いいね!」の数を確認するには、カウントする記事 ID をクリックするだけです。

したがって、結合主キーの順序は、記事 ID、ユーザー IP

2 つのフィールドのみを持つテーブルを設計すると思います。1 つは記事 ID、もう 1 つはフィールドです。もう 1 つはユーザーの IP であり、2 つのフィールドは共同主キーとして機能します。

ユーザーがアクセスしたり、クエリを実行したり、見つけたりするたびに、ユーザーはそれを気に入ります。見つからない場合は、「いいね」を押してください。結合主キーであるため、挿入できる項目は 1 つだけです。そのため、データベースは一度に制限するのに役立ちます。記事の「いいね!」の数を確認するには、カウントする記事 ID をクリックするだけです。

したがって、結合主キーの順序は次のとおりです: 記事 ID、ユーザー IP
送信が成功した後、ajxa はどのようにしてポップアップ情報を返すことができますか? 1 を直接出力できますか?

$query="SELECT * FROM ecs_article_love wherearticle_id='$article_id' および ip='$realip'";

$query="SELECT * FROM ecs_article_love where Article_id= '$article_id' and ip='$realip'";

Ajax 送信が成功した後に成功のいいねメッセージをポップアップ表示する方法を教えてください。 echo 1を直接出力しますか?

はい!エコー 1;

はい! echo 1;

うまくいかないようです

「うまくいかないようです」とはどういう意味ですか? ? ?

うまくいかないとはどういう意味ですか? ? ?

	$ip1=$row[2];	$ip2=$realip;	//echo $ip;	if(!empty($row) && strcmp($ip1,$ip2)==0){		//echo "<script>alert('ip已存在')</script>";		echo   1;	}else{		//$iptime=time();		//$day=date(
ログイン後にコピー

これは正しい書き方ではないでしょうか?
  url:'article.php',//后台处理路径    type:'post',//post提交方式    data:{id:article_id},//点赞的文章id    success:function(data){//数据返回成功             if(data==1){//成功 	    alert('点赞成功!');             }	}});
ログイン後にコピー

一般に、ツールの助けがなければ、データをチェックするコードを追加する必要があります。

success:function( data){// データは正常に返されました'); echo 1;
}else{
0;
}
各ブランチ何かを出力するため、プロセスに問題があるかどうかを簡単に見つけることができます


Ajax プログラムのデバッグは、ツールの助けがなければ一般的に困難であり、データをチェックするためのコードを追加する必要があります
success:function(data){// データは正常に返されます。
alter(data); // ajax がエラーを起こさない限り、ここには常にポップアップ ウィンドウが表示されます
if( data==1){//Success
alert('いいね!');
}
}

php Terminal

if(!empty($row) && strcmp ($ip1,$ip2)==0){

echo 1;
}else{
echo 0;
}
各ブランチは何かを出力するので、プロセスに問題があります
ポップアップウィンドウが表示されますが、成功したいいねのメッセージが出力されないのはなぜですか?

投稿データと取得データを確認してください。
問題がなければ、返送されたデータを再度確認してください。

確認しやすいように、受け取ったデータをphpにログインするように書くのがベストです。
次に、返されたデータを js で表示します。


入稿データと取得データを確認します。

問題がなければ、返送されたデータを再度確認してください。

確認しやすいように、受け取ったデータをphpにログインするように書くのがベストです。
次に、返されたデータを js で表示します。
本当に問題が見つかりません。alert(data) にデータがあります

上に表示される html および js コードは、データを ajax に返すために使用するコードに問題があることを示しています (エントリ ポイントが間違っています)
以下に表示される php エラー メッセージは、プログラムが正しくないことを示していますフォールトトレラント

まずこれらを解決してから話し合ってください

上記の html コードと js コードは、ajax にデータを返すために使用するコードに問題があることを示しています (エントリ ポイントが間違っています)
以下に表示される php エラー メッセージは、プログラムがフォールト トレラントではないことを示しています

まずこれらを解決してから話してください

入り口が間違っていますか? ?書き方
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート