如何在php

时间:2018-02-22 20:46:56

标签: php html

关于这种情况:

我有2张照片,每张照片下你可以通过投票“喜欢”或“不喜欢”这张照片。为了防止每个用户多次投票,我存储了用户的IP地址。因此,使用相同的IP,用户每张照片只能投票一次。 我现在的问题是:如果通过点击照片1下的喜欢已经存储了IP,他/她就不再喜欢或不喜欢photo2了。这应该是可能的。

这是我的html代码:

<!-- here is photo 1 with below the buttons-->
<button id="like-btn" class="click-trigger" data-click-id="like">Like</button> 
<span id="like" class="click-count"><?php echo $count['like'];?></span> likes.
<br/><br/>

<button id="dislike-btn" class="click-trigger" data-click-id="dislike">Dislike</button> 
<span id="dislike" class="click-count"><?php echo $count['dislike'];?>    </span> dislikes.
<br/><br/>

<!-- here is photo2 with below the buttons-->
<button id="like-btn" class="click-trigger" data-click-id="like2">Like</button> 
<span id="like" class="click-count"><?php echo $count['like2'];?></span> likes.
<br/><br/>

和php代码:

// grab users IP address
$ipAddress = $_SERVER['REMOTE_ADDR'];
$UserIptxt = $ipAddress."||";
$all_ips = explode("||", file_get_contents("user_ip.txt"));
if ( ! in_array($ipAddress, $all_ips) ) {

  // put the ip address in .txt file
  file_put_contents("user_ip.txt", $UserIptxt, FILE_APPEND);


  $file = 'counter.txt'; // path to text file that stores counts
  $fh = fopen($file, 'r+');
  $id = $_REQUEST['id']; // posted from page
  $lines = '';
  while(!feof($fh)){
    $line = explode('||', fgets($fh));
    $item = trim($line[0]);
    $num = trim($line[1]);
    if(!empty($item)){
      if($item == $id){
        $num++; // increment count by 1
        echo $num;
        echo '<br />Thanks for voting';

      }
      $lines .= "$item||$num\r\n";
     }
  } 
  file_put_contents($file, $lines);
  fclose($fh);

}
// ip adres is already stored
else {
 echo '<br /><div class="alreadyvoted">You have already voted!</div>';
}

文件counter.txt如下所示:

like||117
dislike||184
like2||12
dislike2||18

如何区分每张照片的存储IP地址?

1 个答案:

答案 0 :(得分:0)

简短回答,使用此方法,每张照片都需要一个您使用IP地址保存的唯一ID。也许以类似

的形式将其保存在文件中
127.0.0.0=photo1

127.0.0.0=photo2

然后爆炸每一行

list ($ipAddr,$photoID) = explode ("#", $line);

然后比较传递的photoID和IP。

但是可能想要查看可能使用的数据库。这可以更容易地创建条目并使用WHERE子句绘制此信息。