photomuza
Простой код, кто-то здесь давно мне делал, увеличил задачу, сделал 6 массивов вместо шести. Но сам в РНР дундук, просто копипастил, изменял названия. В общем 6 массивов, перемешанные сохраняют свою последовательность в пределах сессии, когда массивы заканчиваются, перемешиваются заново. Все работает, глюк в том, что вылазит 3 лишних знака на странице, неизвестно откуда берущихся, вот эти -
 либо эти -
яЛП (в зависимости от кодировки). Причем случайным образом.
Код такой:
Код:
<?
//////////// N 1 ////////////
if (!isset($_COOKIE1["rnd"]) || !explode("|",$_COOKIE1["rnd"]))
{
$range1=range(1,9);
shuffle($range1);
}
else
$range1=explode("|",$_COOKIE1["rnd"]);
$file1=array_shift($range1);
setcookie("rnd",join("|",$range1));
//////// Здесь ЕЩЕ 5 ТАКИХ КОДОВ С ИЗМЕНЕНИЕМ НОМЕРА ПЕРЕМЕННЫХ - N2-N6
/////// --- ВЫДАЧА РЕЗУЛЬТАТА ---- //////
include "1-$file1.htm";
include "2-$file2.htm";
include "3-$file3.htm";
include "4-$file4.htm";
include "5-$file5.htm";
include "6-$file6.htm";
?>
Результат онлайн -
http://ohohoh.info/test/
photomuza
Врубился,
$_COOKIE это не переменная, номер добавлять нет смысла. В общем не буду усложнять, нет особого резона, один массив можно использовать, просто сделаю HTML-ок в каждой по 6 штук картинок.
photomuza
artursn:
Спасибо, ты был прав, заценил. Так и надо, теперь правильно перемешивает и выдает каждый из 6-ти массивов. А знаки вылазили, потому что я 2 файла HTM создал неправильно и потом размножил, в каждом 4-м и 5-м было лишних 3 байта, которых не было видно в Блокноте. Вот весь полный код файла с наглядной выдачей 6-ти массивов:
Код:
<?
//////////////// N 1 //////////////////
if (!isset($_COOKIE["rnd1"]) || !explode("|",$_COOKIE["rnd1"]))
{
$range1=range(1,9);
shuffle($range1);
}
else
$range1=explode("|",$_COOKIE["rnd1"]);
$file1=array_shift($range1);
setcookie("rnd1",join("|",$range1));
//////////////// N 2 //////////////////
if (!isset($_COOKIE["rnd2"]) || !explode("|",$_COOKIE["rnd2"]))
{
$range2=range(1,9);
shuffle($range2);
}
else
$range2=explode("|",$_COOKIE["rnd2"]);
$file2=array_shift($range2);
setcookie("rnd2",join("|",$range2));
//////////////// N 3 //////////////////
if (!isset($_COOKIE["rnd3"]) || !explode("|",$_COOKIE["rnd3"]))
{
$range3=range(1,9);
shuffle($range3);
}
else
$range3=explode("|",$_COOKIE["rnd3"]);
$file3=array_shift($range3);
setcookie("rnd3",join("|",$range3));
//////////////// N 4 //////////////////
if (!isset($_COOKIE["rnd4"]) || !explode("|",$_COOKIE["rnd4"]))
{
$range4=range(1,9);
shuffle($range4);
}
else
$range4=explode("|",$_COOKIE["rnd4"]);
$file4=array_shift($range4);
setcookie("rnd4",join("|",$range4));
//////////////// N 5 //////////////////
if (!isset($_COOKIE["rnd5"]) || !explode("|",$_COOKIE["rnd5"]))
{
$range5=range(1,9);
shuffle($range5);
}
else
$range5=explode("|",$_COOKIE["rnd5"]);
$file5=array_shift($range5);
setcookie("rnd5",join("|",$range5));
//////////////// N 6 //////////////////
if (!isset($_COOKIE["rnd6"]) || !explode("|",$_COOKIE["rnd6"]))
{
$range6=range(1,9);
shuffle($range6);
}
else
$range6=explode("|",$_COOKIE["rnd6"]);
$file6=array_shift($range6);
setcookie("rnd6",join("|",$range6));
?>
<p align="center">
<?
include "1-$file1.htm";
include "2-$file2.htm";
include "3-$file3.htm";
include "4-$file4.htm";
include "5-$file5.htm";
include "6-$file6.htm";
?>
<BR><BR>
</p>
<!-- ~~~~~~~ ЭТО МОЖНО ВЫБРОСИТЬ ~~~~~~~ -->
<font size="5">
<? echo "$rnd1"; ?> ---- rnd1 <BR><BR>
<? echo "$rnd2"; ?> ---- rnd2 <BR><BR>
<? echo "$rnd3"; ?> ---- rnd3 <BR><BR>
<? echo "$rnd4"; ?> ---- rnd4 <BR><BR>
<? echo "$rnd5"; ?> ---- rnd5 <BR><BR>
<? echo "$rnd6"; ?> ---- rnd6 <BR><BR>
</font>
<!-- ~~~~~~~ ЭТО МОЖНО ВЫБРОСИТЬ ~~~~~~~ -->
Вот так оно работает -
http://ohohoh.info/test/index2.php
Первую часть (N1-N6) можно вынести в отдельный файл и вставлять инклудом. Проверил, работает.