Отправляет email-рассылки с помощью сервиса Sendsay

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

  Все выпуски  

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


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

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

Выпуск № 590
от 07.02.2007, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 415, Экспертов: 56
В номере:Вопросов: 4, Ответов: 9


Вопрос № 73721: Уважаемые эксперты! Существуют ли средства, позволяющие отследить нажатие кнопки "Назад" браузера. Мне нужно запрограммировать реакцию на это действие. Валентина...
Вопрос № 73756: Здравствуйте! Задавал вопрос в ветку веб-дизайн, но отвечают вяло иответы меня не удовлетворили. Может Вы поможете. У меня сайт сделан с использованием фреймов. Слева – меню. Документы открываются в правом. Сейчас хочу перейти на таблицу. Схема ...
Вопрос № 73786: Напишите механизмы создания страниц через систему управления содержанием(через админку). Как вы это осуществляете. Либо прямо создавать страницу с содержанием, которое ввёл пользователь и помещать в эту страницу текст, называть её по имени,...
Вопрос № 73827: И снова добрый день, уважемые эксперты! Вопросов на этот раз 3. 1 Объсните, почему функция preg_replace так плохо работает в Денвере? Переписывется только последний найденный элемент и зачем-то требует "/"? (см. скрипт в приложении...

Вопрос № 73.721
Уважаемые эксперты!
Существуют ли средства, позволяющие отследить нажатие кнопки "Назад" браузера. Мне нужно запрограммировать реакцию на это действие.
Валентина
Отправлен: 02.02.2007, 06:46
Вопрос задал: Валентина (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Валентина!
В пределах PHP - точно нет, потому что кнопки "Назад", "Вперёд" и т.п. - это кнопки, выполняющие действия на стороне клиента. Возможно, их нажатие можно отследить с помощью JavaScript. Например, можно сделать html-ссылку, которая будет имитировать нажатие кнопки "Назад": <a href="" onclick="window.history.back(0);">...<a> В дополнение к этому отмечу, что эти кнопки созданы для удобства пользователя, а не для функциональности сайтов. С их помощью можно просмотреть страницы, которые были открыты в окне до этого, не загружая их заново. А если кнопку "перепрограммировать", то она потеряет своё истинное назначение. Это не есть хорошо, имхо. Рекомендую воспользоваться ссылками такого образца, как я привёл. Желаю удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
----
Ответ отправлен: 02.02.2007, 09:14
Оценка за ответ: 5
Комментарий оценки:
Благодарю за ответ.
Я разрабатываю электронный учебник для дистанционного обучения с контролем знаний, мне нужно, чтобы пользователь после отправки ответа и последующего получения оценки своей работы не мог вернуться на предыдущую страницу и повторить отправку ответа. Хотя, может быть, мне удастся это сделать с помощью сессий.

Отвечает: Бородин Александр Олегович
Здравствуйте, Валентина!
В PHP это у Вас не получится(PHP исполняется на стороне сервера и ему параллельно, есть ли вообще в Вашем браузере кнопка "Назад"), советую поинтересоваться наличием средств для этого в JavaScript. Судя по всему нужно работать с объектом history. Он как раз и содержит информацию о том, куда "назад" ходил посетитель.
---------
Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Ответ отправил: Бородин Александр Олегович (статус: 3-ий класс)
Ответ отправлен: 03.02.2007, 08:56

Отвечает: Барков Илья Андреевич
Здравствуйте, Валентина!
Напишите на JavaScript перехватчик нажатия клавиш и делайте что угодно при нажатие на эту кнопку.
например можно создать невидимый фрейм, а в нем выполнять пхп действия.
лабо аяксом тоже самое.
проще пареной репы.
Ответ отправил: Барков Илья Андреевич (статус: 8-ой класс)
Ответ отправлен: 03.02.2007, 20:10
Оценка за ответ: 4


Вопрос № 73.756
Здравствуйте! Задавал вопрос в ветку веб-дизайн, но отвечают вяло иответы меня не удовлетворили. Может Вы поможете.
У меня сайт сделан с использованием фреймов. Слева – меню. Документы открываются в правом. Сейчас хочу перейти на таблицу. Схема в приложении.
Во вторую колонку грузится файлик с новостями.
Вопрос. Можно ли, не перегружая все, загрузить нажатием на пункт меню или на ссылку внутри второй колонки файл в эту же вторую колонку?

Приложение:

Отправлен: 02.02.2007, 12:14
Вопрос задал: Olibel (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Селев Валерий
Здравствуйте, Olibel!

Да, это возможно реализовать используя:
- IFRAME
- AJAX

IFRAME - всё просто:

Left menu:
<a href="my.html" target="rightColumn">Link</a>
.....
<iframe name="rightColumn"></iframe>
AJAX - посложнее. Тут необходимо знание JavaScript. В сети полно примеров.
Вкратце - при помощи JavaScript создается запрос на сервер, серверный скрипт (напрример, php) отдаёт в ответе только ту часть, которую необходимо перезагрузить. Потом джаваскриптом эту часть вставляешь в правую часть сайта.
Ответ отправил: Селев Валерий (статус: 3-ий класс)
Ответ отправлен: 02.02.2007, 12:27
Оценка за ответ: 5
Комментарий оценки:
А есть возможность сделать высоту ифейм резиновой?

Отвечает: Punk_UnDead
Здравствуйте, Olibel!
буду краток(с)
ДА!

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

---------
всё испытано на себе
Ответ отправил: Punk_UnDead (статус: 3-ий класс)
Ответ отправлен: 02.02.2007, 12:42

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

<a href='/news.html' target="news_block">
так осуществляется задание открытие ссылки в фреймах.

"или на ссылку внутри второй колонки файл в эту же вторую колонку?"
просто ссылкой без target-a
Ответ отправил: Барков Илья Андреевич (статус: 8-ой класс)
Ответ отправлен: 03.02.2007, 20:08
Оценка за ответ: 5
Комментарий оценки:
Отлично! Но поскольку я написал, что у меня с фреймами работает, то надо бы ставить ПЛОХО :-)


Вопрос № 73.786
Напишите механизмы создания страниц через систему управления содержанием(через админку).
Как вы это осуществляете.
Либо прямо создавать страницу с содержанием, которое ввёл пользователь и помещать в эту страницу текст, называть её по имени, которое ввёл пользователь.

Либо создавать запись в таблице БД, из которой потом вытаскивать содержимое при помощи параметров в строке адресной(www.site.ru/index.php?pagenamefromDB=about)

Напишите правильный вариант, мои могут быть заблуждением... я ЦМС с созданием страниц пока не делал. Создание новостей, голосований, гостевые администрируются через мою админку, пользователи, но не создаются ещё пока страницы.
Напишите - мне все равно придётся создавать эту функцию.
Отправлен: 02.02.2007, 16:43
Вопрос задал: PetrKi. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Бородин Александр Олегович
Здравствуйте, PetrKi.!
Лучше всего воспользоваться шаблонами. Если есть мануал по системе Smarty, советую почитать его и глубоко им проникнуться. Ну и заодно мне его дать. Если есть копия :-)
Если нет желания долго вчитываться, создайте свой обработчик шаблона. Скажем, изменяемые части шаблона заключаются в фигурные скобки, а значения переменных хранятся в обработчике. Шаблон открывается функцией fopen, превращается в строку и обрабатывается функцией обработки строк, например, с помощью регулярного выражения. На мой взгляд, лучше всего использовать объектно-ориентированный подход. Тогда, если Вы программируете на PHP5, Вы можете создать удобный класс для работы с шаблонами.
Можно создать шаблон, порезать его на части и каждую часть сохранить в отдельном файле. А потом инклюдить, инклюдить и еще раз инклюдить...
---------
Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Ответ отправил: Бородин Александр Олегович (статус: 3-ий класс)
Ответ отправлен: 03.02.2007, 09:07

Отвечает: Angel7
Здравствуйте, PetrKi.!

Думается, Вы имеете в виду функции РНР fopen, fread, fclose. Почитать об этом можно здесь.

Удачи!
---------
Не попрекай людей тем, в чём сам слаб.
Ответ отправила: Angel7 (статус: Студент)
Ответ отправлен: 04.02.2007, 20:54


Вопрос № 73.827
И снова добрый день, уважемые эксперты!
Вопросов на этот раз 3.
1 Объсните, почему функция preg_replace так плохо работает в Денвере? Переписывется только последний найденный элемент и зачем-то требует "/"? (см. скрипт в приложении)
2 Как узнать номер элемента в массиве, чтобы обратиться напрямую по типу $arrey [2]?
3 Можно ли в функции preg_replace задать номер элемента массива, который надо переписать? По типу "элемент№х массива $arrey заменить на ХХ"?
Спасибо!

Приложение:

Отправлен: 02.02.2007, 22:35
Вопрос задала: Ling (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Liw
Здравствуйте, Ling!

1.1В данном случае вы не целесобразно импользуете preg_replace,
так как эта функция использует замену по регулярному выражению,
(отсюда и /) так как этого не требуется используйте str_replace

1.2 Вы не верно добавляете значение в массив - preg_replce тут ни причём -
нужно так: $arr_plus[] = 'значение'
-у Вас получается присваивание каждый раз нового значения.

1.3 preg_replace("/$i/","$tag",$rez); это вообще зачем?
- вы берёте каждый раз разные строки для поиска замены а массив один и тот же
нужно было сначало создать массивы поиска/замены а потом заменять:
т.е. просто:
A: вынести preg_replace("/$i/","$tag",$rez); за цикл foreach
В: создать два массива поиск/замена
итого:
foreach ($rez as $i)
{
$replacement[] = "<w id='' n=''>$i</w> ";
$pattern[]="/$i/";
};
reset($rez);
$arr_plus = preg_replace($pattern,$replacement,$rez);

Распечатаем результат: print(htmlspecialchars(print_r($arr_plus,true)));

Array ( [0] => <w id='' n=''>Господин</w> [3] => <w id='' n=''>голой</w> [4] => <w id='' n=''>головой</w> [4] => <w id='' n=''>гололеду</w> )
2. Сомневаюсь что понял вопрос, но если нужно узнать текущий ключ массива
так key('значение') или получить список ключей array_keys(array)

3. Смотрите 1.3

С учётом всего выше, - как вариант, - код в приложении

Приложение:

Ответ отправил: Liw (статус: 1-ый класс)
Ответ отправлен: 03.02.2007, 02:02
Оценка за ответ: 4


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

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

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

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

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


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


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

В избранное