Autor Zpráva
stw
Profil *
Zdravím,
prosím o pomoc s problémem přesměrování.
Před header(); nemám žádný výstup.

Při volání po síti ve FF to funguje bez chybyi při error_reporting(E_ALL); nemám žádnou chybu a dojde k přesměrování. V proměné $IP je: 192.168.1.101

Pokud to spustím zevnitř tak to nefunguje. V proměné $IP je: 127.0.0.1

Je to v MMC, spuštěním zevnitř je myšleno s DO a výstupem na TV a místo popup informace vidím http download error.

header('Location: http://'.$IP.':82/popup.php?info=new&action=ss');
die();

Napadá někoho v čem by mohl být problém?
Micruss
Profil
Místo apostrofu ' dej uvozovky "

header("Location: http://$IP:82/popup.php?info=new&action=ss");
stw
Profil *
Díky za reakci. Toto jsem už zkoušel, ale také nefunguje. Teď znovu pro jistotu abych to prověřil.
Vyzkoušel jsem i třeba (samozřejmě s mojí url):
 header("Location: /foo.php", TRUE, 301);
Zkoušel jsem přidat před ob_start(); a za ob_end_flush(); ale stále se to chová stejně. Prohlížeč je bez chyby, a v MMC (s DO a výstupem na TV) to na tom zkolabuje.
Davex
Profil
stw:
Je to v MMC, spuštěním zevnitř je myšleno s DO a výstupem na TV
Netuším, co znamenají všechny ty zkratky, ale naslouchá na IP adrese 127.0.0.1 a TCP portu 82 webserver?
stw
Profil *
FF = Firefox
MMC = Multi Mediální Centrum
DO = Dálkový Ovladač
TV = Televize

Samozřejmě že naslouchá na portu 82. Vstup je na http://127.0.0.1:82/.../index.php

A v index.php - hned na začátku souboru je podmínka a pokud po vyhodnocení má dojít k přesměrování tak se vůbec neuskuteční. Na síti ve FF je vstup na http://192.168.1.101:82/.../index.php a přesměrování je funkční a bez chyb a varování.

Já to potřebuju hlavně v TV s DO, tedy na IP http://127.0.0.1:82/.../index.php
Davex
Profil
stw:
Chápu to správně, že MMC a TV jsou dvě oddělená zařízení, PHP skript běží na MMC, FF běží na třetím zařízení a na TV běží také prohlížeč, ze kterého se přistupuje po síti na IP adresu MMC, která je 192.168.1.101?
stw
Profil *
Byl jsem na noční :-(

MMC () a TV jsou sice oddělené ale TV je v tomto případě pouze jako monitor (v mém případě CRT 100Hz). TV nemá prohlížeč a nemůže spouštět skript v MMC ani MMC žádným jiným způsobem ovládat, jsou propojené žlutým cinch. TV jen zobrazuje to co se PHP skriptem spuštěným v MMC vygeneruje. MMC je schopné přehrávat audio video z interního HDD, externího HDD a streamy z internetu, je napojené síťovym kabelem do routeru. FF je v klasickém PC.
Možná zbytečně obšírně ale asi jsem to měl takhle popsat hned v prvním postu.

Po síti na IP adresu (192.168.1.101) MMC přistupuju pouze ve FF z PC. Stejně tak je i ve workgroup. Takže když něco nefunguje zavolám to ve FF http://192.168.1.101:82/.../index.php kterej případně vypíše nějakej error. V tomhle případě ale nevypíše nic a přesměrování se provede.

Teď MMC, to po zapnutí zobrazí na TV jednoduché menu ze kterého si vyberu můj skritp, kterej se ve skutečnosti zavolá jako url http://127.0.0.1:82/.../index.php a takto (vlastně na lokále) mi přesměrování nefunguje.


Už jsem to popsal srozumitelně? Po síti přesměrování jede, na lokále nejede. Já potřebuju vyřešit lokál.


A děkuji za reakci.
Davex
Profil
Už to chápu. TV s DO tedy nemá s problémem nic společného. Pomocí DO se ovládá to MMC. Na MMC běží nějaký standardní prohlížeč? Třeba by mohl být problém v něm.

Zkus přesměrovat takto:

session_write_close();
header('Location: http://'.$IP.':82/popup.php?info=new&action=ss');
header('Connection: close', true, 302);
exit();
stw
Profil *
On to není standartní prohlížeč, spíš jakýsi xml zobrazovač nebo jak to nazvat. PHP-kem generuju xml podobné tomuto: http://paste2.org/p/2173320
To ale v tomto problému není podstatné, protože na 127.0.0.1:82 se header("Location:.....) vůbec neprovede.

Tvůj kód (díky) jsem odzkoušel = chová se to stejně. Tedy v prohlížeči to funguje (192.168.1.101) opět bez chyb, v lokálu ne (127.0.0.1).

Ještě nějaký nápad?
Davex
Profil
U toho nestandardního zobrazovače je právě otázka, zda umí to přesměrování v HTTP hlavičce správně zpracovat a jestli odpověď nevyhodnotí jen jako prázdnou stránku. Dej si před exit() nějaký výstup, který je pro zobrazovač bez problémů zpracovatelný. Podle toho pak poznáš, jestli neumí přijmout stavový kód s přesměrováním nebo přesměrovat a přejít na jinou adresu.
stw
Profil *
Tohle už jsem zkoušel i když trochu jinak. Před exit jsem dal
@file_put_contents('/tmp/usbmounts/sda1/test.txt', 'test blabla');
Soubor test.txt se vytvoří i s obsahem v obou případech. Jak z MMC (127.0.0.1) tak v FF (192.168.1.101).
Zkoušel jsem to dát i na začátek souboru popup.php a tam se mi neuloží nic z MMC (127.0.0.1), ale v FF (192.168.1.101) se vytvoří.

Z toho usuzuju že při volání z MMC na IP 127.0.0.1 se přesměrování prostě neprovede.


Ještě bych měl dodat že se mi to takhle chová jen v MMC s chipsetem Realtek RTD1073DD, ale třeba s chipsetem RTD1073DDC+ to prý funguje (nemůžu ověřit, nemám ho k dispozici, akorát není hlášen problém tak soudím že to funguje). Ostatní chipsety Realtek nemám hlášený žádný problém.

Mám k dispozici na zkoušení RTD1073DD a zde jsou problémy, Realtek 1186 a 1283X oba bez problému.

Nejdřív jsem myslel že nějaký problém s portem. Protože jen v tomto musím do url mít i port ':82'.
stw
Profil *
Davex:
U toho nestandardního zobrazovače je právě otázka, zda umí to přesměrování v HTTP hlavičce správně zpracovat a jestli odpověď nevyhodnotí jen jako prázdnou stránku. Dej si před exit() nějaký výstup, který je pro zobrazovač bez problémů zpracovatelný. Podle toho pak poznáš, jestli neumí přijmout stavový kód s přesměrováním nebo přesměrovat a přejít na jinou adresu.


Takže když odstraním exit(); tak script pokračuje a MMC zobrazí na TV obsah vygenerovaný index.php nikoli obsah popup.php, kam se mělo přesměrovat.
Znamená to tedy že ten "nestandartní zobrazovač" neumí zpracovat přesměrování v HTTP hlavičce?
Jan Tvrdík
Profil
stw:
Znamená to tedy že ten "nestandartní zobrazovač" neumí zpracovat přesměrování v HTTP hlavičce?
Pravděpodobně ne, zkus pro kontrolu třeba ještě header('Location: http://' . 'seznam.cz/');.
stw
Profil *
Beru zpět co jsem napsal v minulém příspěvku. Po testování jiných funkcí jsem měl upravenou podmínku, tak aby mi script pokračoval a vygeneroval se obsah indexu.

Jan Tvrdík:
zkus pro kontrolu třeba ještě header('Location: http://' . 'seznam.cz/');
MMC mi nedokáže zobrazit klasickou webovou stránku. Ale ta myšlenka mi přivedla vyzkoušet známou funkční url, kterou bežně zpracuje. Takže jsem použil:
header('Location: http://gdata.youtube.com/feeds/api/standardfeeds/most_responded');
Se zakomentovaným // exit(); MMC na TV skončí chybou. V prohlížeči to samozřejmě funguje bez chyby.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: