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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
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:
<?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:
<?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
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
Offline
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
Strony: 1