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
[b]Twoja przeglądarka nie akceptuje plików cookie. Włącz pliki cookie, jeśli chcesz się zalogować.[/b]
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
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00117 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.14.134.18' WHERE u.id=1 |
0.00115 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.14.134.18', 1732325681) |
0.00045 | SELECT * FROM punbb_online WHERE logged<1732325381 |
0.00051 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=14567 AND t.moved_to IS NULL |
0.00008 | SELECT search_for, replace_with FROM punbb_censoring |
0.00104 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=14567 ORDER BY p.id LIMIT 0,25 |
0.00092 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=14567 |
Total query time: 0.00545 s |