• 0

Help with a Stats Script


Question

Hey guys

So my friend made a stats script that works perfectly on his webpage. It's designed so that it doesn't need a database and runs off of 2 .txt files. I got the code from him and tried it on my site but I keep getting continous errors when I load any of the pages. I have pretty much no experience in PHP except for being able to tweak and stuff, no real coding knowledge.

Here are the two files that have the actual code, and also the file which I want to run all the codes together on.

Online.php

<?
$ip = $REMOTE_ADDR;
$time = time();
$minutes = 15;
$found = 0;
$users = 0;
$user  = "";

$tmpdata = $DOCUMENT_ROOT."/";

if (!is_file("$tmpdata/online.txt"))	
	{
	$s = fopen("$tmpdata/online.txt","we($s);
	chmod("$tmpdata/online.txt",0666

$f = fopen("$tmpdata/online.txt","r($f,2);

while (!feof($f))
	{
	$user[] = chop(fgets($f,65536));
	}

fseek($f,0,SEEK_SET);
ftruncate($f,0);

foreach ($user as $line)
	{
	list($savedip,$savedtime) = split("\|",$line);
	if ($savedip == $ip) {$savedtime = $time;$found = 1;}
	if ($time < $savedtime + ($minutes * 60)) 
		{
		fputs($f,"$savedip|$savedtime\n");
		$users = $users + 1;
		}
	}

if ($found == 0) 
	{
	fputs($f,"$ip|$time\n");
	$users = $users + 1;
	}

fclose ($f);
print " <b>People on:</b> $users
";

?> 

Stats.php

<?php
$counter = "stats.txt";

$today = getdate();
$month = $today[month];
$mday = $today[mday];
$year = $today[year];
$current_date = $mday . $month . $year;

$fp = fopen($counter, "a");
$line = $REMOTE_ADDR . "|" . $mday . $month . $year . "\n";
$size = strlen($line);
fputs($fp, $line, $size);
fclose($fp);

$contents = file($counter);

$total_hits = sizeof($contents);

$total_hosts = array();
for ($i=0;$i<sizeof($contents);$i++) {
	$entry = explode("|", $contents[$i]);
	array_push($total_hosts, $entry[0]);
}
$total_hosts_size = sizeof(array_unique($total_hosts));

$daily_hits = array();
for ($i=0;$i<sizeof($contents);$i++) {
	$entry = explode("|", $contents[$i]);
	if ($current_date == chop($entry[1])) {
		array_push($daily_hits, $entry[0]);
	}
}
$daily_hits_size = sizeof($daily_hits);

$daily_hosts = array();
for ($i=0;$i<sizeof($contents);$i++) {
	$entry = explode("|", $contents[$i]);
	if ($current_date == chop($entry[1])) {
		array_push($daily_hosts, $entry[0]);
	}
}
$daily_hosts_size = sizeof(array_unique($daily_hosts));

?>
<font face="verdana" size="1" color="#000000">
<? echo "
 <b>Page hits: </b> " . $total_hits . "<br>
 <b>Unique hits: </b> " . $total_hosts_size . "<br>
 <b>Page hits today: </b> " . $daily_hits_size . "<br>
 <b>Unique Hits today: </b> " . $daily_hosts_size;
?>

And finally,

Show.php

<?php 
 include"stats.php";
?>
<br>
<?php
 include"online.php";
?>

<b>Ip Address:</b> <?php echo $_SERVER['REMOTE_ADDR'] ?><br>

<?php
$endtime = microtime();
$endarray = explode(" ", +$endarray[0]);
$totaltime = $endtime - $starttime;
$totaltime = round($totaltime,5);
echo "<b>Loaded In:</b> $totaltime seconds";
?><br>
<?php
$browswer = "$HTTP_USER_AGENT";
$limitchar = substr($browswer,0,20);
print("<b>Your Browswer:</b> $limitchar)")
?><br>

The error I get is:

 Page hits:  15
 Unique hits: 1
 Page hits today: 3
 Unique Hits today: 1

Warning: fopen(/online.txt): failed to open stream: Permission denied in /home/th3n33ms/public_html/stats/online.php on line 13

Warning: fclose(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 14

Warning: chmod(): No such file or directory in /home/th3n33ms/public_html/stats/online.php on line 15

Warning: fopen($/online.txt): failed to open stream: No such file or directory in /home/th3n33ms/public_html/stats/online.php on line 18

Warning: flock(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 19

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

Warning: feof(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 21

Warning: fgets(): supplied argument is not a valid stream resource in /home/th3n33ms/public_html/stats/online.php on line 23

And the warning line 21 and 23 keeps going forever?

Any ideas? Thanks

Link to comment
https://www.neowin.net/forum/topic/459517-help-with-a-stats-script/
Share on other sites

3 answers to this question

Recommended Posts

  • 0

There is a PHP setting calling register_globals which basically allows you to use "superglobals" - really important variable - without defining them. With the setting turned off, you write

$somevariable = $_SERVER['REMOTE_ADDR'];

with it on, you write

$somevariable = $REMOTE_ADDR

His host has it turned on, yours doesn't. Ask him to convert superglobals into their full length equivalents, and it should be fine. I would do it now, but I'm short on time.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • So, do nothing basically, as long as you deploy Windows Updates? Pretty much yeah. Some Linux distros distribute update the secureboot certs as well, assuming you do use SecureBoot.
    • On one hand, YouTube videos are filled with so much fillers and the Youtubers intentionally speak slowly to increase video time and "engagement" metrics. On the other, Google's asking you to not stay on their site for longer. That's a win-win for viewers. So, I think it'll be axed or de-emphasised in the near future.
    • They'll just repurpose that for their AI trainings. Its never enough for LLMs.
    • Ubuntu gets second-ever snapshot release for Questing Quokka by Paul Hill Canonical has announced the release of Ubuntu 25.10 Questing Quokka Snapshot 2, a monthly development build that gives testers and developers a base from which to work on software for the upcoming release. Snapshot 1 was released at the end of May and Snapshot 3 is scheduled for July 31. Notably, the release date of Snapshot 2 and 3 have moved since last month. The Snapshot 2 update is available for various Ubuntu spins, such as Kubuntu and Lubuntu. To download, head to Ubuntu CD Image and go to the link for the version you want, such as ubuntu/. Once you’ve picked, go to releases/ > 25.10/ > snapshot-2/ and download the appropriate image for your computer - most people will want ‘64-bit PC (AMD64) desktop image’. The announcement mentions that these snapshot builds are not production ready, so you should not be installing them on a machine you use to do your work and daily computing. Canonical said that these builds should be seen as “throwaway artifacts”, whatever that means. If you’re an Ubuntu developer, you should submit your changes in the Ubuntu archive by July 28 to see it in the third snapshot. If you make any changes, Canonical asks you to update the Release Notes with the updates that you have worked on, so everyone knows what changed. Speaking of release notes, Canonical has been updating them incrementally. So far, we know that GNOME 48 is being used alongside the Linux 6.14 kernel. The use of GNOME 48 means that Ubuntu 25.10 only supports Wayland sessions as X.org has finally been dropped. Wayland has been used for a while on Ubuntu, so most people shouldn't have any issues as a result of the switchover. If you want to try out Ubuntu 25.10 Snapshot 2, you can find the download links over on the Ubuntu website. Just remember, these are not intended to be used on production machines!
  • Recent Achievements

    • Week One Done
      Marites earned a badge
      Week One Done
    • One Year In
      runge100 earned a badge
      One Year In
    • One Month Later
      runge100 earned a badge
      One Month Later
    • One Month Later
      jfam earned a badge
      One Month Later
    • First Post
      TheRingmaster earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      559
    2. 2
      +FloatingFatMan
      177
    3. 3
      ATLien_0
      168
    4. 4
      Michael Scrip
      125
    5. 5
      Xenon
      118
  • Tell a friend

    Love Neowin? Tell a friend!