Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: PHP. Полезные скрипты  (Прочитано 16075 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 01-04-2005 04:41 » 

Ваши коментарии, замечания и пожелания, по поводу цикла PHP. Полезные скрипты на сайте клуба.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 01-04-2005 06:49 » 

Комментарий ко второй части статьи.
В документации к PHP утверждается (http://www.php.net/manual/en/function.srand.php):

Note: As of PHP 4.2.0, there is no need to seed the random number generator with srand() or mt_srand() as this is now done automatically.

Соответственно необходимости в функции rand_num() лично я не вижу.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 01-04-2005 06:54 » 

Комментарий ко второй части статьи.
В документации к PHP утверждается (http://www.php.net/manual/en/function.srand.php):
Note: As of PHP 4.2.0, there is no need to seed the random number generator with srand() or mt_srand() as this is now done automatically.
Соответственно необходимости в функции rand_num() лично я не вижу.

Согласен что не нужна тебе конкретно. Но есть множество серверов на которых стоит версия ПХП например 4.1 Улыбаюсь Как в некоторых известных мне учебных заведениях, и им это может пригодиться Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 01-04-2005 07:09 » 

В таком случае вызывать функцию srand() надо только один раз за время выполнения скрипта. Например:
Код:
function rand_num ($low, $high)
{
    static $init_rand = true;

    if ($init_rand)
    {
        srand((double) microtime() * 1000000);
        $init_rand = false;
    }
   
    return rand($low, $high);
}
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #4 : 01-04-2005 07:18 » 

В таком случае вызывать функцию srand() надо только один раз за время выполнения скрипта.
А у меня она что, два раза вызывается ?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 01-04-2005 08:11 » 

В статье приводится пример полезной функции rand_num(). Возможно, кто-нибудь захочет получить более чем одно случайное число. В функции rand_num() srand() вызывается столько раз, сколько вызывается rand_num(). Если функция microtime() вернет одинаковые значения для разных вызовов (а такое, в зависимотсти от реализации этой функции и железа компьютера, может быть), то сгенерируются одинаковые случайные числа.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #6 : 01-04-2005 08:31 » 

Код:
<?php
function rand_num ($low$high)
{
srand((double) microtime() * 1000000);
$random_Num rand($low$high);
return 
$random_Num;
}

$chislo rand_num(1789);
print 
$chislo."\n";
$chislo rand_num(1789);
print 
$chislo2."\n";
$chislo2 rand_num(1789);
print 
$chislo2."\n";
$chislo3 rand_num(1789);
print 
$chislo3."\n";
?>


Вот это я запустил 50 раз подряд, и ниразу не получил дублирующихся чисел.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 01-04-2005 08:49 » 

Я не утверждаю, что код не работает. Да, он работает. Но он может работать лучше. Пример в 3-м посте.

Из комментарие к srand() на странице
http://ru.php.net/manual/en/function.srand.php

srand() is pretty tricky to get right. You should never seed a random number generator more than once per php process, if you do, your randomness is limited to the source of your seed.

The microtime function's micro-seconds portion has a very finite resolution, that is why the make_seed function was added to the document. You should never get the same seed twice.

In the later versions, PHP will seed the random generator prior to performing a rand() if srand() was not previously called.
« Последнее редактирование: 20-12-2007 20:42 от Алексей1153++ » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 24-06-2006 12:13 » 

В копилку полезных скриптов: перекодировщих HTML-entities в cp1251.
Пока накидан на скорую руку и умеет перекодировать только часть кириллики (русский алфавит) и некоторые символы.

Проблема, подтолкнувшая меня к написанию этого кода, заключается в том, что некоторые браузеры при некоторых условиях отправляют на сервер в POST-запросе текст не в 8-ми битных кодировках, а закодированный в HTML-entities.
Чем плох такой формат? - По нему затруднительно делать поиск, да и места он занимает в больше (для кириллики - в 7 раз!!!).

Entity имеет формат &значение; . В "значение" есть возможность указать десятичный или шестнадцатеричный номер unicode - с этим я и буду бороться.
Форматы unicode-entities: &#dec-number; и &#xhex-number;

Я просто заменяю по таблице.

* Subs-Entities.php (3.06 Кб - загружено 426 раз.)
« Последнее редактирование: 24-06-2006 19:22 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

"железокаменный метеорит" мог образоваться от расплавления металлических конструкций в результате например ядерного взрыва и стекания жидкого железа в какой нибудь щебень (c) Иванов С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 24-06-2006 15:58 » 

Добавил немного в таблицу перекодировки.

В принципе, нужно подумать о перекодировке через iconv.

* Subs-Entities.php (3.77 Кб - загружено 410 раз.)
« Последнее редактирование: 24-06-2006 19:22 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

"железокаменный метеорит" мог образоваться от расплавления металлических конструкций в результате например ядерного взрыва и стекания жидкого железа в какой нибудь щебень (c) Иванов С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 24-06-2006 19:09 » 

Еще один инструмент для борьбы с unicode - декодер url, содержащих unicode в формате %uXXXX. Такой формат генерят браузеры при запросах GET из формы или из JavaScript (ф-ия escape()).
Первоначальный код: http://www.php.net/manual/ru/function.urldecode.php#64676
В атаче - модифицированный мною код для работы с не UTF-8.

* unicode.php (0.89 Кб - загружено 424 раз.)
« Последнее редактирование: 24-06-2006 19:22 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

"железокаменный метеорит" мог образоваться от расплавления металлических конструкций в результате например ядерного взрыва и стекания жидкого железа в какой нибудь щебень (c) Иванов С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 24-06-2006 21:12 » 

Доработал перекодировщик HTML-entities. Теперь перекодируется посредством iconv(), а что не перекодировалось можно заменить по таблице.
Не полностью протестировано!

* Subs-Entities.php (1.83 Кб - загружено 393 раз.)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

"железокаменный метеорит" мог образоваться от расплавления металлических конструкций в результате например ядерного взрыва и стекания жидкого железа в какой нибудь щебень (c) Иванов С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines