RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 543
от 16.12.2006, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 390, Экспертов: 51
В номере:Вопросов: 5, Ответов: 14


Вопрос № 66358: Здравствуйте, уважаемые эксперты! Работаю на домашнем компьютере: WinXP pro sp2, установлен AppServ 2.5.7. Что у меня за проблема при обращении к mysqli из php? В приложении показан скрипт и ответ на него. Пример взят из руководства по php. Занимаюсь...
Вопрос № 66360: Обратил внимание на такую фичу как GZIP. Как я понял она помогает экономить трафик. А как её использовать на обычном сайт, соответственно с PHP всё в порядке... И ещё как установить время выполнения сценария... а ля RusFaq...
Вопрос № 66408: Уважаемые эксперты, есть такая задача. Есть один сервер, на котором разрешено выполнять php скрипты (PHP 4.0). Есть и второй, на котором лежат только html страницы. На первом сервере представлен список ссылок на файлы (лежащие на втором). Каким образ...
Вопрос № 66423: Подскажите, пожалуйста, on-line PHP справочник...
Вопрос № 66477: Как защитить изображение от скачивания через динамическое создаваемое изображение? Кто-нибудь делал подобное? Идея такая: - изображению даем имя вроде "foto.php"; - а при передаче доплнительных параметров, вроде "foto.php?...

Вопрос № 66.358
Здравствуйте, уважаемые эксперты! Работаю на домашнем компьютере: WinXP pro sp2, установлен AppServ 2.5.7. Что у меня за проблема при обращении к mysqli из php? В приложении показан скрипт и ответ на него. Пример взят из руководства по php. Занимаюсь по книге. Там тоже не работает ни один сценарий при обращении к mysqli.

Приложение:

Отправлен: 10.12.2006, 16:24
Вопрос задал: Козлов Олег Эдуардович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Денис Сергеевич
Добрый день.

По-моему, все же не mysqli, а mysql.

Приложение:

Ответ отправил: Денис Сергеевич (статус: 2-ой класс)
Ответ отправлен: 10.12.2006, 17:04
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Такая замена меня устроит, но считается, что "mysqli" работает быстрей.

Отвечает: Cimus
Здравствуйте, Козлов Олег Эдуардович!
Ошибка - Fatal error: Call to undefined function mysqli_connect() in F:AppServwww est.php on line 2 - говорит о том, что функции mysqli_connect() несуществует.

попробуйте mysql_connect().

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

Приложение:

---------
Достичь можно любых высот !

Ответ отправил: Cimus (статус: 9-ый класс)
Ответ отправлен: 10.12.2006, 19:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо, работает!

Отвечает: PVS
Здравствуйте, Козлов Олег Эдуардович!
В файле %windir%php.ini (обычно это значит c:windowsphp.ini) найдите строки
extension=....
extension=....
extension=....
и допишите (или разкоментируйте) строку
extension=php_mysqli.dll
и функции расширения mysqli должны заработать
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 11.12.2006, 10:08

Отвечает: Arykray
Здравствуйте, Козлов Олег Эдуардович!

Просто-напросто замените все строки: mysqli_connect

На mysql_connect

Разница в том, что после SQL в первом стоит i.
После замены должно заработать.
У меня, например скрипт выдал следующую фразу:

Host information: localhost via TCP/IP
---------
Чем сложнее задача, тем проще ее не решать.
Ответ отправил: Arykray (статус: 1-ый класс)
Ответ отправлен: 11.12.2006, 19:49


Вопрос № 66.360
Обратил внимание на такую фичу как GZIP.

Как я понял она помогает экономить трафик.
А как её использовать на обычном сайт, соответственно с PHP всё в порядке...

И ещё как установить время выполнения сценария... а ля RusFaq
Отправлен: 10.12.2006, 16:38
Вопрос задал: Motoroller (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Алексей Смуриков
Здравствуйте, Motoroller!
Да в некоторых случаях когда браузер поддерживает данное кодирование, а именно шлёт в заголовке:
Accept-Encoding: binary, TE
TE: gzip

Можно сделать так что если такой заголовок есть то сжимать полученную страничку (смотрите функции gz_*) и посылать в заголовке ответа:
Content-Encoding: gzip

А что же качается получения времени то это просто! В начале выполнения скрипта ставити что то типа:
$tim=time()+(double)microtime();
А когда надо написать сколько выполнялся:
echo "Скрипт выполнялся ". (time()+(double)microtime()-$tim). " сек.";

---------
Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 10.12.2006, 17:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо теперь всё ясно!
ЗЫ В следующий раз старайтесь не писать теги... Пришлось лезть в HTML.


Вопрос № 66.408
Уважаемые эксперты, есть такая задача. Есть один сервер, на котором разрешено выполнять php скрипты (PHP 4.0). Есть и второй, на котором лежат только html страницы. На первом сервере представлен список ссылок на файлы (лежащие на втором). Каким образом можно определить, не устарели ли ссылки на втором сервере, т.е. существует ли там файл с указанным адресом? Думаю, что можно как-то отправить файлу некий заголовок и посмотреть, какой header вернет сервер, а потом сравнить, не соответствует ли он ошибке 404 ? (т.е. файл отсутствует).
Отправлен: 10.12.2006, 21:21
Вопрос задала: Tatiana L (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Денис Сергеевич
Здравствуйте, Tatiana L!

Проверить, существует ли удаленный файл можно так:

$open=fopen("http://адрес_сайта/название_файла.html","r");
if (!$open) {
echo "Такой файл не найден";
exit;
}

Измените этот код так, как Вам нужно (в зависимости от того, какие действия Вы хотите запрограммировать, если файл не найден).
Ответ отправил: Денис Сергеевич (статус: 2-ой класс)
Ответ отправлен: 10.12.2006, 21:37

Отвечает: Константин
Здравствуйте, Tatiana L!
Отвечая на ваш комментарий, между прочим если доступ к файлу "запаролен", то открыть его не удастся. Если его перенесли, то открыть его не удастся и т.д. Иными словами, открытие произойдет только в случае если код возврата 200.

А получить заголовок... Ну посылайте HTTP-запрос с помощью curl (полезная библиотека) и смотрите ответ.

Но мне кажется - это лишняя головная боль. Вашу задачу решает предложенный Денисом Сергеевичем способ.

Буду очень благодарен, если вы мне приведете пример, когда он не работает :)
---------
Лучше сделать и жалеть, чем жалеть о том что не сделал
Ответ отправил: Константин (статус: 7-ой класс)
Ответ отправлен: 11.12.2006, 00:52

Отвечает: Cimus
Здравствуйте, Tatiana L!
Вы совершенно правы, достаточно отправить заголовок и посмотреть ответ.

Приложение:

---------
Достичь можно любых высот !

Ответ отправил: Cimus (статус: 9-ый класс)
Ответ отправлен: 11.12.2006, 01:47


Вопрос № 66.423
Подскажите, пожалуйста, on-line PHP справочник
Отправлен: 10.12.2006, 23:06
Вопрос задала: YASMIN (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Денис Сергеевич
Здравствуйте, YASMIN!

Посмотрите здесь: http://www.php.net/manual/ru/ . Не все переведено на русский, часть только на английском.
Ответ отправил: Денис Сергеевич (статус: 2-ой класс)
Ответ отправлен: 10.12.2006, 23:13
Оценка за ответ: 5

Отвечает: Cimus
Здравствуйте, YASMIN!
Вот довольно не плохая подборка
http://myphp.net.ru/
http://phpclub.ru/detail/
http://www.sql.ru/
http://www.mysql.ru/docs/man/Tutorial.html
http://forum.vingrad.ru/index.php?showtopic=34297
http://www.iho.ru/faq/manual/htaccess.html
http://www.php.su/
http://www.codenet.ru/webmast/apache/Apache-WindowsNT/httpdconf.php
http://www.php.net/manual/ru/


---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 9-ый класс)
Ответ отправлен: 11.12.2006, 00:11
Оценка за ответ: 5

Отвечает: Константин
Здравствуйте, YASMIN!
php.net - самый лучший. Там можно скачать документацию и на русском тоже. Но очень советую осваивать английский, с ним жизнь многократно упрощается и возможности очень расширяются.
Это вопрос человека, который не знает, что такое поисковые системы. Или очень ленивый. В обоих случаях если вы не измените сове отношение, программировать у вас не выйдет :(
---------
Лучше сделать и жалеть, чем жалеть о том что не сделал
Ответ отправил: Константин (статус: 7-ой класс)
Ответ отправлен: 11.12.2006, 00:55


Вопрос № 66.477
Как защитить изображение от скачивания через динамическое создаваемое изображение? Кто-нибудь делал подобное?
Идея такая:
- изображению даем имя вроде "foto.php";
- а при передаче доплнительных параметров, вроде "foto.php?img=123" (где "123" - ссылка на изображение, которое накладывается на фон) показывается нормальное изображение;
По идее, если пользователь попытается скачать "foto.php" - браузер перед скачиванием перегрузит его без параметров и пользователь получит просто белый фон.
.
Я прав?
Или есть другие идеи по защите изображений через php?
Отправлен: 11.12.2006, 09:36
Вопрос задал: Php23 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: PVS
Здравствуйте, Php23!
Браузер скачивает полную ссылку, тоесть со всеми параметрами. Кроме того если картинка уже видна пользователю, то с большой вероятностью она уже у него в кешэ. Единственный работающий способ защиты - через всю картинку по диагонали написать "PREVIEW" или "УКРАДЕНО С WWW.MYSITE.COM"
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 11.12.2006, 10:25

Отвечает: Punk_UnDead
Здравствуйте, Php23!
идей куча, только смысла от них нет, на сырцах долго на эту тему тёрли
реально можно только сделать картинку доступной временно
а всё остальное эмулируеться
потому как абсолютная зашита - это когда вообще ничего не скачается
а ведь в конце концов её скачивать всё таки надо
все проверки куков, адреса с которого проводится загрузка и прочего дают мало толку
свою лепту также вносит некоторая асинхронность самого веб
если не дать прямой ссылки, то картинка и не загрузится, если ссылку модифицировать во время выполнения, то её всё равно можно будет извлечь

да и в конце концов, зачем вам это надо, приложите своё рвение к другому разделу и не старайтесь сделать изначально опенсорсный веб закрытым, он не терпит этого
---------
всё испытано на себе
Ответ отправил: Punk_UnDead (статус: 3-ий класс)
Ответ отправлен: 11.12.2006, 10:41

Отвечает: Барков Илья Андреевич
Здравствуйте, Php23!

А может лучше в index.php писать в сессию "LOGGED ON SITE"=true, а в фото.пхп потом проверять, пришел ли человек с главной страницы (тоесть походил по сайту и наткнулся).

И вообще - от кого защищать-то? если так, чтобы зарегеные пользователи не могли посмотреть - то проверять авторизацию. делов-то.
if (!$obj->sess_auth()) { // собственная функция для проверки авторизации в сессии (либо кукесах)
echo "Доступ к просмотру запрещен";
}
Ответ отправил: Барков Илья Андреевич (статус: 5-ый класс)
Ответ отправлен: 11.12.2006, 12:52


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное