IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Přesměrování na stránku spolu s daty uloženými v POST

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:29.5.2018 20:48

Existuje nějaká možnost přesměrování na jinou stránku spolu s daty v POST? :)

Odpovědět
29.5.2018 20:48
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Uživatel sítě :29.5.2018 20:59

Hmmm,

<form action="(Tvoje stránka kam chceš odeslat formulář)">

snad jsem tě nepochopil špatně a pokud bys nevyžadoval přímo přesměrování, ale pouze o odeslání dat na jinou stránku tak se mrkni třeba na http://php.net/…t-create.php.

Nahoru Odpovědět
29.5.2018 20:59
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Neaktivní uživatel:29.5.2018 21:01

A u přesměrování přes header to nějak nejde? :)

Nahoru Odpovědět
29.5.2018 21:01
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Uživatel sítě :29.5.2018 21:05

Hmm radši ani ne, toto je opravdu nevhodný způsob jak odeslat data jinam.

Co přesně řešíš za situaci, třeba to půjde řešit jinak.. :)

Nahoru Odpovědět
29.5.2018 21:05
Chybami se člověk učí, běžte se učit jinam!
Avatar
Neaktivní uživatel:29.5.2018 21:10

Mám takový "vyhledávač" a chci aby si lidi mohli nastavit aby se používalo post místo get . Jenže systém někdy někam přesměruje. A chtěl bych aby když zadají nějaký dotaz do get tak aby je to přesměrovalo na post. :)

Nahoru Odpovědět
29.5.2018 21:10
Neaktivní uživatelský účet
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Čech:29.5.2018 21:45

Nelze. Musel bys to nějak zahaluzit v JS - třeba by server poslal, co to chce poslat a kam, potom by JS vygeneroval formulář a odeslal ho.
Možná se dá nějak obejít to generování formuláře.
Nicméně je špatný nápad nechávat uživatele měnit si něco takto, ony jsou ty metody různé, protože jsou různé, rozdíl je ve víc věcech než to, že GET se projeví v URL.
Např. POST má dovolené mnohem větší velikosti a umí posílat mutipart requesty (soubory).
Uživatel hlavně nijak nebenefituje z toho, když se něco pošle jako POST nebo GET, tak není důvod to nechat uživatele nastavit.

Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět
29.5.2018 21:45
the cake is a lie
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.5.2018 8:36

GET

  • url v adresnim radku prohlizece
  • <a href="...">
  • <script src="..">, style, img, object, iframe...
  • <form method=get>
  • js request
  • php header('Location: '.$url);

POST

  • <form method=post>
  • <form method=post action=url?params enctype="multi­part/form-data">
  • js request
  • php stream_contex­t_create

Nehledas spis neco jako session, cookies? K uchovani udaju drive zadanych uzivatelem?

Viz Petr Čech. Pokud by uzivatel prepsal url v adresnim radku a dal enter, tak si nejsem uplne jisty, zda by slo zachytit pres js. Mozna ano, udalosti jako onloadbefore, onunloadbefore. Pokud bys to zachytil, pak uz by stacilo jenom vytvorit form s post, prepsat data, odeslat form. A to puvodni presmerovani nejak zastavit. Ale nejsem si jisty, zda by to prohlizec dovolil.
Proc nemuzes vyuzit GET? Proc to musi jit do POST? Jak by lidi mohli nastavovat get a post? To nastavujes preci ty v html strance. GET, POST se da v php precist z $_REQUEST. Ale ja spis pouzivam konstrukci
$aaa = isset($_POST['a­aa']) ? $_POST['aaa'] : isset($_GET['aaa']) ? $_GET['aaa'] : '';

 
Nahoru Odpovědět
30.5.2018 8:36
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.5.2018 8:40

Si muzes vyzkouset vypis promennych
var_dump('$_SES­SION',$_SESSI­ON); // prvni radek programu by mel byt session_start(), aby session fungovalo a musis do session neco ulozit $_SESSION['aaa'] = 123;
var_dump('$_RE­QUEST',$_REQU­EST);
var_dump('$_POS­T',$_POST);
var_dump('$_GET',$_­GET);

 
Nahoru Odpovědět
30.5.2018 8:40
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.5.2018 8:43

Kdybych ted vedel, co mi to smazalo v komentari z 8:36, ta prazdna odrazka :) Urcite to byla nejaka moznost,
asi odkaz [a href=url]

 
Nahoru Odpovědět
30.5.2018 8:43
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Peter Mlich
Petr Čech:30.5.2018 13:09

Já myslím, že chce právě uživatelům dovolit, aby si určili, zda se budou data posílat jako POST nebo GET.

Nahoru Odpovědět
30.5.2018 13:09
the cake is a lie
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Petr Čech
Peter Mlich:30.5.2018 15:30

No, a jakym zpusobem si to predstavujes? Mne nic nenapada, kde by se to dalo vyuzit.
Kdyz ti prepisi adresni radek v prohlizeci, tak to odesle jako GET.
A jinde na strance je to fuk, tam to muze byt formular. Pripadne odkazy i formulare muze presmerovat na javascriptove http-request get/post. Ale nevidim prakticke vyuziti.

At zkusi popsat, jakym zpusobem by se to melo presne pouzivat.

 
Nahoru Odpovědět
30.5.2018 15:30
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.5.2018 15:38

Mozna to chapu uplne spatne.
stranka1.php (form post) -> stranka2.php (data post odeslat jako post) -> stranka3.php
To resi stream_contex­t_create + neco dalsiho fopen.

Ale otazkou je, zda to takhle delat? Nestacil by treba include te stranky? Nastavit treba nejaky parametr, ze se inkluduje, ktery si bude kod sledovat a treba nebude zobrazovat. Nekde to obdobne resim, protoze jsem byl liny uzavirat to do funkce a nainkludovat jen tu cast s funkci. Cili, velmi nestasne vymyslene.

 
Nahoru Odpovědět
30.5.2018 15:38
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:30.5.2018 15:44

Mozna lepe misto fopen pouzit file_get_contents.

$context  = stream_context_create($opt);
$resource = file_get_contents($url, false, $context);
Editováno 30.5.2018 15:44
 
Nahoru Odpovědět
30.5.2018 15:44
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Peter Mlich
Petr Čech:30.5.2018 16:00

Je to samozřejmě prakticky blbost, ale dokážu si to představit jako cvičení - někdo umožní uživatelům změnit téma stránky, někdo chce umožnit změnit POST na GET a obráceně :D

Nahoru Odpovědět
30.5.2018 16:00
the cake is a lie
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 14 zpráv z 14.