Avatar
matesax
Redaktor
Avatar
matesax:

Dobrý den,
můj web má v současnosti 3 fáze - normální stav - obyčejné HTML, main.php (který zpracovává QueryString odeslaný z obyčejného HTML) a error.php (kterýžto vybírá podle kódu erroru z QueryStringu hlášku k výpisu). Problém je, že kamkoliv se vydám z main.php potřebuji přenést QueryString. (status akce/číslo erroru) Proto redirektuji s QueryStringem erroru do error.php. Jenomže v main.php může také dojít k akci, která nezkončí chybou, při které vznikne HTML kód. Pokud se to stane, tato akce dopadla úspěšně a já potřebuji do QueryStringu dát informaci o úspěchu. Ale asi není možné nastavit QueryString na současné stránce. Proto musím redirectovat. (Proto při chybovém stavu redirectuji do error.php.) Chyby jsou malé, proto stačí předat kód chyby do error.php QueryStringem. Jenže potřebuji vypsat i výsledek výtahu z databáze. (zmíněné vygenerované HTML) A ten již do QueryStringu nenacpu. Tudíž v main.php vygeneruji HTML, ale nemohu ho zobrazit, jelikož do QueryStrigu musím dosadit status, že se akce zdařila, což znamená redirectovat, což znamená ztrátu vygenerovaného HTML. Jak tedy naložit s vygenerovaným HTML? Napadlo mne samozřejmě ukládat jej do souboru a na přesměrované stránce jej includovat. Zde se jen ptám, zda-li není efektivnější řešení. Ideálem by bylo nastavení QueryStringu bez potřeby přesměrování. Pokud je však nutností, bojím se zmíněného řešení. Jelikož každý uživatel bude mít svůj výtah...
Děkuji.

 
Odpovědět 20.8.2013 19:33
Avatar
Jiří Gracík
Redaktor
Avatar
Nahoru Odpovědět  +2 20.8.2013 19:40
Creating websites is awesome till you see the result in another browser ...
Avatar
matesax
Redaktor
Avatar
Odpovídá na Jiří Gracík
matesax:

Jednoduše - potřebuji přenést HTML vygenerované v PHP kódu do stránky s požadovaným QueryStringem. Musí to však být dynamické řešení - aby jej mohlo používat tisíce uživatelů současně - každý s jedinečným HTML...

 
Nahoru Odpovědět 20.8.2013 19:43
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na matesax
Jiří Gracík:

Ty stránky asi nebudou každá jiná, takže bych měl pár .phtml šablon, do kterých by se podle potřeby dosazovala data. Předal by jsi pole dat a název(typ) šablony a natáhl ji na té požadované stránce. Nevím jestli to je správné řešení, ale je to řešení :)

Editováno 20.8.2013 19:47
Nahoru Odpovědět 20.8.2013 19:47
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jiří Gracík
Kit:

Já taky. Proto mívám jen index.php a žádný error.php, abych se v tom náhodou neztratil.

Nahoru Odpovědět 20.8.2013 19:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Jiří Gracík
matesax:

Totéž jako s tím souborem. Jak bych tím mohl řešit stovky uživatelů? Jeden zapíše a druhý mu to přepíše...

 
Nahoru Odpovědět 20.8.2013 19:49
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na matesax
Jiří Gracík:

Ale kdepak, ty šablony budou obsahovat neměnná data a bude se jenom na určitá místa dosazovat, příklad

<h1><?php $nadpis ?></h1>
<p>
  <?php $text ?>
</p>
Nahoru Odpovědět 20.8.2013 19:51
Creating websites is awesome till you see the result in another browser ...
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Já chci mít holé PHP v main.php. Toho dosáhnu jen vyřešením problematiky předání QueryStringu do cílové stránky, bez ztrát vygenerovaného obsahu. Tedy i errory bych vygeneroval přímo v main.php a stejným způsobem jako u toho výtahu z databáze bych dosadil příslušný QueryString. Takže řešení, které navrhnete by mohlo počítat i s tím, že do něj nacpu errory. Pak budu mít jen HTML a PHP... (Naprosto separované.)

 
Nahoru Odpovědět 20.8.2013 19:52
Avatar
matesax
Redaktor
Avatar
Odpovídá na Jiří Gracík
matesax:

Ale jak tomu předám ta data? Ono HTML není zrovna krátké.

 
Nahoru Odpovědět 20.8.2013 19:53
Avatar
Jiří Gracík
Redaktor
Avatar
Nahoru Odpovědět 20.8.2013 19:55
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Proto používám Heredoc, které to vše vyřeší za mne. Data si uložím do proměnných a zavolám šablonu, která ty proměnné jenom použije.

Nahoru Odpovědět 20.8.2013 19:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Jiří Gracík
matesax:

A hodiny čekat? No jako i POST má své limity. Nechci zavrhovat každé řešení - ale skutečně není něco elegantního?

 
Nahoru Odpovědět 20.8.2013 19:59
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

POST se používá jen když klient ukládá data na server. Při stahování se běžně používá GET.

Nahoru Odpovědět 20.8.2013 20:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

A do GET určitě nacpu HTML stránku... :)

 
Nahoru Odpovědět 20.8.2013 20:09
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Však tu HTML stránku máš přece na serveru, ne?

Nahoru Odpovědět 20.8.2013 20:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Ale přijdu o ni při přesměrování...

 
Nahoru Odpovědět 20.8.2013 20:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

A co kdybys použil AJAX? HTML stránku bys měl v klientovi stále stejnou a modifikoval bys jen DOM.

Nahoru Odpovědět 20.8.2013 20:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Nechce se mi do toho plést klient. Když vymyslím serverové řešení, budu řešit funkčnost na jednom PC, když u klienta, budu jich řešit milióny... (I šéf by chtěl serverové řešení - klientům by to usnadnilo používání - nejsou to lidi, co PC umí používat - 50 - 70 let...) Mám několik řešení, ale doufal jsem, že napíšete, že není třeba redirectovat, nebo, že se dá nějak zachovat vygenerované HTML, či prostě, že by to šlo nějak jednoduše. Zkusím ještě předejít vygenerování a nějak to přesměrovat ještě před tím. Ale zdá se to být nepravděpodobné...

 
Nahoru Odpovědět 20.8.2013 20:29
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Pořád mi totiž není jasné, čeho chceš docílit. Proč vlastně chceš odesílat HTML stránku z klienta na server?

Editováno 20.8.2013 20:35
Nahoru Odpovědět 20.8.2013 20:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Psal jsem to jednoduše - potřebuji po vygenerování HTML(výtah z DB)/Erroru nacpat do URL status. Error si alespoň mohu poslat QueryStringem, tak jsem udělal tu error.php, ale HTML již ne... (Vycházím z toho, že QueryString nastavím jen při přesměrování.)

 
Nahoru Odpovědět 20.8.2013 20:36
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Pořád ti nerozumím. Proč chceš posílat QueryString, který na klientovi nemá co pohledávat?

Nebo jen potřebuješ udělat 301?

Nahoru Odpovědět 20.8.2013 20:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Potřebuji dostat návrat do jednoho programu. Kdybych to nechal jen v HTML, musel by si ten program poradit s HTML. S QueryStringem to bude mnohem efektivnější... (Nehledě na to, že nebude odchytávat stráku - vycucne si jen URL.)

 
Nahoru Odpovědět 20.8.2013 20:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Co je podle tebe QueryString?

Nahoru Odpovědět 20.8.2013 20:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Možná chceš udělat něco takového:

<?php
// uložím data do souboru AABBCC66.html
header('Location: AABBCC66.html');
exit;
Nahoru Odpovědět 20.8.2013 20:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
matesax:

Jasně - redirectuji do toho souboru a pak ho smažu. Geniální! Jen - jak to bude náročné? (jeden záznam má asi 320znaků - záznamů bude průměrně asi tak 5)

Editováno 20.8.2013 21:01
 
Nahoru Odpovědět 20.8.2013 21:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

O jaké náročnosti se bavíme? Běžně tak tahám desítky MB.

Nahoru Odpovědět 20.8.2013 21:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

A co když do toho neexistujícího souboru rovnou redirectuji? (Že by to bylo bráno jako cache, které se pravidelně maže...)

Nároky beru jako vytvoření, přesměrování a smazání...

Editováno 20.8.2013 21:04
 
Nahoru Odpovědět 20.8.2013 21:02
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Běžně ten neexistující soubor ani nevytvářím. Zůstane virtuální, obsah dostane dynamicky. Není tedy co mazat.

Editováno 20.8.2013 21:06
Nahoru Odpovědět 20.8.2013 21:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Takže mohu rovnou redirectovat do neexistujícího souboru a ono to použije vygenerovaný HTML? A pak už se nemusím starat o zanesení?

header("Location: AABBCC66.htm?code=2");

?

 
Nahoru Odpovědět 20.8.2013 21:07
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Musíš také zajistit, aby při požadavku na ten soubor byl ten obsah nějak doplněn.

Nehledáš náhodou memcache nebo reverzní proxy cache?

Nahoru Odpovědět 20.8.2013 21:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
matesax:

Nějak... :) Takže je to to řešení, co jsem popisoval nahoře? Tak to už mám nápad. Vytvořím ten soubor pod IČem a po použití ho smažu... (Nebo ho vytvořím jako cache... Nebo jako ho vytvořit virtuálně?)

 
Nahoru Odpovědět 20.8.2013 21:15
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Nechceš ty miniaturní soubory úplně normálně vygenerovat z databáze při každém požadavku a zbytek ponechat na HTTP cache?

Nahoru Odpovědět 20.8.2013 21:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Napadl mne opačný postup. Nebudu se snažit dostat výstup do QueryStringu. Uložím ho pod souborem s IČO v názvu a program si ho stáhne. Pak tedy bude stačit, že vyšle URL, počká si dejme tomu 20 sekund a pokusí se stáhnout soubor. Bude to opakovat tak dlouho, dokud tam nebude, nebo dokud to nevzdá. Jak ho stáhne, tak ho smaže... Nechápu, proč mě to nenapadlo rovnou...

(výstupem bude jen status (kód) - postačí tedy nějaké cache)

Editováno 20.8.2013 21:45
 
Nahoru Odpovědět 20.8.2013 21:43
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Co na tom trvá 20 sekund? To děláš na Didaktiku?

Editováno 20.8.2013 21:46
Nahoru Odpovědět 20.8.2013 21:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Kit
Jiří Gracík:

Online Ottův slovník ...

Nahoru Odpovědět 20.8.2013 21:47
Creating websites is awesome till you see the result in another browser ...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Jiří Gracík
Kit:

To bys měl mít odezvu v řádu desítek ms.

Nahoru Odpovědět 20.8.2013 21:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

No však. Takové opičárny vůbec nemusíš dělat. Co by se stalo, pokud bys použil standardní postup pro normální generování dynamických webstránek v PHP?

Nahoru Odpovědět 20.8.2013 21:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

? Na serveru bude normální HTML. Jen si uložím jedno číslo do cache. Což je také normální...

 
Nahoru Odpovědět 20.8.2013 21:53
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Běžně se u svého lokálního webserveru na notebooku pohybuji v jednotkách ms.

Nahoru Odpovědět 20.8.2013 21:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

To není normální. Normální je, pokud na tom serveru je normální šablona v PHP, do které před odesláním na klienta doplníš to chybějící číslo.

Nahoru Odpovědět 20.8.2013 21:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Přesto nebudu mít request jako při čekání na Redirect. Prostě jen vyšlu URL, ale jestli se to něco podařilo, či cokoliv jiného, se dozvím až po vytažení cache... Takže se na serveru budu z toho programu v nějakém intevalu dožadovat cache pojmenovaného po IČu...

 
Nahoru Odpovědět 20.8.2013 21:56
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Ale nebudu z programu tahat šablonu. Budu tahat cache - to je normálnější... Existuje cache na jedno použití? (Po vytažení se smaže.)

 
Nahoru Odpovědět 20.8.2013 21:59
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Vypadá to, že žádnou cache vůbec nepotřebuješ.

Nahoru Odpovědět 20.8.2013 21:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Však šablona je v cache. Co pořád řešíš?

Nahoru Odpovědět 20.8.2013 22:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Tak jak z programu, který vyšle URL dám vědět uživateli, že to dopadlo tak a tak?

 
Nahoru Odpovědět 20.8.2013 22:02
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Přece přes stavové kódy. Stavový kód přijde s každou odpovědí na požadavek.

Nahoru Odpovědět 20.8.2013 22:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
matesax:

Můžeš být konrétní - dejme tomu pro nějaké C, či tak?

 
Nahoru Odpovědět 20.8.2013 22:08
Avatar
matesax
Redaktor
Avatar
matesax:

Blbnu - bude to Delphi. Čily - jak to bude vypadat u Delphi? (Například vyšlu URL, s QueryStringem pro regitraci.) Nechápu, co mám poslat ze serveru, jelikož většinu errorů, podle kterých určuji status si vymýšlím z podmínek. Tedy vygeneruji pouze HTML s hláškou. Ale status jsem chtěl předávat přes QueryString. Ale jak to dát do odpovědi netuším...

Editováno 20.8.2013 22:15
 
Nahoru Odpovědět 20.8.2013 22:14
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

To jsi mohl rovnou napsat, že potřebuješ vyplňovat formuláře na cizích serverech a mohli jsme si ušetřit spoustu komunikace.

Nahoru Odpovědět 20.8.2013 22:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

QueryString musí odpovídat požadavkům serveru. Pro registraci je nejčastěji vyžadována metoda POST. Nelépe se k tomuto účelu asi hodí program Curl, který zvládne i dost složité a netypické požadavky. Je to i modul v PHP.

Nahoru Odpovědět 20.8.2013 22:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Žádné formuláře. Pošlu QueryString. Mámto takto jednoduché - QueryString má všechny parametry - proměnná = hodnota... Já zde řeším, jak dát programu status... (Request na QueryString se jevil nejjednodušeji...)

 
Nahoru Odpovědět 20.8.2013 22:29
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Však ano. To je odpověď do běžného HTML formuláře.

Kdyby sis přečetl včerejší debatu o RESTu, udělal bys lépe.

Nahoru Odpovědět 20.8.2013 22:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Víš aspoň, kterou metodou chceš ten QueryString posílat?

Nahoru Odpovědět 20.8.2013 22:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Ale jak může být v odpovědi něco, co jsem si vymyslel a nikam to nedal? (Krom HTML.) Ptám se - kam to dát? (ten formulář jede přes GET...)

 
Nahoru Odpovědět 20.8.2013 22:35
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Nikam to nedáš. Prostě to na serveru zpracuješ skriptem.

Nahoru Odpovědět 20.8.2013 22:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:
if ($user[0] == "")
        mysqli_query($connection, "INSERT INTO users (ico, pcid, tel, email) VALUES ($ico, '$pcid', {$_GET["tel"]}, '{$_GET["email"]}')");
else

V else je aktuálně redirect do error.php s kódem zprávy "Nelze se znovu registrovat!". Co mám místo toho redirectu udělat, abych po odeslání URL z programu dostal kód této zprávy?

 
Nahoru Odpovědět 20.8.2013 22:41
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

No fuj, to snad nemyslíš vážně? Myslím, že nemá smysl dál diskutovat, dokud si to nespravíš. Máš to děravé jak řešeto.

Nahoru Odpovědět  +2 20.8.2013 22:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Nejprve poradíš ať očekávám neexistující status a pak ještě tohle. No nic - jdu na to cache...

 
Nahoru Odpovědět 20.8.2013 22:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 60 zpráv z 60.