[PHP] - header + post

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod ReZetFet 2. 6. 2013 15:24

Zdravím,
řeším trochu záludný problém.

Z vygenrované stránky odesílám metodou POST nějaké data (např. ze stránky test.php?id=e7ho4f86). Ty posílám stránce zpracuj.php (nemůžu ji poslat jako $_SERVER['PHP_SELF'] protože jde o vygenerovanou stránku). Pokud script zpracuj.php proběhne v pořádku tak se přeměrovává a vše je bez problému. Ale když dojde k chybě tak bych potřeboval $_POST data poslat stránce oprav.php.

přesměrovaná část kódu zpracuj.php:
Kód: Vybrat vše
<?php
$host = "www.example.com";
$path = "/oprav.php";
$data = "data1=value1&data2=value2";
$data = urlencode($data);

header("POST $path HTTP/1.1\r\n" );
header("Host: $host\r\n" );
header("Content-type: application/x-www-form-urlencoded\r\n" );
header("Content-length: " . strlen($data) . "\r\n" );
header("Connection: close\r\n\r\n" );
header($data);
?>


a pro zkoušku je stránka oprav.php:
Kód: Vybrat vše
var_dump($_POST);


Nehledám řešení založené na curl a vím, že jde jednoduše vložit data znovu do formuláře s výzvou o opravě vstupních dat. Výše popsané řešení hledám z důvodu, že je to nejjednodušší a nejrychlejší.

Jednoduše jde o to, že se opraví jeden údaj (bez nutnosti výpisu všech dat a zároveň aby všechny vstupní data zůstaly uchovány) - stejně jako u captchy - a vše se odehrálo napozadí (pomocí header)
ReZetFet
Junior

Odeslat příspěvekod karlos00x 2. 6. 2013 19:56

http://stackoverflow.com/questions/1034 ... ing-header
tady nekdo rika ze to nejde, nekdo to pak ukazuje ze to jde ale ze to neni moc cajk...
osobne bych to resil tak, ze bych z toho poskladal pole a to serializoval a ulozil do session nebo do databaze.
Upgrade který má smysl: SSD. Zažijete svižný počítač.
karlos00x
Pokročilý

Odeslat příspěvekod gandor 3. 6. 2013 03:29

Osobne by som sa skutocne zamyslel, ze naco potrebujem vytvarat novy request...
To skutocne nieje lepsie vziat aktualnu stranku, prepisat superglobalnu premennu POST (pokial to lepsie nejde) a includnut ten subot oprav.php?
Ak je zapotreby zmazat aktualne data, tak musi byt nieco outputnute a potom samozrejme uz nemozu ist headers... Ale aj to sa da riesit cez zaobalenie na ob_start() a ob_end()...
A este jedna poznamka - tymto sposobom co som tu popisal uzivatelovi usetris 1 request - cas a vykon aj pre tvoj server aj pre navstevnika...

PS. fakt ze vobec musis riesit tento problem znamena, ze mas asi velmi jednoduchy system, alebo niekde nieco zle navrhnute. To ale asi vies aj sam...
gandor
Mírně pokročilý

Odeslat příspěvekod Haunter 4. 6. 2013 09:04

Pošleme z vygenerované stránky stránce jiné která to pošle zas další stránce...

Proč tak složitě? Php je jednoduché...

Uživatel už nemůže mít zobrazené data, které jednou zadal? Třeba input "hidden",
nebo si to pamatovat v session (nebo cookies) jak již bylo řečeno, pokud tam těch dat není nějak extrémně moc...
Haunter
Junior
Uživatelský avatar

Odeslat příspěvekod ReZetFet 6. 6. 2013 21:15

karlos00x píše:http://stackoverflow.com/questions/10344891/sending-post-data-using-header

to je skoro (nebo úplně - to nevím) to samý. A ten příklad na hostingu nefunguje. Šlo mi o funkční vytvoření $POSTu v header.
gandor píše:PS. fakt ze vobec musis riesit tento problem znamena, ze mas asi velmi jednoduchy system, alebo niekde nieco zle navrhnute. To ale asi vies aj sam...

Je to prehistorický a místy až "prasečí" kód. Zpracování dat probíhá na stránce která jen vykonává kód ale nic nezobrazí.. tzn. úspěch nebo neuspěch zpracování dat určí kam se přeměruje. To se pak data ztratí. Když stránka nic nevypíše tak není možné ani zobrazit formulář a data opravit. Proto mě napadlo, že by bylo dobré data přeposlat stránce kde by ten formulář byl.
ReZetFet
Junior

Odeslat příspěvekod karlos00x 7. 6. 2013 09:30

tak data ukladej serializovane do session, co je na tom k nepochopeni?
Upgrade který má smysl: SSD. Zažijete svižný počítač.
karlos00x
Pokročilý

Odeslat příspěvekod ReZetFet 7. 6. 2013 23:29

karlos00x píše:tak data ukladej serializovane do session, co je na tom k nepochopeni?

k nepochopení nic. řešení se session by mohlo pokračovat asi jako na http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=142683
Existuje hned několik možností.. zmíněné session, uložení do db, redirect a location bude posílat jako data GET, vypsání dat do formuláře a pak ono řešení header. a to je to co mě zajímá.
Tohle nemyslím nijak zle, ale je to jak kdybych se ptal na koupi auta a bylo mi doporučený ať si vyberu červenou škodovku i když chci třeba trabant.
Nejde o tvrdohlavost, ale zjistit kde je chyba. Evidentně to taknějak jde a mě zajímá jak ;-)
ReZetFet
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků