Jump to content

Recommended Posts

Can anyone see a way to make a better way of making sure that the same avatar doesn't appear in a row.

 

e.g.

pic1 then pic2 then pic2.

 

My code work's but i think there are better ways to do it.

<?php
session_start();
if(isset($_SESSION['random']))// check for the session that contains the random number used for the previous avatar then unset it.
{
unset($_SESSION['random']);//unset the session
}
// fill the list with avatars, each seperated by a comma
$avatars = array(
"http://www.avatarity.com/avatars/7/78/7865.jpg",
"http://www.avatarity.com/avatars/6/66/6687.gif",
"http://www.avatarity.com/avatars/4/45/4578.gif",
"http://www.avatarity.com/avatars/13/137/13746.gif",
"http://i9.tinypic.com/6su42nt.gif",
"http://i8.tinypic.com/6ob6qv8.gif"
);
$avatar_amount = count($avatars);//set the amount of avatars there are in the list

$_SESSION['random'] = rand(0,$avatar_amount);//generate the random avatar number 

if(!isset($_SESSION['num']))//check if there was a previous avatar number
{
$_SESSION['num'] = $_SESSION['random'];//if not then create one
}

function random_check()
{	
if($_SESSION['num'] == $_SESSION['random'])//check if the previous avatar number is the same as the current one, if so generate a new one,
{
	$_SESSION['random'] = rand(0,$avatar_amount);
	random_check();
}
return true;
}	

header("content-type: image/gif");//set the header for gifs, the common avatar image type


if(random_check())//run the function to check the avatar numbers
{
echo readfile($avatars[$_SESSION['random']]);//print the avatar
}
$_SESSION['num'] = $_SESSION['random'];// set the old session number to the current one.
?>

Link to comment
https://forums.phpfreaks.com/topic/132245-avatar-random-ness-code/
Share on other sites

:o that's a lot of code

 

<?php
$avatars = array(
"http://www.avatarity.com/avatars/7/78/7865.jpg",
"http://www.avatarity.com/avatars/6/66/6687.gif",
"http://www.avatarity.com/avatars/4/45/4578.gif",
"http://www.avatarity.com/avatars/13/137/13746.gif",
"http://i9.tinypic.com/6su42nt.gif",
"http://i8.tinypic.com/6ob6qv8.gif"
);
shuffle($array);
header("content-type: image/gif");
foreach($avatars as $tar) {
echo readfile($tar);
}
?>

 

I do believe that's all you need.  If that's not what you're looking for let me know.

OK, first off i believe your foreach loop will cause an error, as i only want one image shown each time, and second off that is what my code did look like, but i found it was showing the same image after it's self a lot, that's what my code now stops, but i think it is inefficient.

  • 2 weeks later...

ah, i understand now. um, you could try a long pre-set random list.

 

also, if the same image was appearing over and over, the browser may have cached the file.

 

Just add the lines:

header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.