PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
muravey
Отправлено: 18 Мая, 2013 - 11:50:49
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
Попробуй фокс на другом компьютере.
Попробуй фокс с отключеными расширениями.


Уже тестировал на др компе и фоксе.

Я нашел решение.

Оказывается что сам header специфичен для для ООП. В каждом случае его нужно правильно вызывать в системе. И только тогда он будет работать всегда и везде.

Это только путем тестов и проверок.

На западных форумах подсказали.

Такой гемор нужен для тех кто разработчик движков и больших скриптов.

Нужно сам скрипт подстраивать под браузер.
- пробывать его ставить в разных местах
- обязательно это делать с буфером
- var_damp смотреть что выводиться до перенаправления
- изучать заголовки запроса и ответа
- смотреть как он себя ведет в браузерах

ПОДЧЕРКИВАЮ В БРАУЗЕРАХ, а не браузере оказалось что это очень важно...

Вот только после этого и 3 дня работы я настроил не просто скрипт а целый свой движок на кроссбраузерность header.

Спасибо всем, за отклик.
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Мая, 2013 - 12:40:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10376
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Да ну, хрень раздули на западе..
Кроссбраузерное ООП? Что за приколы? Радость
Повторю еще раз - у меня оно работало сразу и везде.
Показываю на пальцах для всего "умного" запада.
В классе оставляю только касающиеся вопроса методы:

PHP:
скопировать код в буфер обмена
  1. abstract class request {
  2.  
  3.     protected static $headers = array();
  4.  
  5.     public static function addHeader($header) {
  6.         array_push(self::$headers, $header);
  7.     }
  8.  
  9.     public static function sendHeaders() {
  10.  
  11.         foreach (self::$headers as $item) {
  12.             header($item);
  13.         }
  14.  
  15.     }
  16.  
  17.     public static function redirect($destination) {
  18.  
  19.         self::$headers = array();
  20.  
  21.         self::addHeader("HTTP/1.1 301 Moved Permanently");
  22.         self::addHeader("Location: $destination");
  23.  
  24.         self::sendHeaders();
  25.         die();
  26.  
  27.     }
  28.  
  29. }
 
 Top
muravey
Отправлено: 18 Мая, 2013 - 13:06:26
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Да ну, хрень раздули на западе..


Так или иначе. Я всегда работаю до результата. Есть результат и он работает везде значит все Ок!

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

Набери в поисковиках и ты увидишь кучу таких вопросов. У кого то в Опере, у кого в ИЕ и т.д. и ни где нет правильной ориентации поиска решения.

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

Учится надо всегда даже профи. Знать все не возможно.
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Мая, 2013 - 14:00:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 10376
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




muravey пишет:
даже если кто то раздул хрень и это помогло, значит это не хрень. А хрень то что не помогло.
Ну блин, с одной стороны ты прав, но только с одной.
Жаль.
Я даже могу сказать что действительно - приведенный мной код будет некорректным для решения "в лоб".
Некорректным потому, что все заголовки в нем отправляются только в самом конце, непосредственно перед выводом страницы. И это правильно.
А до этого он их накапливает, и всегда есть возможность сбросить все заголовки.
Это для редиректа ключевой момент: сбросить все ранее добавленные заголовки.
Как вариант есть header_remove(), но он не для всех версий php, а только начиная с 5.3.0.

Так что да - пусть запад и не запад кушает свои "кодомакароны".
И пусть считает это не хренью.
 
 Top
LIME
Отправлено: 18 Мая, 2013 - 14:19:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 10021
Дата рег-ции: Нояб. 2010  


Помог: 298 раз(а)





muravey пишет:
кроссбраузерность header
Ха-ха
muravey давай пошутим...напиши им что теперь у тебя запросы к БД возвращают FALSE в IE))))...пусть посоветуют какой-нибудь кроссбраузерный запрос)))...интересно найдется у них "хрень" на этот случай? Хммм...


-----
вау
я кажется понял жастЮзера!!!
 
 Top
DelphinPRO
Отправлено: 18 Мая, 2013 - 15:16:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 7190
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




muravey пишет:
header специфичен для для ООП

Большего бреда я не еще не слышал Улыбка
что именно специфично?
функция header? Извините, но она к браузеру не имеет никакого отношения. ибо выполняетя на сервере
Тогда может быть имеются ввиду HTTP заголовки ?
еще больший бред. Есть стандарт протокола HTTP, и именно его реализуют все браузеры. Если каждый реализовал бы протокол по своему интернета бы не было.
(Добавление)
muravey пишет:
В каждом случае его нужно правильно вызывать в системе.

тут я даже не знаю что ответить... в каком "каждом случае" имеется ввиду?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
nyx
Отправлено: 16 Апреля, 2018 - 07:06:23
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2018  


Помог: 0 раз(а)




Цитата:
Я нашел решение.

Оказывается что сам header специфичен для для ООП. В каждом случае его нужно правильно вызывать в системе. И только тогда он будет работать всегда и везде.

Это только путем тестов и проверок.

Апну старую тему, т.к. только что столкнулся с той же проблемой.
Тоже в Хроме header "Location: " работает идеально, а в ФФ никак.
Решение оказалось предельно простым - добавить exit:


И все заработало во всех браузерах.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB