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

  Все выпуски  

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


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

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

Выпуск № 398
от 14.07.2006, 00:05

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


Вопрос № 48508: Добрый день! Где можно взять готовый или как самому написать собственный блог? Заранее благодарен за ответы. Спасибо!...
Вопрос № 48509: Добрый день! Нужен скрипт для голосований на PHP с защитой от повтрорного голосования. А имеено, как реализовать защиту. Буду очень рад, если вы приложите исодник к вашему ответу. Спасибо!...
Вопрос № 48510: Что означает знак '@' перед некоторыми функциями и переменными? Например: @fsockopen('site.ru', 80);...
Вопрос № 48513: Добрый день! Необходим скрипт реализации комментариев к статьям сайта. Какой скрипт лучше использовать. Дайте ссылки или предоставьте исходник. Заранее благодарю...
Вопрос № 48528: Здравствуйте еще раз уважаемые. Я совсем замучался с картинкой. Сил уже просто нет. А проблема все же мной раньше была описана не верно. Суть в том, что если пользователь не ввел правильно цифири с картинки ему высвечиваеться уведомление об этом. Но ...
Вопрос № 48529: Доброго времени суток. Задаю еще один вопрос. Я не решился задать его вопросом ранее, потому что немного другая тема. Я бы хотел узнать о HTTP_HOST в Мануале написано так мало, что я честно ничего не понял. А цель такова. Я не надеюсь на ($_SERV...
Вопрос № 48538: Добрый день всем.Есть у меня на сайте гостевая книга, с недавнего времени туда повадились разные писатели, вписывают адреса сайтов и прочую ерунду. Как адреса запретить я нашел, но теберь стали писать просто на английском ерунду какую-то.Подскажите, ...

Вопрос № 48.508
Добрый день!

Где можно взять готовый или как самому написать собственный блог?

Заранее благодарен за ответы.

Спасибо!
Отправлен: 08.07.2006, 01:20
Вопрос задал: Демьянчук Виталий (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jeka911
Здравствуйте, Демьянчук Виталий!

Wordpress: http://wordpress.org/
---------
Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 6-ой класс)
Ответ отправлен: 08.07.2006, 01:37


Вопрос № 48.509
Добрый день!

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

Спасибо!
Отправлен: 08.07.2006, 01:22
Вопрос задал: Демьянчук Виталий (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Stamm
Здравствуйте, Демьянчук Виталий!
Можно сделать защиту через cookie, но пользователь может отключить куки, и тогда всё......
Способ 2: защита через IP. Опять же она не будет работать, если пользователь голосует через прокси, и если сидит по модему(но это не так страшно),т.к. если он захочет пройти защиту, ему надо будет отключаться от инета, а потом опять подрубаться. Это будет накладно для такого пользователя.
Я, например, сам написал скрипт голования с защитой через IP-адрес. В нём реализовано добавление-удаление вопросов,добавление-удаление ответов через web-интерфейс. Также если есть два и более опроса, выводиться один, случайным образом. Скрипт использует БД MySQL.
Можешь сам попробывать проголовать 2 раза:
www.stamm.jino-net.ru/gol.php

Если хочешь, могу скинуть скрипт на мыло
---------
Этот мир обречён на нас ©Сергей Маврин
Ответ отправил: Stamm (статус: Студент)
Ответ отправлен: 08.07.2006, 10:21
Оценка за ответ: 5
Комментарий оценки:
Было бы неплохо. E-mail: webmaster@vitaweb.pp.ru


Вопрос № 48.510
Что означает знак '@' перед некоторыми функциями и переменными?

Например: @fsockopen('site.ru', 80);
Отправлен: 08.07.2006, 01:24
Вопрос задал: Alexorg (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Alexorg!

Это означает, что Вы запрещаете php обрабатывать ошибки, которые могут возникнуть при выполнении помеченных таким образом функций. Обычно используется если Вы хотите обрабатывать ошибки сами.

Например, функция открытия файла:
fopen("file.txt","r");
если вдруг такого файла не существует, либо произойдет ошибка чтения файла, тогда php выведет на экран ошибку, что не удалось открыть файл. Возможно Вам этого не надо, тогда используйте @ перед названием функции и обрабатывайте эту ошибку сами, либо не обрабатывайте вообще.

С уважением,
Антон Цепковский.
---------
Вся наша жизнь - RPG
Ответ отправил: Цепковский Антон Сергеевич (статус: 2-ой класс)
Ответ отправлен: 08.07.2006, 01:50

Отвечает: Stamm
Здравствуйте, Alexorg!
подавляет сообщение об ошибке. Обычно используют при проверке переменных отправленных с формы: if (@$_REQUEST['anything']). Никогда не ставьте @ перед include и require, т.к. @ будет подавлять все ошибки, кот. будут во включаемом файле.
---------
Этот мир обречён на нас ©Сергей Маврин
Ответ отправил: Stamm (статус: Студент)
Ответ отправлен: 08.07.2006, 10:21

Отвечает: Alexey Vilchinsky
Здравствуйте, Alexorg!
запрещает функции выдавать в браузер сообщение в случае, если произошла ошибка.
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 10-ый класс)
Ответ отправлен: 10.07.2006, 10:33

Отвечает: PVS
Здравствуйте, Alexorg!
Если в php.ini включена выдача предупреждений/ошибок и случается ситуация когда такая ошибка возникает, то PHP выводит свой текст (такая-то ошибка произошта в таком-то скрипте, на такой-то строчке). Чтобы не получать этих сообщений в местах с заранее известными возможными ошибками и пишется символ @. Таким образом в примере который Вы написали PHP будет молчать если 80 порт на хосте site.ru открыть не удастся
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 10.07.2006, 11:26


Вопрос № 48.513
Добрый день!

Необходим скрипт реализации комментариев к статьям сайта.

Какой скрипт лучше использовать.
Дайте ссылки или предоставьте исходник.

Заранее благодарю
Отправлен: 08.07.2006, 01:42
Вопрос задал: Демьянчук Виталий (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Марк Крейн
Здравствуйте, Демьянчук Виталий!
Огромная база скриптов находится здесь: http://www.hotscripts.com
Я думаю, что на указанном сайте Вы найдёте всё что Вам нужно.
Удачи!
Ответ отправил: Марк Крейн (статус: 8-ой класс)
Ответ отправлен: 08.07.2006, 04:20
Оценка за ответ: 3
Комментарий оценки:
Я на нёи ничего не нашёл


Вопрос № 48.528
Здравствуйте еще раз уважаемые. Я совсем замучался с картинкой. Сил уже просто нет. А проблема все же мной раньше была описана не верно. Суть в том, что если пользователь не ввел правильно цифири с картинки ему высвечиваеться уведомление об этом. Но надо сделать так, что бы при нажатии в барузере стрелки "назад" оставались данные в формах (это я решил), но картинка должна смениться. И как этос делать? передать второй параметр? пробовал передать текущее время через амперсанд (&), но результата не дало никого. Я совсем замучался. А сделав возврат на страницу черезс сылку - теряю данные из формы. Помогите пожалуйста решить эту проблему.
Ниже код картинки.

Приложение:

Отправлен: 08.07.2006, 12:33
Вопрос задал: Чинга (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Чинга!

Попробуйте сделать что-то подобное приложению. Т.е. проверяете условие верности правильно набраного номера, если не верно - в поля значение по умолчанию стает равным тому, которое было введено ранее.
Вместо $_POST["login"]<>'правильный логин' нужно поставить условие правильности введенного номера.

Удачи!

Приложение:

---------
Ответы на все вопросы - на сайте www.ya.ru

Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 08.07.2006, 13:12
Оценка за ответ: 5
Комментарий оценки:
Благодарю. Очень интересно. Я попробую.

Отвечает: Cimus
Здравствуйте, Чинга!
Что б картинка не сохранялась браузером и он всегда запрашивал новую страницу с сервера, а не из своего кеша, при переходе назад - надо отправить браузеру заголовки:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

Поля из формы можно сохранить в кукак или в сессии и потом вернуть на прежнее место при переходе на следующую страницу.
---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 5-ый класс)
Ответ отправлен: 08.07.2006, 16:25
Оценка за ответ: 4
Комментарий оценки:
Да я сделал эту функцию. Она работает. Но на счет картинки не срабатывает там немного другой код нужен. А на счет полей попробую сделать. Только чуть-чуть не поняно как их возвращать. Потому что будет не переход на другую страница а возвращение на прошлую. Но я думаю это не сильная проблема по сравнению с картинкой.

Отвечает: PVS
Здравствуйте, Чинга!
Сделайте для возврата форму с кучей input type=hidden, в ней сохраните ответы пользователя и по своей кнопке "Назад" отправляйте их обратно. (Думаю Вам все равно ссылка там будет или кнопка)
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 10.07.2006, 10:18

Отвечает: Alexey Vilchinsky
Здравствуйте, Чинга!
Если вы хотите, чтобы картинка была новая, необходимо перезагрузить страницу. Именно поэтому нельня при нажатии назад возвращаться по истории страницы назад.
Рекомендую сделать так:
Сохранять данные в скрытых полях формы, а при нажатии назад не возвращаться по истории, а просто вызывать свойство submit формы.
Соотвественно, получится, что ваша страница перезагрузится с теми же данными и картинка обновится.
Единственное, придется передавать еще какой нибудь параметр, иначе получится, как будто на первой странице вы уже нажали отправить, а код на странице не ввели и будет сообщение об ошибке.
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 10-ый класс)
Ответ отправлен: 10.07.2006, 10:56


Вопрос № 48.529
Доброго времени суток. Задаю еще один вопрос. Я не решился задать его вопросом ранее, потому что немного другая тема.
Я бы хотел узнать о HTTP_HOST в Мануале написано так мало, что я честно ничего не понял. А цель такова. Я не надеюсь на ($_SERVER["REQUEST_METHOD"] так как думаю его можно подделать. И потому я бы хотел проверить откуда скрипту передались данные и проверить их с переменной. в которой тоже будет записан адрес, откуда должны придти данные - с сервера провайдера, где расположен скрипт.
И второй вопрос по той же теме. Как Вы думаете, это бы было бы достаточно для создания зашиты скрипта от поддельных данных? Благодарю заранее.
Отправлен: 08.07.2006, 12:38
Вопрос задал: Чинга (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, Чинга!

Подделать тип запроса невозможно, потому что для каждого типа запроса свой способ передачи данных. Например, при запрсе GET на сервер поступает такой запрос:

GET /index.php?name=chinga&id=1 HTTP/1.0
User-Agent: Mozila/3.0
Accept: text/html
Accept: image/gif

а при POST такой:

GET /index.php HTTP/1.0
User-Agent: Mozila/3.0
Accept: text/html
Accept: image/gif
Content-Type: application/x-www-form-urlencoded
Content-Length: 86

name=Chinga
&id=1

Ответ отправил: Physicist (статус: 3-ий класс)
Ответ отправлен: 08.07.2006, 12:59
Оценка за ответ: 5
Комментарий оценки:
Благодарю ответ, но мне очень важно проверить что бы скрипт данные получил именно с с формы лежашей на сайте провайдера, а не подделаного злоумышленником формы, которая находиться может, где угодно.

Отвечает: Cimus
Здравствуйте, Чинга!
У PHP есть одна интересная переменная окружения: HTTP_REFERER. В ней должен находиться путь к файлу, из которого был запущен сценарий.
Давайте создадим файл env.php со следующим содержимым:
<?
print $HTTP_REFERER;
?>

<form action="env.php" method=post>
текст: <input name=server>
<br>
<input type=submit value="OK">

При работе данного сценария я увидел http://localhost/env.php

Дале если сохранить эту форму на жёсткий диск и исправит путь в поле action так, чтобы данные из формы передавались веб-серверу (action="http://localhost/env.php " ) и попробовать передать данные, то переменная $HTTP_REFERER будет содержать, что угодно но только не адрес сервера http://localhost/env.php .
Изходя из этого можно будет делать проверки на то, откуда идут данные.

---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 5-ый класс)
Ответ отправлен: 08.07.2006, 17:08
Оценка за ответ: 5
Комментарий оценки:
Очень полезно! Благодарю. Это очень хорошая возможность делатьи проверки и "подстраховки". %)


Вопрос № 48.538
Добрый день всем.Есть у меня на сайте гостевая книга, с недавнего времени туда повадились разные писатели, вписывают адреса сайтов и прочую ерунду. Как адреса запретить я нашел, но теберь стали писать просто на английском ерунду какую-то.Подскажите, как вписать фильтр, отрубающий все английские буквы.
Отправлен: 08.07.2006, 14:08
Вопрос задал: Шапошников Игорь Олегович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cimus
Здравствуйте, Шапошников Игорь Олегович!

Думаю эта конструкция Вам поможет:

$text='Privet Привет';
$result=eregi_replace("[a-z]",null,$text);
print $result;
---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 5-ый класс)
Ответ отправлен: 08.07.2006, 17:22
Оценка за ответ: 5
Комментарий оценки:
Да,спасибо, это то что нужно


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное