[PHP] Nie można przekazać zmiennej? |
[PHP] Nie można przekazać zmiennej? |
17.01.2014, 14:02:26
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 6.01.2014 Ostrzeżenie: (0%) |
To dopełnienie tego tematu.
Zachodziłem w głowę, co sprawia, że nie mogę się zalogować i odkryłem problem. Ale za nic nie mogę odnaleźć rozwiązania. Taki kod pozwala mi się logować bez problemu:
ale już taki kod nie pozwala - strona zwraca komunikat, że cookies nie są włączone.
Ja potrzebuję by to działało w drugiej wersji, ale skoro cURL mi takie coś odrzuca to... co mam zrobić? Dodam, że plik cookie.txt istnieje i w obu wersjach ciasteczko zapisuje się i można je odczytać. Ale nie działa. Bo nie. Ja nie rozumiem, jak miałbym to rozwiązać. Z góry dzięki za pomoc! Ten post edytował Nagareteku 17.01.2014, 14:13:39 |
|
|
17.01.2014, 15:52:58
Post
#2
|
|
Grupa: Zarejestrowani Postów: 205 Pomógł: 43 Dołączył: 5.03.2012 Ostrzeżenie: (0%) |
Haha, niezłe cookie no ciekawe..
A sprawdziłeś może czy w pliku, poza kodem PHP nie masz białych znaków (przed <?php i po ?>) ? Ten post edytował lukasz1985 17.01.2014, 15:59:51 |
|
|
17.01.2014, 16:05:02
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 6.01.2014 Ostrzeżenie: (0%) |
Sprawdzałem, wszystko jest czyste :x
|
|
|
-Gość- |
17.01.2014, 16:18:31
Post
#4
|
Goście |
|
|
|
17.01.2014, 16:29:50
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 6.01.2014 Ostrzeżenie: (0%) |
Tak, w końcu używam Notepada++, chociaż nie wiem, co to ma do rzeczy, skoro te dwa kody operują na tym samym pliku, dwa te kody zapisują dobrze, ale ten drugi jakoś działa tak, że z podaną zmienną, ciasteczka są "wyłączone".
|
|
|
17.01.2014, 16:39:35
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
ale ten drugi jakoś działa tak, że z podaną zmienną, ciasteczka są "wyłączone". Nie ma takiej opcji. Te dwa kody są równoważne, a problem musi leżeć gdzie indziej. Dla testu wykonaj poniższy scenariusz: 1. var_dump( $_SERVER["DOCUMENT_ROOT"] . '/panel/cookies/cookie.txt' ); 2. Utwórz pusty plik z lokalizacją jak w 1. 3. Wykonaj pierwszą wersję skryptu kilka razy 4. Wykonaj 1. i 2., a w 3. punkcie uruchamiaj drugą wersję skryptu. [edit] Aha, jeszcze jedno, chyba najważniejsze. Kiedy używasz pliku COOKIEJAR, musisz wykonać curl_close, żeby wyzwolić zapis ciastek. http://php.net/manual/en/function.curl-setopt.php Cytat CURLOPT_COOKIEJAR
The name of a file to save all internal cookies to when the handle is closed, e.g. after a call to curl_close. Ten post edytował sowiq 17.01.2014, 16:40:09 |
|
|
17.01.2014, 17:02:13
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 6.01.2014 Ostrzeżenie: (0%) |
@sowiq
Nawet nie muszę robić tego dla drugiego scenariusza. Dla pierwszego scenariusza to wygląda tak: 1. Tworzę plik dla ciasteczka. 2. Uruchamiam logowanie. 3. Błąd - "cookies are not enabled" 4. Wciskam F5, nie usuwam pliku ciasteczka. 5. Logowanie działa. Zrobiłem też wersje bez tworzenia pliku manualnie: daję go utworzyć cURLowi. 1. Uruchamiam logowanie. 2. Błąd - "cookies are not enabled", ale plik jest utworzony, ciasteczko zapisane 3. Wciskam F5, nie usuwam pliku ciasteczka. 5. Logowanie działa. Tego to ja już w ogóle nie rozumiem. #edit 1. zrobiłem jednak wersję dla drugiego scenariusza (ze zmienną) - to samo 2. var_dump dla każdego scenariusza wygląda tak samo, po każdym uruchomieniu:
Ten post edytował Nagareteku 17.01.2014, 17:06:20 |
|
|
17.01.2014, 17:24:54
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Niektóre strony sprawdzają, czy masz włączoną obsługę cookies. W tym celu za pierwszym razem (kiedy jeszcze ciastko nie jest dostępne do odczytu) odświeżają stronę. Widocznie ta Twoja robi to inaczej niż za pomocą nagłówka HTTP. Po prostu cURL nie rozumie tego przekierowania i za pierwszym razem po prostu pokazuje Ci komunikat. Za drugim razem, kiedy ciastko już jest w pliku i zostanie wysłane na serwer, wszystko jest OK.
Rozwiązanie jest proste. Przed zalogowaniem zrób jednego dodatkowego requesta tylko po to, żeby utworzyło Ci ciastko Ten post edytował sowiq 17.01.2014, 17:25:31 |
|
|
17.01.2014, 18:23:15
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 6.01.2014 Ostrzeżenie: (0%) |
Podziałało, ale tylko pod warunkiem, że pobieranie ciasteczka i logowanie będzie odbywało się w dwóch różnych modułach, nie mogły następować po sobie.
Dzięki wielkie, masz u mnie piwo! : ) |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 03:35 |