简体   繁体   中英

PHP - How many times the page has been viewed

I want PHP to be able to echo the amount of times the page has been viewed. Being a server side scripting language I'm fairly confident there's a way.

This is what I'm thinking...

main.php

<body>
<?php
include("views.php");
$views = $views + 1;
echo $views;
?>
</body>

views.php

<?php $views = 0; ?>

This works, but does not update. (It will display 1, but will not keep counting upon refresh.)

The problem is that the variable $views does not persist from view to view. In fact, the next time someone comes back to your website $views would have been reset to 0. You'll need to take a look at some form of persistence to store the total number of views.

One way that you can accomplish this is to use a database or via a file. If you are using files, you can do the following inside of your views.php file.

views.php

$views = 0;
$visitors_file = "visitors.txt";

// Load up the persisted value from the file and update $views
if (file_exists($visitors_file))
{
    $views = (int)file_get_contents($visitors_file) 
}

// Increment the views counter since a new visitor has loaded the page
$views++;

// Save the contents of this variable back into the file for next time
file_put_contents($visitors_file, $views);

main.php

include("views.php");
echo $views;

You will need to store the data somewhere. Variables do not keep their state between requests. $views = 0 always means $views = 0 , regardless of whether that variable is being included or not.

Write the number of views to a file ( file_put_contents , file_get_contents ) or to a database to store them permanently.

When you refresh the page, the state is not saved. This $views is set to 0 everytime you begin, and gets incremented by 1.

To increment the count and save the value, you will need to persist the number by either using a database or a file.

Great idea will be to use a database like MySQL. There are a lot of articles over the Internet how to set it up and use with PHP.

What you would probably want to do - update a page row in 'views' every time page is accessed. Simplest way is something like this:

<?php
/* don't forget to connect and select a database first */
$page = 'Home Page'; // Unique for every page
mysql_query("UPDATE views SET num = num + 1 WHERE page = '$page'");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM