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

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

  Все выпуски  

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 829
от 05.12.2007, 02:35

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


Вопрос № 111486: Подскажите, что значит и делает это: $message=<<< EOMSG если можно то скиньте ссылку на описание. Заранее спасибо!...
Вопрос № 111489: Здравствуйте! Возникла проблема при обновлении браузер (например, нажатем кнопки F5) происходит повтроный ввод информации в базу данных из формы, как этого избежать? Мой код приведем в приложении....
Вопрос № 111535: При выводе значений из MySQL при помощи Функции mysql_fetch_array дублирует их столько раз сколько полей было выбрано рпи выборке из БД. Почему? И приходится при выводе значений на страницу, указывать инкремент счетчика равный количеству полей вы...
Вопрос № 111640: Здравствуйте! Возникли такие вопросы: 1) каким образом можно заставить ссылку в форме работать как кнопку, ну т.е. чтоб при нажатии на неё она отправила post запрос?...

Вопрос № 111.486
Подскажите, что значит и делает это:
$message=<<< EOMSG
если можно то скиньте ссылку на описание.
Заранее спасибо!
Отправлен: 29.11.2007, 02:34
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: proger
Здравствуйте, Mart!
это сиснтаксиc heredoc.
В PHP строковые константы можно заключать либо в двойные кавычки, либо в одинарные либо вот в такие конструкции heredoc.
Синатксиси таков
$var = <<< ID // можно вместо ID использовать любой идентификатор
здесь идет строка
здесь идет строка
здесь идет строка
ID; // а это закрывающий идентификатор и должен быть точно таким же как и открывающий

Ответ отправил: proger (статус: 2-ой класс)
Ответ отправлен: 29.11.2007, 11:17


Вопрос № 111.489
Здравствуйте! Возникла проблема при обновлении браузер (например, нажатем кнопки F5) происходит повтроный ввод информации в базу данных из формы, как этого избежать? Мой код приведем в приложении.

Приложение:

Отправлен: 29.11.2007, 04:37
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Товарищ Бородин
Здравствуйте, Mart!
Во-первых, можно индексировать записи в базе данных, дабы не появлялось одинаковых записей. Я говорю про присвоение какому-либо полю в таблице индекса INDEX или UNIQUE. Но это способ довольно ресурсоемкий. Кроме того, большинство людей вообще переписываются короткими и пошлыми фразами типа "привет как дела".
Другой способ - проставить в форме, которую Вы отправляете, атрибут action с несколько измененным значением - например, добавляйте в конец url результат работы функции time(). Например, таким образом(см. приложение, п. 1). Что с этим потом делать? Можно проверить что текущее значение, возвращаемое функцией time() равно значению переменной $_GET['rand'] и делать запись в базу только в этом случае. Опасность есть и здесь. Время работы такой конструкции имеет порядок примерно 0.0001 с. Представим себе ситуацию, что форму мы отослали 29 ноября 2007 года в 4:37:43.99999. Тогда форма может не быть принятой потому, что time() возвратит значение, отличное от значения переменной $_GET['rand']. Чем быстрее работает скрипт, тем ниже такая вероятность. Она и так, вообще-то, низкая, но она есть, хотя на первый взгляд и кажется абсурдной.
После того, как мы отослали форму, при нажатии кнопки F5 запрашиваемый url не изменится. Зато изменится значение time(), и форма не будет принята.

После того, как форма загружена, можно сделать перенаправление на исходную страницу путем посыла заголовка "Location: URL" функцией header. Но этот способ не сработает, если Вы уже что-то при этом в браузере вывели. Например, сообщение какое-то, да достаточно вывести один пробел, как этот способ уже не будет работать. Тогда можно применить JavaScript(см. п.2 приложения). Но и у этого способа есть крупный недостаток - некоторые "умные" пользователи отключают JavaScript.

Вот так-то. Удачи!

Приложение:

---------
Ничто не сближает людей так, как совместное преступление.

Ответ отправил: Товарищ Бородин (статус: Студент)
Ответ отправлен: 29.11.2007, 08:44

Отвечает: PVS
Здравствуйте, Mart!
Оба способа из предыдущего ответа аж просятся "склеить" их:
Сделайте в таблице поле "время добавления" с уникальным индексом и записывайте в него значение параметра rand.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 29.11.2007, 10:09

Отвечает: Райкин Сергей Александрович
Здравствуйте, Mart!
У меня на форме стоит защита - капча, и при занесении данных в базу сесиия с капчей обнуляеться, при этом нажимая Ф5 пользователь видит - "Вы не верно ввели число с картинки".
Второе, чем я пользуюсь, является проверка всех или критических полей, на наличие дубликатов.

Приложение:

---------
программист должен работать в свое удовольствие

Ответ отправил: Райкин Сергей Александрович (статус: 4-ый класс)
Ответ отправлен: 29.11.2007, 15:33


Вопрос № 111.535
При выводе значений из MySQL при помощи Функции mysql_fetch_array дублирует их столько раз сколько полей было выбрано рпи выборке из БД. Почему?
И приходится при выводе значений на страницу, указывать инкремент счетчика равный количеству полей выборки, что неудобно.

При использовании mysql_fetch_row мне не нравится, что нельзя пользоваться ассоциативными ключами.

Приложение:

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

Отвечает: Ярослав
Здравствуйте, Schel4ok!
а вы непробовали вот так
........
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\\t\\t<td><a href=\\"$line[filename]\\" title=\\"$line[menuitem]\\">$line[menuitem]</a></td>\\n";

}
.......
и цикл там не нужен, у вас ведь есть конструкция while
Ответ отправил: Ярослав (статус: 1-ый класс)
Ответ отправлен: 29.11.2007, 12:14


Вопрос № 111.640
Здравствуйте!
Возникли такие вопросы:
1) каким образом можно заставить ссылку в форме работать как кнопку, ну т.е. чтоб при нажатии на неё она отправила post запрос?
Отправлен: 29.11.2007, 22:12
Вопрос задал: Артемка Вич Нетович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: proger
Здравствуйте, Артемка Вич Нетович!
Признаться честно я думал у вас будет несколько вопросов, судя по тому как вы начали..
зачем здесь использовать PHP не понятно... все это делается с помощью javaScript. Для этого просто в атрибуте href тега вашей ссылки нужно написать javascript код, который имитирует нажатие кнопки submit в форме. Пример ниже

<form method="post" name="form" action="http://www.ya.ru">
<input type="text">
<a href="javascript:document.form.submit();">jkhgfd</a>
</form>

при этом ссылка может находиться ка внутри форму так и за пределами нее))

Приложение:

Ответ отправил: proger (статус: 2-ой класс)
Ответ отправлен: 29.11.2007, 22:24

Отвечает: Товарищ Бородин
Здравствуйте, Артемка Вич Нетович!
PHP такое не позволяет делать однозначно, он для других целей предназначен. Вопрос лежит в плоскости JavaScript. Итак, чтобы отправить данные методом POST, GET, да все равно каким методом, надо прописать в атрибуте onclick код приблизительно такой:

document.getElementById('значение атрибута ID формы').submit();

Но еще лучше написать код прямо в href`е ссылки:

href="javascript: document.getElementById('значение атрибута ID формы').submit();"

Проверил код на IE7, работает. Но поскольку submit зашит в JavaScript уже издревле, должно сработать в других браузерах.
---------
Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Товарищ Бородин (статус: Студент)
Ответ отправлен: 29.11.2007, 22:26

Отвечает: Миленин Александр
Здравствуйте, Артемка Вич Нетович!
Вот таким образом: <input type="button" onClick="document.location.href='http://site.ru';" value="Push">

P.S. К PHP это никакого отношения не имеет.
Ответ отправил: Миленин Александр (статус: 8-ой класс)
Ответ отправлен: 30.11.2007, 00:39


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.65 от 04.12.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное