Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-07-09 17:15:40

  ich - Użytkownik

ich
Użytkownik
Zarejestrowany: 2008-06-22

[PHP/CURL/FSOCKOPEN] Problem z przesyłaniem POST

Witam wszystkich,

potrzebuje pomocy kogoś oblatanego z programowaniem w PHP.
Mianowicie, pisze skrypt dodawania ogłoszeń do jednego z portali.
Stworzyłem dwa skrypty jeden z wykorzystaniem CURL i ten działa o ile nie chce wysłać zbyt dużej ilości danych/informacji metodą POST.
Działający skrypt z CURL:

Kod:

<?php

$ogloszenie = array();
$ogloszenie[kategoria] = 'kat1';
$ogloszenie[tytul] = 'tytul_opisu';
$ogloszenie[opis] = 'opis';
$ogloszenie[gal] = 'link_do_img';
$ogloszenie[gal_min] = 'link_do_img_mini';
$strona = curl_init();

curl_setopt($strona, CURLOPT_HEADER, false);
curl_setopt($strona, CURLOPT_FRESH_CONNECT, true);
curl_setopt($strona, CURLOPT_RETURNTRANSFER, true);
curl_setopt($strona, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($strona, CURLOPT_USERAGENT, 'Mozilla/5.0
 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10');
curl_setopt($strona, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($strona, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($strona, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($strona, CURLOPT_COOKIE, session_name() . '=' . session_id());
curl_setopt($strona, CURLOPT_TIMEOUT, 50);
curl_setopt($strona, CURLOPT_POST, true);
curl_setopt($strona, CURLOPT_POSTFIELDS, 'login=rysiopysio&haslo=jakieshaselko&Submit=zaloguj się');

curl_setopt($strona, CURLOPT_URL, 'http://strona_www.pl/logowanie.php');

curl_setopt($strona, CURLOPT_POST, true);
curl_setopt($strona, CURLOPT_POSTFIELDS, 'SubArea=3200008&Thumbnail='.$ogloszenie[gal_min].'&Photo='.$ogloszenie[gal].'&featuredAdDuration=0&CatId='.$ogloszenie[kategoria].'&Title='.$ogloszenie[tytul].'&Description='.$ogloszenie[opis].'&ReformattedDesc=1&PreviewToPost=false&submit=dodaj ogłoszenie >');
curl_setopt($strona, CURLOPT_URL, 'http://strona_www.pl/panel.php');
curl_close($strona);

?>

W związku z tym że CURL nie daje rady zacząłem kombinować z fsockopen a dokładniej z klasą http://scripts.incutio.com/httpclient/.

Skrypt który wypociłem wygląda następująco:

Kod:

<?php

require_once('HttpClient.class.php');
$plik_cookie = 'ciastko.txt';

$client = new HttpClient('strona_www.pl');
$client->setMaxRedirects(10);
$client->setDebug(true);

$client->setUserAgent('Mozilla/5.0 
(Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207');
$client->post('/logowanie.php', array(
   'login' => 'rysio',
   'haslo' => 'cosik',
   'Submit' => 'zaloguj się'
));
// pobieranie danych cookie i zapisywanie ich do pliku
foreach($client -> getHeaders() as $typ1 => $wartosc1){
   if ($typ1 == 'set-cookie'){
           $i=0;
       foreach($wartosc1 as $typ2 => $wartosc2){
           if(!$i == 0){ $zapis_cookie .= "\r\n";}
           $zapis_cookie .= "$wartosc2";
           $i++;
       }
   }
}
//czytanie danych z pliku i przekształcanie do tablicy
file_put_contents($plik_cookie, $zapis_cookie);
$czytanie_z_cookie = file_get_contents($plik_cookie);
$dzielenie_linie = explode("\r\n", $czytanie_z_cookie);

$client->setCookies($dzielenie_linie);

$client->get('/panel.php');

echo $client->getContent();

?>

Dalej niestety nie osiągnąłem żądanego efektu, przy takim skrypcie dostaje odpowiedź od strony
Twoja przeglądarka nie akceptuje plików cookie. Włącz pliki cookie, jeśli chcesz się zalogować.

Jakiś pomysł??

Offline

 

#2  2009-07-10 19:48:51

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: [PHP/CURL/FSOCKOPEN] Problem z przesyłaniem POST

1) sprawdz jaki masz limit wysylania metoda POST za pomoca funkcji phpinfo()
2) pokaz metode: $client->setCookies($dzielenie_linie);
3) sprawdz czy masz prawo do zapisu do pliku (0666) i zapisywanie w katalogu


LRU #480459

Offline

 

#3  2009-07-11 12:46:33

  ich - Użytkownik

ich
Użytkownik
Zarejestrowany: 2008-06-22

Re: [PHP/CURL/FSOCKOPEN] Problem z przesyłaniem POST

Witam,

dzięki za zainteresowanie.

A więc tak:
ad.1 ) post_max_size:    64M (chyba ze chodzi o coś innego)

ad.2 ) jeśli chodzi o Cookie jest to załatwiane przy pomocy tej classy http://scripts.incutio.com/httpclient/

ad.3 ) do całego folderu nie dawałem uprawnienie, tylko do pliku w którym przechowuje ciasteczka. Dla pewności dałem mu uprawnienia 0777. Dane cookie są zapisywane do pliku, jak i odczytywane.

Pozdrawiam.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)