2013-12-20 52 views
1

我不擅長PHP(只是學習)。 我嘗試修改一個從自由源下載的php投票腳本。雖然我可以添加圖片(對我來說這不是一件容易的事,我還沒有完成)。 現在投票在我的本地服務器上正常工作,但在線沒有。如果我點擊投票,這些數字就會消失而不會返回。以下是需要研究的代碼。使用jQuery,Ajax和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> 

我感謝任何人的幫助,謝謝大家。

+0

請看看你的服務器日誌。 – str

+1

更正config中的變量? – Ryan

+0

我討厭成爲壞消息的持有者,但是你的腳本充滿了可能導致SQL注入攻擊的漏洞...... – War10ck

回答

0

從您的代碼,

if($count==50) 

則只值正在更新!!怎麼可能第一次投票的人? 它應該是

if($count<50) 
+0

太棒了! Jubin,你的回答只是讓它工作。 –

0

要在這裏採取野生刺,但9/10'它在本地工作,但不是在現場'問題是PHP版本不匹配或在Apache配置(不同的模塊配置等)假設LAMP的差異。

檢查php版本匹配,如果他們沒有檢查更改日誌以檢測任何不兼容的功能。這可能是問題。

和上面評論。總是檢查你的服務器日誌。