我正在尝试创建一个网站,它几乎已经完成,但我想添加一个视图计数器,这样当有人访问该页面时,它会计算视图并将其保存到数据库中。 我的脚本工作正常,但问题是它继续查看计数,即使访问者正在查看任何其他页面
我的网页网址显示如下
pictures.php?ID=13
我已将此PHP代码添加到* count.php *
<?php
session_start();
if (isset($_SESSION['views'])){
$_SESSION['views']++;
} else {
$_SESSION['views'] =0;
}
//echo $_SESSION['views'];
?>
Page * views.php *
<?php
session_start();
if (isset($_SESSION['$post_id'])){
$_SESSION['$post_id']++;
} else {
$_SESSION['$post_id'] =0;
}
//echo $_SESSION['views'];
?>
<?php
echo "<hr><div align=\"center\">";
echo $_SESSION['$post_id'];
?>
<?php
$save = $_SESSION['$post_id'];
$con=mysqli_connect("localhost","root","123","user");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"UPDATE save_data SET Views='$save' WHERE ID='$page_id'");
mysqli_close($con);
?>
并在Pictures.php中添加了这一行,我想要显示和计算访问次数
<?php include("views.php"); ?>
问题:
当有人访问网页pictures.php?ID=8
时,会向他显示网页view 1
并将此视图保存在ID为8的数据库中,当他访问网页pictures.php?ID=12
时,会向他显示view 2
并将此2保存在ID = 12的数据库中。我的观点是它不断计算而不是每个页面视图。
提前致谢
这是Pictures.php
<?php
include("connection.php");
if(isset($_GET['ID'])){
$page_id = $_GET['ID'];
$select_query = "select * from save_data where ID='$page_id'";
$run_query = mysql_query($select_query);
while($row=mysql_fetch_array($run_query)){
$post_id = $row['ID'];
$post_title = $row['Title'];
$post_image = $row['Name'];
?>
<h3>
<a href="pictures.php?ID=<?php echo $post_id; ?>">
<?php echo $post_title; ?>
</a>
</h3><center>
<form id="search-form" action="javascript:void(0);">
<input type="text" id="dimen" name="dimension" />
<input type="submit" value="Resize" Onclick ="splitString()"/></form>
<div id="sizet">
Type size like 200*300 in box
</div></center>
<div id="img"><img id="myImage" src="uploads/<?php echo $post_image; ?>" /></div>
<?php } }?>
<center>
<div id="postdetails">
<?php include("posted_by.php"); ?></center>
</div>
<?php include("views.php"); ?>
<html>
<link href="css/Pictures.css" rel="stylesheet" type="text/css">
<body>
<head>
<script type="text/javascript">
function splitString()
{
var myDimen=document.getElementById("dimen").value;
var splitDimen = myDimen.split("*");
document.getElementById("myImage").width=splitDimen[0];
document.getElementById("myImage").height=splitDimen[1];
}
</script>
</head>
</body>
答案 0 :(得分:1)
不评估单引号内的变量,因此无论$post_id
是8还是12,$_SESSION['$post_id']
都设置名为字面$post_id
的键,而不是名为{{的键。 1}}或12
。变量在双引号内进行评估,因此8
可行,但最简单和最好的方法是使用$_SESSION["$post_id"]
代替。
此外,在这里使用$ _SESSION可能不是你想要做的。 $ _SESSION对于访问该站点的每个用户都是不同的,所以当一个新访问者访问该站点时,它将重新开始计数1.您可能想要做的是从数据库加载视图值,添加一个到它,然后将其保存回数据库。 $ _SESSION用于保存特定于某个用户的数据。
答案 1 :(得分:0)
尝试使用这样的结构
$_SESSION['view'][{resource_name}_{resource_id}]
E.g。对于id为8的图片,它将是
$_SESSION['views']['picutures_8']++