W poniższym kodzie chodzi o to by po zalogowaniu się do serwisu (to działa) ma zostać wysłany kolejny formularz, który zawiera tylko jedno pole i jest to pole typu file.
Niestety po wykonaniu funkcji upload() plik nie zostaje wrzucony. Na testowym pliku otrzymuje wynik
Kod
Array
(
[file] => Array
(
[name] => 1.rar
[type] => application/octet-stream
[tmp_name] => /var/www/clients/client635/web1671/tmp/phps3NekX
[error] => 0
[size] => 1388
)
)
Array
(
[target] => default_upload
[enctype] => multipart/form-data
)
W czym może być problem?
<?php
$url = 'http://adresstrony/login/';
$site = 'http://adresstrony/profil/';
$site2 = 'http://adresstrony/upload.php';
$username = 'xyz';
$password = 'xyz';
$html = pobierzstrone($site);
$userlogin = $b[1][0];
$data = "id=hdHomeLogin&user_login=".$userlogin."&login=". $username ."&pass=". $password ."";
login($url, $data);
$html2 = pobierzstrone($site);
//funkcja logownia
function login($url,$data){
$fp = fopen("cookie.txt", "w"); $login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($login, CURLOPT_TIMEOUT, 40000);
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($login, CURLOPT_POST, TRUE);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
return curl_exec ($login);
curl_close ($login);
}
//fukcja pobierania strony
function pobierzstrone($site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
return curl_exec ($ch);
curl_close ($ch);
}
function upload($site){
$postFields['file'] = '@' . dirname(__FILE__) . '/1.rar'; $postFields['target'] = 'default_upload';
$postFields['enctype'] = 'multipart/form-data';
$login = curl_init();
curl_setopt($login, CURLOPT_TIMEOUT, 40000);
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($login, CURLOPT_URL, $site);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($login, CURLOPT_POST, TRUE);
curl_setopt($login, CURLOPT_POSTFIELDS, $postFields);
return curl_exec ($login);
curl_close ($login);
}
upload($site2);
?>
odświeżam
Ten post edytował Kasat 7.10.2013, 16:45:32