Jump to content

PHP link rotating script


hostsum

Recommended Posts

I have this PHP link rotating script, it works pretty fine...
when I run the script it redirect to:
link1.com
link2.com
link3.com
.... and so on

but when I change the web browser or someone else runs it, it restart from the begging..

I mean that it redirect back to link1.com

 

the script use a link.txt file where the link list is stored
what I want is that when I run the script it redirect to 
link1.com
when I change the web browser or someone else runs it continue redirecting to next link and so on...(to link2.com)

 

Here's the PHP code:

<?php
	
	function redirect_to($link) {
		header("Location: {$link}");
		exit;
	}
		
	$links = file('links.txt');	
	
	while (!$links) {
		$links = file('links.txt');	
	}
	
	$links_count = count($links);	
	$one_month = 60 * 60 * 24 * 30;
	

		$index = $_COOKIE['link_index'] + 1;		
		setcookie('link_index', $index, time() + $one_month);		
		
		if ($index == $links_count) {
			setcookie('link_index', 0, time() + $one_month);		
			$index = 0;
		}
	
	redirect_to($links[$index]);
	
?>

 Please help me solve this issue

 

Thanks

Link to comment
https://forums.phpfreaks.com/topic/280319-php-link-rotating-script/
Share on other sites

Just for fun.  links.txt needs to be writable by the webserver:

$file = 'links.txt';
$links = file($file);

if(filemtime($file) <= strtotime('-1 month')) {
    array_push($links, array_shift($links));
    file_put_contents($file, $links, LOCK_EX);
} 
header('Location: ' . trim($links[0]));
exit;

The problem is that you are using a COOKIE. Cookies are unique per computer and per browser, so when someone new gets on, or a new browser is used, their system has no 'link_index' cookie, and the count starts over. You need to save the 'link_index' on the server in some way that is not computer or browser specific. A Session won't work either, because it is also unique per computer and per browser, just stored on the server instead of the client machine.

 

Just for fun.  links.txt needs to be writable by the webserver:

$file = 'links.txt';
$links = file($file);

if(filemtime($file) <= strtotime('-1 month')) {
    array_push($links, array_shift($links));
    file_put_contents($file, implode('', $links), LOCK_EX);
} 
header('Location: ' . trim($links[0]));
exit;

This solution should work for what you want, because it rotates the links in the file itself, rather than keeping a counter.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.