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

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

  Все выпуски  

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


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

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

Выпуск № 740
от 16.08.2007, 14:05

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


Вопрос № 97956: Привет . Подскажите, как на php сделать редирект или это только задача javascript. Спасибо....
Вопрос № 97957: Здравствуйте! Есть дилетантский вопрос. Имеется на индексной странице скрипт, который должен выполняться, как бы, автоматически, т.е. сравнивает текущую дату с датой записи из БД и при совпадении запись удаляется. Вопрос такой: скрипт будет испол...

Вопрос № 97.956
Привет . Подскажите, как на php сделать редирект или это только задача javascript. Спасибо.
Отправлен: 10.08.2007, 15:52
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Nexus
Здравствуйте, Александр Михайлович!

header("location: index.php");

перед вызовом ф-ции header браузеру не должны отдаваться данные. поэтому если нужен редирект с задержкой и сообщением типа "что-то-там сделано",то это уже джаваскриптом или метатэгами
Ответ отправил: Nexus (статус: 9-ый класс)
Ответ отправлен: 10.08.2007, 15:58

Отвечает: Oleg S. Mezhov
Здравствуйте, Александр Михайлович!
зависит от ваших нужд. бывают редиректы внтренние(на веб-сервере), бывают внешние(на клиенте).
если нужно сделать именно на php, то я часто использую такую функцию:

Приложение:

Ответ отправил: Oleg S. Mezhov (статус: 3-ий класс)
Ответ отправлен: 10.08.2007, 15:59

Отвечает: Flynn
Здравствуйте, Александр Михайлович!
Если у тебя не выведено еще ни одного символа, то редирект можно сделать функцией header
header("Location: all_good.php");
И соответственно можно сразу закрывать сценарий, так как того что там будет выведено, пользователь все равно не увидит, так как задержки нету :)
Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 10.08.2007, 16:19

Отвечает: Gines
Здравствуйте, Александр Михайлович!

Советую всё-таки использовать javascript
<?php
echo '>Wind0ws.Location.Href="ссылка на страницу";</script>';
?>

Хотя можно и с помощью PHP:

<?php
header("Location: ссылка на страницу");
exit();
?>

Подробнее можете почитать вот тут:
http://www.sb-news.net/?n=142
Ответ отправил: Gines (статус: 3-ий класс)
Ответ отправлен: 10.08.2007, 17:38

Отвечает: Powoditch konstantin
Здравствуйте, Александр Михайлович!
Нет. С помошью php редирект можно сделать тоже, используя ф-ю header().
Пример:
header("Location: some_page.php");
Только единственное НО, эта ф-я должна быть прописана в самом начале скрипта, до вывода какого-то либо html кода.
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 10.08.2007, 21:52

Отвечает: Azrr
Здравствуйте, Александр Михайлович!
Смотрите приложение.

Приложение:

Ответ отправил: Azrr (статус: 2-ой класс)
Ответ отправлен: 12.08.2007, 11:33


Вопрос № 97.957
Здравствуйте!
Есть дилетантский вопрос. Имеется на индексной странице скрипт, который должен выполняться, как бы, автоматически, т.е. сравнивает текущую дату с датой записи из БД и при совпадении запись удаляется. Вопрос такой: скрипт будет исполняться только в случае, если кто-то обратится к этой странице? А если допустить, что страницу втечение месяца никто не открывал, то за это время скрипт ни разу не запуститься? Может быть, есть средства для автоматического ежедневного запуска скрипта?
И еще вопрос, вернее, просьба о помощи. Помогите с примером скрипта, который преобразует старую дату с увеличением на 7 дней, например, 2007-07-29 + 7 дней, чтобы не получилось 2007-07-36, а вышло 2007-08-05.
Отправлен: 10.08.2007, 15:55
Вопрос задал: VicBar (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Nexus
Здравствуйте, VicBar!

1) Это тебе нужен cron. Сейчас практически все хостеры предоставляют доступ к нему. Чаще всего скрипт добавляется в cron через панель управления хостингом - там должен быть соответсвующий пункт, где задаются все параметры. Но насколько я понимаю, для тебя по сути не критичен запуск именно с определенным интервалом. Ты можешь сделать скрипт, который будет инклудится во все скрипты твоего сайта. Как-только кто-то обратиться к любой странице твоего сайта - временные записи из БД удалятся. Если на сайт месяц никто не заходит - запросы к базе тоже лишний раз не делаются. И наличие доступа к крону опять же не критично в данном случае

2) date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")+7, date("Y")));
Ответ отправил: Nexus (статус: 9-ый класс)
Ответ отправлен: 10.08.2007, 16:07
Оценка за ответ: 4

Отвечает: Oleg S. Mezhov
Здравствуйте, VicBar!
Запускать скрипт по времени поможет cron, часто хостинг компании предоставляют доступ на внесение 1-2 записей.

Скрипт для увеличения даты:
два пути. либо прописывать сколько дней в каждом месяце.. в зависимости от этого менять месяц на днях с 28 до 31. либо перевести дату в UNIXTIME, добавить к ней количество секунд равное 7 дням и вернуть обратно дату, делается так:

Приложение:

Ответ отправил: Oleg S. Mezhov (статус: 3-ий класс)
Ответ отправлен: 10.08.2007, 16:20
Оценка за ответ: 4

Отвечает: Сорочан Александр Александрович
Здравствуйте, VicBar!

За это отвечает ОС:
есть специальные сервисы которые запускают скрипты в заданое время.
для Linux: Cron
для Windows: Cronw http://cronw.sourceforge.net/
Ответ отправил: Сорочан Александр Александрович (статус: 1-ый класс)
Ответ отправлен: 10.08.2007, 17:32
Оценка за ответ: 4

Отвечает: Powoditch konstantin
Здравствуйте, VicBar!
1. Да. Скрипт будет исполнятся только после того как кто нибудь зайдет на страничку которая содержит его. В случае если Вы хотите чтобы он запускался ежедневно, то я бы посоветовал Вам вставить в индексную/главную страничку вызов этого скрипта.
2. Могу предложить следующий вариант:
$days = 7*24*60*60;// 7 дней в секундах
$currDate = int gmmktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]]);// указываете Вашу дату
$currDate += $days;// прибавляем 7 дней
$result = date("'h-i-s j-m-y", $currDate);// преобразуем обратно, теперь в переменной $result находится дата +7 дней

Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 10.08.2007, 21:42
Оценка за ответ: 4


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

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

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

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

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


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


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

В избранное