Problém s php formulářem

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Václav Sedlář
Žlutá karta Bazar
Žlutá karta Bazar
Registrován: 01. dub 2006
Bydliště: Liberec
Kontaktovat uživatele:

Problém s php formulářem

Příspěvek od Václav Sedlář »

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: http://www.rwe-distribuce.cz/cs/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á:

Kód: Vybrat vše

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 pak 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):

Kód: Vybrat vše

//ZISK TOKENU
$kod = file_get_html("http://www.rwe-distribuce.cz/cs/odstavky/");
$input = $kod->find('input');//pomocí php html parseru ([url]http://www.maxiorel.cz/php-simple-html-dom-parser-jak-jednoduse-zpracovat-html-v-php[/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("http://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
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Problém s php formulářem

Příspěvek od arxeiss »

To je přesně to co jsem ti psal v minulém příspěvku.

V momentě kdy se tam dává token, tak to nikdy nemusíš vyřešit... Token může být závislý na IP adrese, může ukládat další data do COOKIES atd atd...

Navíc tam můžou mít nějaký JS script, který těsně před odesláním ti jiné pole nějak vyplní, a ty na to nemusíš přijít...

Za mě se na to vykašli, ty to tu budeš řešit třeba 14 dní, a za měsíc ten form změní a můžeš jet od znova, jak dopadl můj kámoš jednou...
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Václav Sedlář
Žlutá karta Bazar
Žlutá karta Bazar
Registrován: 01. dub 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: Problém s php formulářem

Příspěvek od Václav Sedlář »

Už to mám vyřešené....Zjistil jsem totiž, že využívají i cookies, na které to je závislé, takže samotný token je k ničemu...

Takže jsem to vyřešil takto:

1)uživatel se v prohlížeči dostane na mojí stránku s formulářem a na pozadí se ve skrytém iframe otevře ta stránka - tím si prohlížeč natáhne cookies a já získám token pomocí php

2)uživatel odešle form, já vložím token do curl post dat a odešlu...

Takto to funguje...
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: Problém s php formulářem

Příspěvek od arxeiss »

Což se divím, protože to COOKIE se ti natáhne do tvého prohlížeče, což ale nemá nic společného s tím CURL
Nebo ty ten form poté neodesíláš přes CURL ale už normálně přímo na jejich web? Tj dojde k přesměrování uživatele?

A vykašlal bych se na iframe, ale pomocí toho CURL kdy stahuješ ty data, prošel headers které ti posílá a tam ty cookies jsou,
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Václav Sedlář
Žlutá karta Bazar
Žlutá karta Bazar
Registrován: 01. dub 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: Problém s php formulářem

Příspěvek od Václav Sedlář »

Přes curl odesílám postem ty data a pak se mi vrátí výsledek a ten zpracuju...

Ale nevím jak získat pomocí curl před odesláním ty cookies (které se mění)...

Curlem samozřejmě cookies odesílám (CURLOPT_COOKIE), to jsem asi zapomněl říct...

Pozn: trochu jsem se splet - iframe už nepoužívám (to byla stará verze)...teď používám php, který když zobrazí můj form, tak si i na pozadí načte tu stránku a získá hodnoty cookies...
Odpovědět

Zpět na „Programování a web“