Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Problém s php formulářem

Ahoj, potřeboval bych poradit s php a formulářem... Mám zadání:

Udělat web. aplikaci, kde uživatel zadá požadované údaje a na základě těchto údajů mu to na webu rwe vyhledá plánované odstávky (oficiální formulář rwe je zde: odstavky)

Problém je, že mi jejich aplikace nebere moje data (odesílaná postem pomocí curl....)

Schválně jsem si udělal v php jednoduchý script, který mi ukáže, která data formulář posílá:

foreach ($_POST as $k => $v) {
    if (is_array($v)) {
        foreach ($v as $value) {
            echo "prom.: " . $k . " hodnota= " . $value . "<br><br>";
        }
    } else {
        echo "prom.: " . $k . " hodnota= " . $v . "<br><br>";
    }

// proměnná $k obsahuje název proměnné (jméno z formuláře) 
// proměnná $v obsahuje hodnotu proměnné 
}

Když jsem pa k tyto data zatím napevno vložil do svého scriptu (zatím místo formuláře), tak mi rwe pořád vypisuje, že jsem něco blbě vyplnil...

Pozn.: rwe používá u formuláře skryté pole "token", kde je při každém načtení form. jiný 32 místný kod...Tak jsem to u sebe udělal tak, že před odesláním dat si pomocí file_get_html načtu rwe form a vemu si přidělený token...

Pozn. 2: form rwe má hodně skrytých polí...

Přikládám kod, kde je ukázka vkládání a odeslání dat pomocí curl (zatím napevno vložené hodnoty):

//ZISK TOKENU
$kod = file_get_html("www.rwe-distribuce.cz/cs/odstavky/");
$input = $kod->find('input');//pomocí php html parseru ([url=www.maxiorel.cz/php-simple-html-dom-parser-jak-jednoduse-zpracovat-html-v-php]www.maxiorel.cz[/url]) si vemu inputy a najdu token:
        foreach ($input as $value) {
            if (strpos($value, "token") > 0) {
                $token = substr($value, strpos($value, "value=\"") + strlen("value=\""));
                $token = substr($token, 0, strlen($token) - 3);
                break;
            }
        }
//CURL!!!!!!!!!
$ch = curl_init("www.rwe-distribuce.cz/cs/odstavky/"); //CILOVA URL
curl_setopt($ch, CURLOPT_HEADER, 0); //POKUD CHCI VRATIT INFO HLAVICKU
curl_setopt($ch, CURLOPT_POST, 1); //NASTAVIM ZE CHCI ODESLAT DATA
$var = "postback=0&init=n&token=" . $token . "&noinit=1&zadatelKrajId&zadatelObecId&typVstupu=1";
chk_mes = array();
        for ($i = 1; $i < 13; $i++) {
            if ($i == 5) {//zatím na pevno jako že vybírám 5. měsíc
                $chk_mes[$i] = 1;
            } else {
                $chk_mes[$i] = NULL;
            }
        }
$var .= "&chk_mes=" . $chk_mes;
$var .= "&zadatelKraj=Pardubický kraj&zadatelObec&datumOd&datumDo&btnPokracovat=Potvrdit";
curl_setopt($ch, CURLOPT_POSTFIELDS, $var);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //POKUD CHCI PRACOVAT S VYSLEDNOU STRANKU - NASTAVIM NA 1
$kod = curl_exec($ch);
curl_close($ch);
echo $kod;//vypis výsledku!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Moc prosím o pomoc, co dělám blbě...Patlám se s tím už od pátku a nic...Díky

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak jsem pokročil...musí se odeslat ještě tři cookies... Ale problém je, že je nedokážu získat, něc… nový
n.u.r.v. 30.05.2013 15:53
n.u.r.v.
vyřešeno - u formuláře, který vyplňuje uživatel dám do skrytého iframe tu původní stránku a tak získ… poslední
n.u.r.v. 03.06.2013 22:09
n.u.r.v.

Tak jsem pokročil...musí se odeslat ještě tři cookies...

Ale problém je, že je nedokážu získat, něco dělám blbě...

Co funguje:

Otevřít si např. ve FF tu stránku a vzít a ručně si z ní (např. pomocí firebug-u) hodnoty cookies a tokenu. To pak když vložím natvrdo do php kodu (curl) a odešlu, tak to funguje.

Co nefunguje a já potřebuji aby fungovalo:
Před odesláním curl post si potřebuji načíst ty data, tak jsem vzal file_get_contents(url), hodnoty jsem získal z kodu (token) a cookies pomocí této funkce:

$cookies = array();
        foreach ($http_response_header as $hdr) {
            if (preg_match('/^Set-Cookie:\s*([^;]+)/', $hdr, $matches)) {
                parse_str($matches[1], $tmp);
                $cookies += $tmp;
            }
        }
        $coo = "";
        foreach ($cookies as $key => $value) {
            //if (strpos($key, "SESSIONID") == 0) {
                $coo.=";" . $key . "=" . $value;
            //}
        }

a proměnnou $coo jsem předal curl: (curl_setopt($ch, CURLOPT_COOKIE, $coo);)

Problém je, že to nefunguje...

Co s tím?

Toto je odkaz, kde beru cookies (ARRAffinity,JSESSIONID,RedDotLiveServerSessionID) a token: odstavky

Zpět do poradny Odpovědět na původní otázku Nahoru