Naposaram
1.02.2009 - 12:27
Всем привет! Есть такая проблемка хочу сделать вот так: есть ссылка по ней переходят пользователи (любые) и каждый третий переход ведет на случайный URL.
С моими скудными познаниями в php написал вот так:
PHP |
<?php $f=fopen("stat.dat","a+"); flock($f,LOCK_EX); & #36;count=fread($f,100); @$count++; ftruncate($f,0); { if ($f==3) header("location: http://xxx.xx"); $f=0; fwrite($f,count); else //говорит вот здесь ошибка fwrite($f,$count); } fflush($f); flock($f,LOCK_UN); fclose($f);
|
естественно пишет ошибку. подскажите что не правильно и как реализовать?
Спустя 17 минут, 6 секунд (1.02.2009 - 11:44) Adamant написал(а):
Ужос!

Вы сами поняли чего написали?
Спустя 4 минуты, 25 секунд (1.02.2009 - 11:48) Naposaram написал(а):
Цитата (Adamant @ 1.02.2009 - 08:44) |
Ужос! Вы сами поняли чего написали?  |
нет

я же говорю я чайник

я в синтаксисие пхп не очень шарю
Спустя 17 минут, 32 секунды (1.02.2009 - 12:06) Adamant написал(а):
PHP |
<?php $f = fopen("stat.dat", "a+");
flock($f, LOCK_EX); $count = fread($f, 100); ftruncate($f, 0); fputs($f, ++$count); fflush ($f); flock($f, LOCK_UN); fclose ($f);
if (!($count % 3)) { header ("location: http://xxx.xx"); exit; } ?>
|
Спустя 2 минуты, 58 секунд (1.02.2009 - 12:09) Naposaram написал(а):
Цитата (Adamant @ 1.02.2009 - 09:06) |
PHP | <?php $f = fopen("stat.dat", "a+");
flock($f, LOCK_EX); $count = fread($f, 100); ftruncate($f, 0); fputs($f, ++$count); fflush ($f); flock($f, LOCK_UN); fclose ($f);
if (!($count % 3)) { header ("location: http://xxx.xx"); exit; } |
|
и это будет работать?

а разве не надо счетчик обнулить, если $f=3?
Спустя 6 минут, 31 секунда (1.02.2009 - 12:15) Adamant написал(а):
Спустя 6 минут, 26 секунд (1.02.2009 - 12:22) Naposaram написал(а):
Цитата (Adamant @ 1.02.2009 - 09:15) |
Try it yourself. |
I will well try. Thanks for the help
Спустя 52 секунды (1.02.2009 - 12:23) Adamant написал(а):
Арифметические операции
__________________________________________________________________
Пример | Название | Результат
__________________________________________________________________
$a % $b | Деление по модулю | Целочисленный остаток от деления $a на $b.
Спустя 7 минут, 49 секунд (1.02.2009 - 12:30) Naposaram написал(а):
Цитата (Adamant @ 1.02.2009 - 09:23) |
Арифметические операции
__________________________________________________________________ Пример | Название | Результат __________________________________________________________________
$a % $b | Деление по модулю | Целочисленный остаток от деления $a на $b. |
в смысле? если делится на 3 то переходим а если нет то прибавляем 1 в счетчик?
Спустя 7 минут, 58 секунд (1.02.2009 - 12:38) Adamant написал(а):
PHP |
<?php $f = fopen("stat.dat", "a+");
flock($f, LOCK_EX); // "узнаем" сколько всего переходов было сделано $count = fread($f, 100); ftruncate($f, 0); // увеличиваем общее кол-во переходов на 1 и записываем в файл fputs($f, ++$count); fflush ($f); flock($f, LOCK_UN); fclose ($f);
// проверяем если целочисленный остаток от деления на 3 равен нулю // т.е. число делится без остатка значит это очередной ТРЕТИЙ переход // перекидываем юзера и делаем обязательный эксит, чтобы скрипт не выполнялся ниже по файлу(если там есть еще какой нибудь код) if (!($count % 3)) { header ("location: http://xxx.xx"); exit; } |
Спустя 13 минут, 1 секунда (1.02.2009 - 12:51) Naposaram написал(а):
а вот теперь ясно

спсибо большое
Спустя 1 час, 18 минут, 12 секунд (1.02.2009 - 14:10) Naposaram написал(а):
чет вот такую ошибу при третьем переходе выдает: Warning: Cannot modify header information - headers already sent by (output started at /home/sabla204/domains/sablazn.ru/public_html/1/go.php:1) in /home/sabla204/domains/sablazn.ru/public_html/1/go.php on line 18
Спустя 3 часа, 18 минут, 50 секунд (1.02.2009 - 17:29) Adamant написал(а):
Naposaram в вашем скрипте не должно быть ничего, что может перед header() выводится на печать - никаких echo и print-ов и проследите что перед <?php нет никаких пробелов или html-кода.
http://www.phpfaq.ru/headers