Heim >Backend-Entwicklung >PHP-Tutorial >求大神看看,我做点赞时,限制每个ip只能点赞每篇文章一次,代码要怎么实现。

求大神看看,我做点赞时,限制每个ip只能点赞每篇文章一次,代码要怎么实现。

WBOY
WBOYOriginal
2016-06-20 12:45:291934Durchsuche

//前端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的表


回复讨论(解决方案)

我觉得吧,设计一个表,只有两个字段即可,一个是文章id,一个是用户的ip,两个字段作为联合主键。
每次用户访问,查询,查到了就是点赞过。没查到就可以点赞,由于是联合主键,肯定只能插入一条,因此通过数据库就帮你做了一次限制。查看文章的点赞数,直接where 文章id即可count。

因此,联合主键的顺序是:文章id,用户ip

我觉得吧,设计一个表,只有两个字段即可,一个是文章id,一个是用户的ip,两个字段作为联合主键。
每次用户访问,查询,查到了就是点赞过。没查到就可以点赞,由于是联合主键,肯定只能插入一条,因此通过数据库就帮你做了一次限制。查看文章的点赞数,直接where 文章id即可count。

因此,联合主键的顺序是:文章id,用户ip

请问ajxa提交成功后怎么返回要弹出的信息,直接输出个1吗?

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

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

请问ajax提交成功后怎么把点赞成功的消息弹出来。直接输出个echo 1吗? 

对!echo 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('点赞成功!');             }	}});
这样写不对吗

调试 ajax 程序一般比较困难,在不借助工具的情况下,要添加检查数据的代码
    success:function(data){//数据返回成功      
        alert(data); //只要 ajax 不出错,这里总是会有弹窗的
       if(data==1){//成功 
        alert('点赞成功!');       
      }
    }

php端
if(!empty($row) && strcmp($ip1,$ip2)==0){
    echo   1;
}else{
    echo 0;
}
每个分支都输出点什么,这样就容易发现流程是否有问题

调试 ajax 程序一般比较困难,在不借助工具的情况下,要添加检查数据的代码
    success:function(data){//数据返回成功      
        alert(data); //只要 ajax 不出错,这里总是会有弹窗的
       if(data==1){//成功 
        alert('点赞成功!');       
      }
    }

php端
if(!empty($row) && strcmp($ip1,$ip2)==0){
    echo   1;
}else{
    echo 0;
}
每个分支都输出点什么,这样就容易发现流程是否有问题

有弹出窗,为什么点赞成功的消息没有输出来

检查一下,提交的数据,与获取的数据。
如果都没问题,再检查一下返回的数据。

最好在php把接受到的数据写到log,方便检查。
然后在js把返回的数据显示。

检查一下,提交的数据,与获取的数据。
如果都没问题,再检查一下返回的数据。

最好在php把接受到的数据写到log,方便检查。
然后在js把返回的数据显示。

实在找不出问题, alert(data);出来都有数据的啊 

前面上现的 html 和 js 代码,表示你向 ajax 返回数据的代码有问题(入口点不对)
下面出现的 php 错误信息,表示你的程序没有做容错处理

先解决了这些再说

前面上现的 html 和 js 代码,表示你向 ajax 返回数据的代码有问题(入口点不对)
下面出现的 php 错误信息,表示你的程序没有做容错处理

先解决了这些再说

入口不对??那该怎么写
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn