Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z cURL
Forum PHP.pl > Forum > Przedszkole
lukasz1234567
Witam wszystkich serdecznie.
Piszę, ponieważ mam problem... Napisałem sobie taki o to skrypt:
Kod
<?php

//inicjalizacja i ustawienie url'a
$url = 'http://localhost/admin';
$curl = curl_init();

//ustawienie opcji
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=admin&haslo=1234566');
curl_setopt($curl, CURLOPT_REFERER, $url);

//wykonanie i zamkniecie
curl_exec($curl);
curl_close($curl);


$url2 = 'http://localhost/admin/index.php?strona=druzyny&operacja=zmien_aktywnosc_roz&id=4&roz=1';
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);

curl_exec($curl);
curl_close($curl);

?>


Założenie mam takie, że skrypt ten będzie zmieniał pokazywanie drużyny w menu on na off.
Jednak po uruchomieniu tego skryptu w konsoli nie dzieje się nic. Po wejściu na stronę, opcja nie działa.
A w konsoli, nie wyświetlają się żadne błędy. Dlatego właśnie zwracam się z prośbą o pomoc do Was. Co takiego robię źle?

Dodam, że pole logowania do panelu administracyjnego zawiera następujące pola:
Kod
<div style="width: 400px; background: #eee; margin: 100px auto; padding: 50px; text-align: center;"><img src='Users.png'/><br><br /><form action='index.php' method=post>Login: <input type=text id=field1 name=login><br /><br />Hasło: <input type=password id=field2 name=haslo><br /><br /><input type=submit value='Zaloguj!'></form></div>
Tajgeer
A czego się spodziewałeś? Przecież podany przez Ciebie skrypt nie wyświetli dosłownie nic. Jeśli ustawiłeś już CURLOPT_RETURNTRANSFER na 1, to wypadałoby jakoś wyświetlić to, co cURL pobrał (czy to poprzez przypisanie wyniku curl_exec() do zmiennej, czy przez zwykłe "echo").
lukasz1234567
Przypisałem teraz wynik ostatniego curl_exec do zmiennej i po wykonaniu wywala mi źródło indexu logowania do panelu.

Przepraszam, za tak błache problemy, ale jestem zielony jeśli chodzi o curl, bo dopiero zacząłem.
Liczę na wyrozumiałość.
nospor
Cytat
Przypisałem teraz wynik ostatniego curl_exec do zmiennej i po wykonaniu wywala mi źródło indexu logowania do panelu.
No tak, bo sesja/logowanie pamietana jest w ciachach, a ty chiach nie zapisujesz i nie przekazujesz dla ostatniego curl_exec.

Zajrzyj do manuala curl bo masz tam napisane jak poprawnie obsluzyc autoryzacje wraz z ciachami by pamietalo logowanie
lukasz1234567
[code]
<?php

$url = 'http://localhost/admin';
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=admin&haslo=1234567');
curl_setopt($curl, CURLOPT_REFERER, $url);

curl_exec($curl);

$curl1 = curl_init('http://localhost/admin/index.php');
curl_setopt($curl1, CURLOPT_HEADER, 1);
curl_setopt($curl1, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($curl1, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
curl_exec($curl1);

curl_close($curl1);
curl_close($curl);


$url2 = 'http://localhost/admin/index.php?strona=druzyny&operacja=zmien_aktywnosc_roz&id=4&roz=1';
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);

curl_exec($curl);
//$zmienna = curl_exec($curl);
//echo($zmienna);
curl_close($curl);

?>

Mam coś takiego, i ciastka zapisują się.
Jak przy drugim użyciu curla wczytać je, aby wiedział on, że jest zalogowany i może wykonać operacje w panelu administratora?
nospor
No przy drugim wywolaniu tez masz ustawic te ciacha....
curl_setopt($curl1, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($curl1, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
lukasz1234567
A powiedz mi, czy w ogóle w dobry sposób te ciacha zapisuje:

Kod
$url = 'http://localhost/admin';
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=admin&haslo=1234567');
curl_setopt($curl, CURLOPT_REFERER, $url);

curl_exec($curl);

$curl1 = curl_init('http://localhost/admin/index.php');
curl_setopt($curl1, CURLOPT_HEADER, 1);
curl_setopt($curl1, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
curl_setopt($curl1, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
curl_exec($curl1);

curl_close($curl1);
curl_close($curl);
lukasz1234567
Ustawiłem ciastka, ale po wykonaniu w konsoli wyświetla się źródło indexu logowania a akcja nadal nie jest wykonana...
nospor
No ale czemu logowanie rozbiles na dwa zadania? Jedno z haslem a drugie z ciachem? Haslo i ciacho maja byc w tym samym jednym zadaniu.... mowilem, bys zajrzal do manuala bo tam masz to podane na przykladach. no ale po co...
lukasz1234567
Dziękuje za pomoc. Już wszystko działa tak, jakbym chciał. Następnym razem od razu zajrzę do manuala smile.gif
Dziękuje jeszcze raz smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.