X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Проблема с методом в классе
Kuchuluk
Kuchuluk
Topic Starter сообщение 27.2.2013, 19:51; Ответить: Kuchuluk
Сообщение #1


здравствуйте.
у меня в индексном файле подключаются сначала несколько классов, в которых есть вывод на экран. потом я подключаю класс guestbook.php
require_once 'guestbook.php';
$guestbook = new Guestbook;
$new_mess = $guestbook->insMess();
$show = $guestbook->showPosts();
echo $show;
$form = $guestbook->form();
?>

в нем есть такой метод
public function insMess()
{
  if (isset($_REQUEST["submit"]))
  {
   $name = $_REQUEST["name"];
   $email = $_REQUEST["email"];
   $mess = $_REQUEST["mess"];
   $date = date("Y-m-d");
   $array = array("name"=>$name,"email"=>$email,"mess"=>$mess,"date"=>$date,"user_id"=>1);
   $this->insert("guest",$array);
   header('Location: index.php');
  }
}

вот header выдает ошибку, что уже был вывод на экран. вопрос такой - в ООП можно так делать, что в самом начале документа подключить класс и использовать один метод, а потом в последующем к нему возвращаться еще? или как то по другому это реализуется? просто с ООП недавно начал знакомиться, таких тонкостей не знаю еще.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 27.2.2013, 20:30; Ответить: isvetlichniy
Сообщение #2


не в ту сторону копаешь, функцию header('Location: index.php'); нельзя использовать , если был произведен вывод данных в браузер до использования этой функции, например использовалось echo
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 27.2.2013, 23:45; Ответить: Kuchuluk
Сообщение #3


ну я это знаю. я же говорю, что у меня до этого класса подключены другие классы, в которых срабатывают методы с выводом на экран. я и спрашиваю класс guestbook.php можно подключить вначале, чтобы использовать только метод insMess(), а потом в другом месте кода опять использовать этот класс после других классов? вообще так можно делать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mr.Developer
Mr.Developer
сообщение 28.2.2013, 11:54; Ответить: Mr.Developer
Сообщение #4


А в чем собственно проблема?
Раз уж у вас такая интересная реализация где редирект происходит через header() в классе guestbook то можно самом начале создать новый объект класса Guestbook, применить необходимый метод с header(), а потом снова работать с объектом Guestbook там где вам необходимо. Никуда он не денется если вы его сами где-нить выше не уничтожите.

Кстати, в безвыходных ситуациях когда нужен редирект можно выводить либо мета-тег с редиректом (w3c не одобряет) либо же js window.location.href
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
isvetlichniy
isvetlichniy
сообщение 28.2.2013, 17:10; Ответить: isvetlichniy
Сообщение #5


я и спрашиваю класс guestbook.php можно подключить вначале, чтобы использовать только метод insMess(), а потом в другом месте кода опять использовать этот класс после других классов?

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

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

function redirect($url){
echo '<script>window.location=''.$url.''</script>';
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 28.2.2013, 23:25; Ответить: Kuchuluk
Сообщение #6


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

function redirect($url){
echo '<script>window.location=''.$url.''</script>';
}

спасибо, хороший метод, его попробую использовать.

Кстати, в безвыходных ситуациях когда нужен редирект можно выводить либо мета-тег с редиректом (w3c не одобряет) либо же js window.location.href

прямо в метатег вставлять php код с проверкой нажатия кнопки?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mr.Developer
Mr.Developer
сообщение 1.3.2013, 10:52; Ответить: Mr.Developer
Сообщение #7


прямо в метатег вставлять php код с проверкой нажатия кнопки?


По способу с js вам чуть выше уже привели полный рабочий пример.
С мета-тегом это вывод <meta http-equiv="Refresh Content="0; URL=./dir/"> вместо того яваскрипта. Из плюсов - не нужна поддержка js, из минусов - не одобряет w3c

Сам использую метод с window.location

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Проблема с админкой
5 Prok 2339 29.7.2019, 20:04
автор: dvakarandasha
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПроблема с таблицей, которая выводится через скрипт
7 vanchester 1339 15.2.2019, 19:06
автор: Artos_mw
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПроблема в тегах при сохранении контента
1 Kord18 1430 13.3.2018, 18:19
автор: Evgeniy3200
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПроблема вёрстки адаптивной страницы на divах
28 master-vek 4721 8.2.2018, 19:29
автор: master-vek
Открытая тема (нет новых ответов) Проблема с All in one SEO?
17 okseo 2688 30.11.2017, 14:06
автор: okseo


 



RSS Текстовая версия Сейчас: 26.4.2024, 1:25
Дизайн