php 5.3.0
Zdravím.
Snažím se skriptem poslat data do formuláře který vyhledá produkt od
Lenova a vypíše jakou má záruku.
Nedokážu ale protlačit data do POST formuláře a nevím proč.
Stránky josu : https://services.lenovo.com/…tyLookup.jsp
Skript
<?php
function array_implode( $glue, $separator, $array ) { //Funkce kerá převede pole na string ve formátu "foo=bar&foo2=bar2"
if ( ! is_array( $array ) ) return $array;
$string = array();
foreach ( $array as $key => $val ) {
if ( is_array( $val ) )
$val = implode( ',', $val );
$string[] = "{$key}{$glue}{$val}";
}
return implode( $separator, $string );
}
$cookieFileName = "C:\wamp\www\POKUS\cookie.txt";
$errorLogName = "errorlog.txt";
$errorLog = fopen($errorLogName, "w");
$curl = curl_init();
$url = "https://services.lenovo.com/ibapp/il/WarrantyLookup.jsp";
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_STDERR, $errorLog);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFileName);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFileName);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$post['country'] = "897";
$post['iws'] = "off";
$post['sitestyle'] = "lenovo";
$post['type'] = "";
$post['productId'] = "2";
$post['selLanguage'] = "EN";
$post['warrantySubmit2'] = "1";
$query = array_implode( '=', '&', $post );
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $query);
echo "Poslal jsem tato data: ".$query."<br />\n"; // jen pro jistotu si vypisuju jestli jsem v post_fields neposlal nejakej nesmysl
$vysledek = curl_exec ($curl);
curl_close ($curl);
fclose($errorLog);
echo ($vysledek);
?>
Verbose mi vraci tento vypis:
* About to connect() to services.lenovo.com port 443 (#0)Editoval Ghandi (25. 1. 17:09)
No nevím, máš to sice zbytečně komplikované, ale chybu nevidím.
Všiml sis, na co to přesměrovává?
"If you receive the warning below, please click "NO" to continue
Please click "OK" to continue.
Ok
Vidím, že tam mají nějaké ajaxové hovadiny, které by sis měl pořádně projít.
Trošku jsem ti to zjednodušil
$cookieFileName = "C:\wamp\www\POKUS\cookie.txt";
$curl = curl_init("https://services.lenovo.com/ibapp/il/WarrantyLookup.jsp");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFileName);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFileName);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$post['country'] = "897";
$post['iws'] = "off";
$post['sitestyle'] = "lenovo";
$post['type'] = "";
$post['productId'] = "2";
$post['selLanguage'] = "EN";
$post['warrantySubmit2'] = "1";
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
$vysledek = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close ($curl);
var_dump($info);
echo $vysledek;
Editoval HosipLan (25. 1. 18:39)
Neptej se, jestli se můžeš ptát | Blog | Twitter | GitHub | CMS Kdyby
Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni