Jump to content

D.S.Denton

Expert
  • Posts

    993
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by D.S.Denton

  1. D.S.Denton

    audio file

    музон по выбору пользователя обычно уже есть в винампе...
  2. естественно смотря где сайт размещается. хороший хостер дает возможность доступа к логам, тогда можно их читать иногда. для нестатических сайтов (т.е. где есть хотя бы минимальное программирование) проще написать для этого дополнительно пару десятков строчек не мы такие - жизнь такая
  3. substr() поскольку не вижу структуру таблицы, навскидку сказать не могу, кроме того что этот кусок кода все равно можно выкинуть. и если нет никаких религиозных возражений, посоветую использовать для работы с БД вот такой класс (взят из форумного движка PunBB с небольшими изменениями): <?php !function_exists('mysql_connect') ? exit('This PHP environment doesn\'t have MySQL support built in. MySQL support is required if you want to use a MySQL database to run this script. Consult the PHP documentation for further assistance.') : null; class DBLayer { var $prefix; var $link_id; var $query_result; var $saved_queries = array(); var $num_queries = 0; function DBLayer($db_host,$db_username,$db_password,$db_name,$db_prefix,$p_connect) { $this->prefix = $db_prefix; if($p_connect) {$this->link_id = @mysql_pconnect($db_host,$db_username,$db_password);} else {$this->link_id = @mysql_connect($db_host,$db_username,$db_password);} if($this->link_id) { if(@mysql_select_db($db_name,$this->link_id)) {return $this->link_id;} else {exit('Unable to select database. MySQL reported: '.mysql_error().'<br />File: '.__FILE__.'Line: '.__LINE__);} } else {exit('Unable to connect to MySQL server. MySQL reported: '.mysql_error().'<br />File: '.__FILE__.'Line: '.__LINE__);} } function start_transaction() {return;} function end_transaction() {return;} function query($sql,$unbuffered = false) { if($unbuffered) {$this->query_result = @mysql_unbuffered_query($sql,$this->link_id);} else {$this->query_result = @mysql_query($sql,$this->link_id);} if($this->query_result) { ++$this->num_queries; return $this->query_result; } else { if(defined('PUN_SHOW_QUERIES')) {$this->saved_queries[] = array($sql,0);} return false; } } function result($query_id = 0,$row = 0) {return ($query_id) ? @mysql_result($query_id,$row) : false;} function fetch_assoc($query_id = 0) {return ($query_id) ? @mysql_fetch_assoc($query_id) : false;} function fetch_row($query_id = 0) {return ($query_id) ? @mysql_fetch_row($query_id) : false;} function num_rows($query_id = 0) {return ($query_id) ? @mysql_num_rows($query_id) : false;} function affected_rows() {return ($this->link_id) ? @mysql_affected_rows($this->link_id) : false;} function insert_id() {return ($this->link_id) ? @mysql_insert_id($this->link_id) : false;} function get_num_queries() {return $this->num_queries;} function get_saved_queries() {return $this->saved_queries;} function free_result($query_id = false) {return ($query_id) ? @mysql_free_result($query_id) : false;} function escape($str) { if(is_array($str)) {return '';} elseif(function_exists('mysql_real_escape_string')) {return mysql_real_escape_string($str,$this->link_id);} else {return mysql_escape_string($str);} } function error() { $result['error_sql'] = @current(@end($this->saved_queries)); $result['error_no'] = @mysql_errno($this->link_id); $result['error_msg'] = @mysql_error($this->link_id); return $result; } function close() { if($this->link_id) { if($this->query_result) {@mysql_free_result($this->query_result);} return @mysql_close($this->link_id); } else {return false;} } } ?>
  4. нет. у тебя функция всего этого js-кода минимальная - брать содержимое страницы по такому-то адресу (указанному в ссылке) и всовывать в тело страницы. соответственно это все можно спокойно выкинуть и сделать первую страницу на PHP, используя всего три функции - fopen, fclose и echo (это если придерживаться точь-в-точь имеющегося алгоритма). либо специально придуманную для подобного функцию include
  5. переделать все на пхп, раз нет желания ковырять ajax, избавившись таким образом от "загрузчика"
  6. попробуй http://sourceforge.net/projects/phpexcelreader вдруг поможет
  7. ну тогда кроме задания картинки ничего в голову не приходит, т.к. ты не хозяин посетителю своему и запретить ему отключить фон не можешь. т.е. отпадают все варианты через background - и цвет и картинка, придется втыкать ее как <img>, да и это не лекарство, мне же никто не мешает отключить картинки вообще. зато прибавляется проблема с растягиванием, картинку просто так через чистый хтмл не получится под всю ячейку подогнать
  8. флаг - условное название какой-либо метки, которая может иметь два значения: 1 или 0, истина (true) или ложь (false), да или нет стоп-слово - опять же условное название какой-то последовательности символов, на которую надо обратить внимание (например для цензуры стоп-словами является любое слово из ненормативной лексики) блеклист - blacklist - черный список, в который вносим нежелательных посетителей нет, это обычный поисковик яндекса. они ходят с адресов 93.158.*.* вряд ли, раз "У меня и сайт-то еще не работает...", то кого он заинтересует с целью навредить? логика отслеживания нехороших запросов вообще - если ты предусматриваешь на сайте ссылки типа htmlbook.ru/file.html, а вдруг кто-то запрашивает htmlbook.ru////index.php?$_SERVER['DOCUMENT_ROOT'], это явно набрано вручную в адресной строке (ну или программой), поскольку такую ссылку увидеть ни на одной твоей странице человек не мог, и даже вбить случайно такое невозможно
  9. D.S.Denton

    <!--[if ff]>

    http://wafful.org/~takesako/html20hacks/browser-detect2.html
  10. поясню логику связей. есть автор. он может быть сам по себе, аналогично чтец. атрибуты у автора ФИО и прочее, у чтеца аналогично, но как правило людей не интересует ничего, кроме имени и фамилии, поэтому атрибутов у него меньше, значит как отдельного автора его неудобно держать (в т.ч. и потому что тогда у аудиокнижки он будет привязан не как чтец, а как соавтор) есть текстовая книга. она может быть без аудиоверсии, но без автора быть не может. поэтому указываем ее автора. атрибуты книги - название, жанр, дата написания, дата добавления есть аудиокнига. у которой обязательно ведь есть исходный текстовый оригинал (другое дело что его может не быть в библиотеке, но это исключение, которое всегда можно обойти, а еще проще найти текст-версию). также у нее есть специфические атрибуты, которых нет у текстовой - чтец, качество звука, наличие музыки, издательство (издательство у текстовой тоже есть, но там это не принципиальная вещь для посетителя). потому оно в отдельной таблице. таким образом при запросе определенной аудиокниги мы всегда по полю tbID можем из соответствующей таблицы вытащить данные по текстовой версии, по rID инфу о читающем из таблицы чтецов, а из таблицы текстовых поскольку уже имеем связь abID->tbID - автора. также нетрудно найти все книги одного автора (в т.ч. с возможностью включить в поиск аудио или нет или только аудио) select from 'tbooks' * where 'aID'... аналогично аудиокнижки по исполнителю или названию издательства
  11. я бы вначале сделал отдельно таблицы на текст и аудио. в текстовых ввел поле "audioID", которое если не null указывает на айди соответствующей (или нескольких через разделитель) аудиокнижки автор и чтец - опять же отдельные таблицы, для простоты и скорости выборки из базы т.е. authors: aID, surname, name, parent, nickname, email, other, birthdate, city, regdate, rating readers: rID, surname, name, parent, rating tbooks: tbID, aID, name, genre, madedate, adddate, rating abooks: abID, tbID, rID, madedate, producer, adddate, rating
  12. ну тогда сделай отдельно таблицу media="print" и будет счастье ведь: если оно работает на экране, то на принтере (не забудь указать print естесно) тоже условия вполне будут выполняться. другое дело что посетитель может не захотеть печатать фон вообще, тут ты бессилен:
  13. ИМХО, можете не соглашаться... 1. CRT и LCD не отличаются в плане воздействия на зрение - как есть хорошие и плохие ЭЛТ, аналогично ЖК 2. в последний год существования в магазинах ЭЛТ, LG Flatron F900P или ViewSonic G90fB (19'') стоили не более 3 килорублей, а соответствующий им в плане качества и минимизации нагрузки на зрение ЖК - около 10 килоруб. 3. на данный момент новый хороший ЖК 19'' купить дешевле 6 килоруб все равно не реально (по крайней мере в московском регионе) факт: у меня врожденная инвалидность по зрению, естесно врачи вообще не рекомендуют компьютер и ТВ факт: за телевизором ЭЛТ не могу больше 15 минут (хотя расстояние больше, чем до монитора) факт: за мониторами ЭЛТ (LG Flatron F700B / F700P / F900P) спокойно могу сидеть почти сутками факт: на работе за мониторами ЖК (Acer, LG, Samsung разных моделей, стоимостью до 10 килоруб на сегодня) больше часа проблемно удержаться, то и дело ухожу "размять глаза", а дома за трубчатым вьюсоником отдыхаю глазами и душой вообще весь этот бум на ЖК и якобы их безопасность по сравнению с ЭЛТ в свое время был поднят производителями и продавцами, им это ВЫГОДНО. на складе и при транспортировке место одного трубчатого монитора за 3000 спокойно занимают три-четыре жидкокристаллических за 6000. посчитайте выгоду. плюс трубчатые требовали более аккуратного обращения при транспортировке. плюс легкость производства ЖК по сравнению с ЭЛТ. сейчас (как и три-пять лет назад) единственное реальное преимущество ЖК - компактность и соответственно масса, а недостатков типа отсутствия реально черного цвета и искажения картинки/текста при "несвоем" разрешении (которые гораздо сильнее действуют на зрение, чем мерцание ЭЛТ) до сих пор хватает... факт: у кого еще осталась возможность купить в уценке ЭЛТ (обязательно с иямовской трубкой) - всем советую, покупают и радуются вывод из опыта наблюдений: трубка с частотой 100 и выше вполне себя оправдывает (потому и телевизор, частота у них обычно 60-70 герц, не могу смотреть)
  14. D.S.Denton

    тег comment

    эххх... был бы топик в лягушатнике - написал бы подробно, а поскольку задан он не в разделе для начинающих, это подразумевает что человек может делать какие-то выводы самостоятельно. тыкаю пальцем из чего надо сделать выводы:
  15. на принтер в принципе не выведется ничего из такой таблицы стилей. приглядись к строке: <LINK rel="stylesheet" type="text/css" media="screen" href="screen.css"> upd: кажется даже знаю причину (о которой косвенно свидетельствует и этот единственный написанный заглавными буквами тэг при наличии доктайпа) - TanaTiX просто копипастом делает страницу, не вникнув что же копирует
  16. D.S.Denton

    тег comment

    угу, есть. <!--[if IE]> ИЕ совсем не ня! <![endif]-->
  17. почему же... в БД (по крайней мере MySQL) особых перегрузок это не создает, по такому принципу сделано на mozilla-russia, создается таблица типа MEMORY
  18. <!-- OFFTOP BEGIN HERE --> ну это от ситуации зависит, вообще может топик во флудилку перенести и продолжить в нем тему о "чистоте" русского языка? тогда как раз посоветовал бы прочитать книгу Никонова "Апгрейд обезьяны", где и о борцах за чистоту "ридной мовы" много хорошего говорится <!-- OFFTOP END HERE --> ЗЫ: вот-с, моя даже не стал юзать, пардон - пользовать, слово оффтоп, написав original на чистом английском и даже взяв в чистый HTML'ный comment <!-- OOPS, SORRY, OFFTOP END HERE -->
  19. ну Дима не тебе это писал, а в ответ на: показал одной ссылкой правило апача - файлы с названием .ht считаются скрытыми и к ним доступа просто так не дает сам сервер, потому не надо плодить лишних сущностей (с)Оккама
  20. strCommand = "Select ID, article, text From Articles"; насколько понял код, судя по этому, запрос мы составили и дальше выполнили его на БД. остается тогда только что-либо сделать с полученным результатом, который сейчас содержится в myData... ну и значит функция этого куска кода УЖЕ выполнена, запрос отправлен и ответ получен, остается его обработать в последующем коде контент-страницы после вызова показанной нам функции
  21. это именно эксель или-таки имеется возможность в csv его держать? экселевский надо чем-нить предварительно парсить, т.к. это составной файл наподобие rar-архива, внутри которого форматом дозволено держать другие файлы и читать его надо в бинарном виде с csv же гораздо проще, оно по сути plain text, который можно в одну строку считать и сделать поиск внутри строки
  22. у меня подобные нехорошие визиты отслеживаются самописным логгером. алгоритм такой: проверяем запрос на наличие в нем стоп-слов. если встречаем, проверяем наличие флага был ли ранее уже запрос с таким-же стоп-словом с этойго айпи -> если был - добавляем айпи в блеклист если не был - просто ставим флаг что с этого айпи по такому-то стоп-слову уже было одно посещение, больше пока ничего не делаем (всякое бывает ведь, иногда маленькие дети балуются, начитавшись "хакера", на первый раз прощаем) затем проверяем IP -> если адрес в блеклисте, выдаем ошибку 403 Forbidden и завершаем работу если нет - работаем как обычно специфических стоп-слов не очень-то и много по сути - $_, SERVER, DOCUMENT_ROOT, http://, .php, .cgi, .pl - их набор зависит от того, что используется на сайте - ведь если не предусматриваешь что с твоего сайта могут уходить по ссылкам вида http://mysite.ru/goto=http://www.yandex.ru, любой запрос, содержащий http:// будет "незаконным". если же подобное возможно (например в каталоге ссылок), тогда надо фильтровать подробнее. ко мне как-то чаще ломятся с пустым UA, либо прикидываясь гуглевским/неткрафтовским пауком, встречал и просто ; либо запятую, а "не-браузеров" где-то треть от силы
  23. зато его можно деформировать
  24. а мне http://webew.ru/articles/1041.webew: малость другое сказал The table 'brevno_sessions' is full INSERT INTO webew.brevno_sessions (uuid, ipnum, useragent, referer) VALUES ('2331d318-bc68-102c-a48c-451bb7473f66', INET_ATON('213.171.40.114'), 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6', 'http://forum.htmlbook.ru/index.php?showtopic=14975&hl=') mysql_q
×
×
  • 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. See more about our Guidelines and Privacy Policy