• 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

    • The Teams Admin center is still a mess. I use it all the time. They really need to talk with the Intune or Entra ID folks for help.
    • Senua's Saga: Hellblade II to get 60FPS mode, dev commentary, and more alongside PS5 launch by Pulasthi Ariyasinghe Back in May, Microsoft revealed Senua's Saga: Hellblade II as the next first-party Xbox game to reach PlayStation platforms. Now, that release has an official release date attached to it, and alongside it, developer Ninja Theory is releasing an update across all platforms with some major features, including a 60 FPS mode on consoles. The Performance Mode is easily the biggest addition to the story-focused immersive experience. Ninja Theory is delivering it to both Xbox Series X and PlayStation 5 players, but there is some bad news for Series S owners, as it is being left out from the upgrade. "The result is smoother gameplay, especially noticeable during combat and fast-moving moments of the game," says the developer. It's unclear how much of the game's visuals Performance Mode users will be missing out on compared to the default 30FPS "cinematic" mode. PC players are getting an upgrade too. A Very High preset is being added to the settings menu for those wanting even higher fidelity graphics. Optimizations have also been a focus on PC, and Ninja Theory says that the title will be Steam Deck Verified when the Enhanced update lands in August. Next, similar to the original, Dark Rot is incoming as an optional experience that players can enable when starting a campaign. This will have a rot effect being applied to Senua every time she dies, and if it ever reaches her head, the game will come to an end, with all progress from that save being wiped. The Photo Mode in Hellblade II is being upgraded with this update too, with the studio touting a new Motion tab for cinematic video capture, as well as improvements across the board to the feature. Lastly, four hours of developer commentary is being added to give a behind-the-scenes look at how the studio crafted the story and gameplay. "Hear from the ensemble cast, key collaborators in depicting Senua’s experience of psychosis, and members of the development team who poured their heart and soul into Senua’s story," says the studio. The Senua’s Saga: Hellblade II Enhanced comes out on August 12 across PC, Xbox Series X|S, and PlayStation 5 for all owners and Game Pass subscribers as a free upgrade. As for the PlayStation 5 launch of Senua’s Saga: Hellblade II that's happening on the same day, Microsoft will be offering two versions: Standard and Deluxe. As expected, Standard includes the complete base game for $49.99, but Deluxe goes further by adding on a copy of the first game, Hellblade: Senua’s Sacrifice, as well as its original soundtrack. The Deluxe Edition costs $69.99 to purchase.
    • Not sure what you’re talking about. Has been there for quite a while and in the latest versions it’s actually quite good. I use it several times a day as I am a terrible typist.
    • They should've called it Neolin, what a missed opportunity, IMHO!
  • Recent Achievements

    • One Month Later
      Epaminombas earned a badge
      One Month Later
    • One Year In
      Bert Fershner earned a badge
      One Year In
    • Reacting Well
      ChrisOdinUK earned a badge
      Reacting Well
    • One Year In
      Steviant earned a badge
      One Year In
    • One Month Later
      Steviant earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      549
    2. 2
      ATLien_0
      209
    3. 3
      +FloatingFatMan
      173
    4. 4
      Michael Scrip
      152
    5. 5
      Som
      143
  • Tell a friend

    Love Neowin? Tell a friend!