PHP сообщество

любители кода :)

работаем/отдыхаем

Bloged in Без рубрики от admin Понедельник Август 27, 2007 at about 3:16 пп

День добрый!

Появилась надобность точно понимать, по заданному дню (на год в прошлое и будущее) трудится ли население России или отдыхает в этот день.

Предоставляет ли наше любимое государство открытый интерфейс подобного рода?
Если нет, есть ли опенсорсные проекты посвященные проблеме?

Правильно ли я понимаю, что гораздо проще хранить только список “неправильных дней”, т.е. день, в который, вроде бы надо было работать (среда), но на который приходится праздник и наоборот, перенесённый рабочий день на субботу?

скрипт для регистрации в системе

Bloged in Без рубрики от admin Понедельник Август 27, 2007 at about 1:12 пп

Здравствуйте. Проблема такая: писал простой скрипт для регистрации в системе, регистрация поэтапная, данные я решил хранить в сессии, но что-то мне сдаётся, что в итоге всё кончится на input type=hidden %) А пока всё же хотелось бы разобраться, в чём ошибка. Суть ошибки такова: начиная с третьей ступени регистрации данные пропадают. То есть хранятся данные из первых двух ступеней, хранятся данные из последнего занесённого, а остальное - пропадает. Выглядит скрипт так: http://85.140.16.227:666/exp/reg.txt - ничего сложного, но ошибку я не вижу :(
Заранее спасибо за помощь.

mail() + windows

Bloged in Без рубрики от admin Понедельник Август 27, 2007 at about 12:42 пп

(закрыто)

скрипт для защиты от спамботов

Bloged in Без рубрики от admin Воскресенье Август 26, 2007 at about 9:09 пп

А подскажите простенький скрипт, который генерил бы картинки для защиты форм от спамботов. Больше никакого функционала типа проверки и прочей фигни не требуется. Только картинку сгенерировать.

Оптимизация скрипта вывода статистики

Bloged in Без рубрики от admin Суббота Август 25, 2007 at about 5:58 пп

Есть сайт, на нем есть система голосований.

Таблица голосований:
|id|(остальные поля не используются в задаче)

Таблица лога ответов голосовавших:
|id|voteid|userid|voteanswers|(остальные поля не используются в задаче)

Таблица юзеров сайта 1:
|id|name|email|(остальные поля не используются в задаче)

Таблица кастомных полей профиля юзеров:
|member_id|field_2|field_3|(остальные поля не используются в задаче)

Задача: Вывести на экран такую таблицу:


|name|email|field_2|field_3|voteanswers|

Условие вывода: каждый пользователь, выводимый в этой таблице, должен проголосовать во всех голосованиях, имеющихся в базе голосований. Поле field_2!='no', а поле field_3!=''.

Честно говоря, мне трудно объяснить задачу полностью. Вот код, который у меня получился и он работает:

Комментарии:
Поле voteanswers на самом деле содержит в себе serialize-вариант массива с ID ответов. Всего опросов в базе 11, поэтому имеет мето быть условие if($votersarr[$voterid]['vcount'] == 11). Кол-во опросов не изменится, так что можно взять 11 как константу общего кол-ва опросов.

Собственно, не горит, но если кому интересно поломать голову, как этот код оптимизировать - буду рад. Просто такой вариант, сами понимаете, во многих местах фигачит кучей запросов к базе.

ЗЫ: Хотел запостить сначала в ru_mysql, но подумал, что одними запросами тут задачу решить невозможно.

unserialize дерево

Bloged in Без рубрики от admin Пятница Август 24, 2007 at about 5:08 пп

есть “дерево” вида
{aaa:
{bbb:
{ccc:sjasj}
{ddd:sjakjlksds}
}
{ccc:
{eee:sajlkdjsd}
}
}

как его “разборать” в такой же массив?
понятно, что через рекусрию и регулярные выражения, но

preg_match_all('/\{(.+?)\}/m',$ar,$arr,PREG_PATTERN_ORDER);

разбирает в одномерный массив…

а вот как его разабрать с сохранением структуры?

eclipse и выравнивание кода

Bloged in Без рубрики от admin Пятница Август 24, 2007 at about 4:29 пп

собственно в один прекрасный день перестал эклипс реагировать адекватно на ctrl+shift+f, что меня несколько огорчает.
переустановка не помогает.  если создать новый проект - то там всё ок, но если в этот проект добавить файлы из старого проекта…ну вообщем читайте выше))) (такая глюка замечена в Zend Studio Neon и PDT)

Чтение и обработка бинарного файла

Bloged in Без рубрики от admin Пятница Август 24, 2007 at about 8:35 дп

Мне нужно прочитать содержимое png-файла и вывести его в составе бинарного (не текстового) ответа.

Вариант 1:

$data_len = 0;
 // Общая длина данных

$size = filesize("image.png");
$data{ $data_len++ } = chr( ($size >> 8) & 0xFF );
$data{ $data_len++ } = chr( $size & 0xFF );

if( $handle = fopen($imgFname,"rb") ) {
  $img = fread($handle, $size);
  fclose($handle);

// Если теперь сделать echo $img, то выходной поток выведутся
// именно те байты, которые нужны. Но мне необходимо сначала
// сформировать ответ в массиве, обработать его, а затем уже
// вывести в выходной поток в качестве ответа клиентскому
// приложению. Поэтому я пытаюсь скопировать байты из $img в
// массив $data, в котором я формирую ответ.

  for ($i=0; $i<$size; $i++) {
    $data{ $data_len++ } = $img{ $i };
  }
}

// Отправка подготовленного ответа клиентской программе
for ($i=0; $i<$data_len; $i++) {
  echo $data{$i};
}
// Вместо байтов png-картинки выводятся в основном 0x00,
// изредка перемежаемые байтами 0x07 и 0x09.

Вариант 2 (те же ошибки):

$data_len = 0;  // Общая длина данных

$size = filesize("image.png");
$data{ $data_len++ } = chr( ($size >> 8) & 0xFF );
$data{ $data_len++ } = chr( $size & 0xFF );

$img = file ($imgFname);
for ($i=0; $i<$size; $i++) {
  $data{ $data_len++ } = $img{ $i };
}

// Отправка подготовленного ответа клиентской программе
for ($i=0; $i<$data_len; $i++) {
  echo $data{$i};
}

Как, считав в переменную содержимое бинарного файла с помощью fread() или file(), получить доступ к считанным байтам файла? Вопрос наверняка элементарный, но за 2 дня поиска в инете и чтения документации (Котеров и другие), мне так и не удалось найти правильный вариант решения.

POST через PHP

Bloged in Без рубрики от admin Четверг Август 23, 2007 at about 2:34 пп

Привет. Поискал, не нашел.
Ситуация: есть страница с полем ввода. По нажатию кнопки/ссылки нужно отправить на другой сайт POST-запрос с логином и паролем. В ответ придет страница, в которой есть форма. В эту форму надо вставить инфу, которую посетитель ввел на моем сайте. И вот только потом результат отдать посетителю.
Сложности: cURL использовать нельзя, ибо хостер.
Вопрос: можно ли? А с cURL'ом?
Если да, то поделитесь, пожалуйста, ссылками по теме.
Спасибо.

UPD: cURL есть.

Next-Key Locking

Bloged in Без рубрики от admin Среда Август 22, 2007 at about 3:15 пп
Задачка:На страничке есть форма для коментария и рейтинга брокеров.Постом передается:
array(5) { [”bid”]=> string(2) “12″ [”user”]=> string(1) “1″ [”rating”]=> array(4) { [1]=> string(1) “1″ [2]=> string(1) “1″ [3]=> string(1) “1″ [5]=> string(1) “1″ } [”comments”]=> string(14) “srt gsdfg sdfg” [”mysubmit”]=> string(12) “Submit Post!”} Сохраняются данные в 2 табличках: CREATE TABLE `rating_data` ( `id` int(11) NOT NULL auto_increment, `id_item` int(11) NOT NULL, `id_comment` int(11) NOT NULL, `data` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `id_item` (`id_item`,`id_comment`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=57 ; CREATE TABLE `comments` ( `id` int(11) NOT NULL auto_increment, `id_user` int(11) NOT NULL, `id_broker` int(11) NOT NULL, `id_ratingconf` int(11) NOT NULL, `date_post` datetime NOT NULL, `text_post` text NOT NULL, PRIMARY KEY (`id`), KEY `id_user` (`id_user`,`id_broker`), KEY `id_ratingconf` (`id_ratingconf`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68 ; пхп код: public static function post_rating ($post, $bid) { // $sql = “SELECT id FROM rating_conf WHERE rating_conf.default=1″; $sth = Storage::instance()->simpleQuery($sql); Storage::instance()->fetchInto($sth, $data, DB_FETCHMODE_ASSOC); $result['default_id'] = $data['id']; // $id = Storage::instance()->nextId(”comments”); $sql = “INSERT INTO comments (id, id_user, id_broker, date_post, text_post, id_ratingconf) “; $sql .= “VALUES ($id,” . $post['user'] . “,” . $bid . “, NOW(), '”.$post['comments'].”','”.$result['default_id'].”') “; Storage::instance()->simpleQuery($sql); foreach ($post['rating'] as $key => $val){ $sql = “INSERT INTO rating_data (id_item, id_comment, data) “; $sql .= “VALUES ('$key','$id','$val')”; Storage::instance()->simpleQuery($sql); } } Проблема:Исполняется 2 INSERT запроса, но когда много людей будут постить, я боюсь, что утеряеться правельный $id для следующего запроса.Спиной чувствую, что можна сделать просче.Спасибо за советы.
психологические психологи ; деревянная имитация бруса как правильно крепить ее на стены ; Расценки на прокладку телефонного кабеля.