【问题标题】:Voting system with jQuery, Ajax and PHP works only local server带有 jQ​​uery、Ajax 和 PHP 的投票系统仅适用于本地服务器
【发布时间】:2013-12-20 14:10:41
【问题描述】:

我不擅长 PHP(只是学习)。 我尝试修改从免费来源下载的 php 投票脚本。我可以添加图像(这对我来说不是一件容易的事,我还没有完成)。 现在投票在我的本地服务器上工作正常,但在网上却不行。如果我点击投票,数字就会消失而没有返回。以下是要查看的代码。

index.php ---

<?php include('config.php'); 

$sql=mysql_query("SELECT * FROM messages ORDER BY `messages`.`up` DESC LIMIT 20"); 

while($row=mysql_fetch_array($sql)) { $title=$row['title']; $desc=$row['desc']; 

$mes_id=$row['mes_id']; $image=$row['image']; $up=$row['up']; 

$down=$row['down']; ?> <div id="vote"> <div class="box1"> 
<div class='up'><a href="" class="vote" id="<?php echo $mes_id; ?>" name="up"> 
<?php echo $up; ?></a></div> 

<div class='down'><a href="" class="vote" id="<?php echo $mes_id; ?>" name="down">
<?php echo $down; ?></a></div></div> 

<div class='image' ><?php echo "<img src=user/admin/".$image ." width='87%' height='70%'/>"?></div> 

<div class ='title'><?php echo $title; ?></div> 

<div class='box2' > 
<?php echo $desc; ?> </div> </div> 

<?php } ?>

up_vote.php --------------

<?php include("config.php"); 

$ip=$_SERVER['REMOTE_ADDR']; 
if($_POST['id']) { $id=$_POST['id']; $id = mysql_real_escape_String($id); $ip_sql=mysql_query("SELECT ip_add FROM voting_ip WHERE mes_id_fk='$id' AND ip_add='$ip'"); 

$count=mysql_num_rows($ip_sql)or die(mysql_error()); 
if($count<=20) 
{ 
$sql = "UPDATE messages SET up=up+1 WHERE mes_id='$id'"; mysql_query( $up); 
$sql_in = "INSERT INTO messages (mes_id_fk,ip_add) VALUES ('$id','$ip')"; mysql_query( $sql_in); 
} else 
{ echo "<script>alert('You have already voted');</script>"; } 
$result=mysql_query("SELECT up FROM messages WHERE mes_id='$id'"); 
$row=mysql_fetch_array($result); $up_value=$row['up']; echo $up_value; } ?> 

down_vote.php -----------------

<?php include("config.php"); 

$ip=$_SERVER['REMOTE_ADDR']; 
if($_POST['id']) { $id=$_POST['id']; 
$id = mysql_real_escape_String($id);

 $ip_sql=mysql_query("SELECT ip_add FROM voting_ip WHERE mes_id_fk='$id' AND ip_add='$ip'"); 

$count=mysql_num_rows($ip_sql) or die(mysql_error());
 if($count<=0)

 { $sql = "UPDATE Messages SET down=down+1 WHERE mes_id='$id'"; mysql_query( $sql); 
$sql_in = "INSERT INTO voting_ip (mes_id_fk,ip_add) values ('$id','$ip')"; mysql_query( $sql_in); 
} else { echo "<script>alert('You have already voted');</script>"; } 

$result=mysql_query("SELECT down FROM Messages WHERE mes_id='$id'"); 
$row=mysql_fetch_array($result); 
$down_value=$row['down']; echo $down_value; } 
?>

Javascript ---------------(这是在带有一些 HTML 代码的索引标题处)

<script type="text/javascript">
$(function() {

$(".vote").click(function() 
{

var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);


if(name=='up')
{

$(this).fadeIn(200).html('<img src="dot.gif" align="absmiddle">');
$.ajax({
   type: "POST",
   url: "up_vote.php",
   data: dataString,
   cache: false,

   success: function(html)
   {
    parent.html(html);

  }  });

}
else
{

$(this).fadeIn(200).html('<img src="dot.gif" align="absmiddle">');
$.ajax({
   type: "POST",
   url: "down_vote.php",
   data: dataString,
   cache: false,

   success: function(html)
   {
       parent.html(html);
  }

 });


}


return false;
    });

});
</script>

感谢任何人的帮助,谢谢大家。

【问题讨论】:

  • 请查看您的服务器日志。
  • 配置中的变量是否正确?
  • 我讨厌成为坏消息的承担者,但是您的脚本充满了允许 SQL 注入攻击的漏洞......
  • 谢谢大家; @War10ck 您实际上指出了一个很好的观点。但就像我说的,我还是 php/sql 的婴儿。我实际上调整了一些东西,但现在上下投票没有插入到数据库中。
  • @War10ck 是对的,请使用 PDO 或 MySQLi。 SO 和网络上有很多帖子。

标签: php mysql ajax jquery voting


【解决方案1】:

根据您的代码,

if($count==50)

那么只有值被更新了!!。第一次投票的人怎么可能??? 应该是

if($count<50)

【讨论】:

    【解决方案2】:

    在这里进行一次疯狂的尝试,但 9/10 '它在本地工作但不能在现场工作' 问题要么是 php 版本不匹配,要么是假定 LAMP 的 Apache 配置差异(不同的模块配置等)。

    检查 php 版本是否匹配,如果他们不检查更改日志以检测在两者中都不起作用的任何功能。这很可能是问题所在。

    如上所述。始终检查您的服务器日志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      相关资源
      最近更新 更多