Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z prostym kodem (curl)
Forum PHP.pl > Forum > Przedszkole
BartixPL
Witam wszystkich to mój pierwszy post na forum więc proszę o tolerancję i pobłażliwość wobec moich braków niewiedzy. rolleyes.gif
Problem leży w kodzie sprawdzjącym, cała reszta kodu działa prawidłowo.
Oto wycinek kodu:

  1.  
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, 'tutaj znajduje się normalny link');
  4. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($curl, CURLOPT_HEADER, 0);
  7. $strona = curl_exec($curl);
  8. curl_close($curl);
  9.  
  10. if($strona == "0")
  11. {
  12. $message = "jest blad";
  13. }
  14. if($strona == "1")
  15. {
  16. $message = "dziala!.";
  17. $dane = "$nick-$offerId ";
  18. $filee = "gracze.txt";
  19. $fp = fopen($filee, "a");
  20. flock($fp, 2);
  21. fwrite($fp, $dane);
  22. flock($fp, 3);
  23. fclose($fp);
  24. }


Teraz opiszę problem, jak widać kod ma na celu sprawdzenie czy na podanej stronie www znajduję się liczba 0 czy liczba 1. Problem tkwi w tym że kod nie działa i zawsze pokazuję wartość "jest blad".
Proszę o przekształcenie kodu tak aby z podanej strony odczytywał wartość 0 lub 1. Ważne aby kod wykorzystywał właśnie curl.
Oczywiście ten kto pomożę i wyśle działający kod dostanie "Pomógł".
nospor
Czy tak ciężko sprawdzić co zawiera $strona?

var_dump( $strona);
BartixPL
No właśnie wartość jest zawsze 0 nawet jeśli powinna być 1 (sprawdzam recznie link i jest 1). Dlatego pytam się czy dobrze napisałem kod gdyż zawsze wczytuję wartość 0.
Na pewno dobrze naposałem to z curl?
nospor
ale 0 czy pusty ciąg? Bo to duża rożnica.
Pokaz dokładnie co zwraca var_dump().
Jeśli tam będzie dokładnie 0 a nie pusty ciąg, znaczy że strona tak ci zwraca.
BartixPL
Wrócę za godzinę do domu i prześle dokładnie.

Dziwne piszę bool(false), dlaczego zamienia wartości?
nospor
Ci php nie zmienia żadnych wartości.... Przeczytaj w manualu co oznacza false dla curl_exec..... Jak tak można nie myśleć?
BartixPL
Ja już nic nie łapie niby wszystko jest ok ale naprawde nie wiem jak zrobić żeby wyświetlał wartość true dla wartości 1 a wartość 0 do false. Czytałęm manuala i proszę o pomoc gdyż nie zrozumiałem jak wyciągnąć wartość i ją przypisać do zmiennej. Ten dział z curl jest dla mnie czarną magią...

Nie chce mi się więcej męczyć z tym kodem siedze nad tym kilka dni a to taki mały skrawek kodu proszę nich ktoś napisze mi kod który:
1. Wejdze na strone przez url.
2. Pobierze dane.
3. Przypiszę wartości z strony (czyli liczbe 1 i 0) do jakiejś wartości.
Tylko tyle potrzebuję, naprawdę nie mogę sobie z tym poradzić a chcę przejść do kolejnych etapów robienia strony.
Naturalnie ten kto wyśle ten mały kod dostanie "Pomógł".
wree
Jeżeli na stronie jest tylko 1 albo 0 możesz dać np if(eregi('1', $strona)) echo 'jest jedynka'; else echo 'nie ma jedynki';
Dla zera czy dowolnego innego znaku (ciągu znaków) możesz zrobić to samo, tylko zamiast jedynki wpisz co chcesz znaleźć na stronie.
BartixPL
Dzięki za pomoc. Zrobiłem tak jak kazałeś.
  1. $curl = curl_init();
  2. curl_setopt($curl, CURLOPT_URL, 'http://przykladowa.strona.pl');
  3. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  4. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($curl, CURLOPT_HEADER, 0);
  6. $strona = curl_exec($curl);
  7. curl_close($curl);
  8. var_dump($strona);
  9.  
  10. if(eregi('1', $strona))
  11. {
  12. $message = "dziala";
  13. $dane = "$nick-$offerId ";
  14. $filee = "gracze.txt";
  15. $fp = fopen($filee, "a");
  16. flock($fp, 2);
  17. fwrite($fp, $dane);
  18. flock($fp, 3);
  19. fclose($fp);
  20. }
  21. if(eregi('0', $strona)) //dawałem tu też else
  22. {
  23. $message = "Nie dziala";
  24. }
  25. }

Ale nadal wartość var_dump($strona); to bull(false) i odczytuję wartość "Nie dziala". Więc dalej proszę o pomoc.
wree
a czy curl wogóle zwraca ci cokolwiek? pobiera ci tą stronę? spróbuj pobrać inną stronę z tego serwera np. onet.pl albo zapinguj z tego serwera do tej strony co chcesz pobrać, może blokujesz ją firewallem albo ona blokuje twój serwer. Albo podaj dokładnie linka do strony jaką chcesz curl-ować to zobaczymy, bo coś ci musiało umknąć.
BartixPL
Link tak jak widać zawiera tylko 0 czasem 1. http://profitsms.pl/check.php?apiKey=af792...b3e94d338dbfaom
Edit: z onetu nic nie czyta czyli wina raczej kodu. Ale co jest źle??
crocodillo
  1. $strona = file_get_contents('http://profitsms.pl/check.php?apiKey=af79234059cb500g3e63afasb3e94d338dbfaom');
i po kłopocie smile.gif
wree
tu nie ma nic źle, mi ten kod działa ok:

  1. <?
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_URL, 'http://profitsms.pl/check.php?apiKey=af79234059cb500g3e63afasb3e94d338dbfaom');
  5. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  7. $strona = curl_exec($curl);
  8. curl_close($curl);
  9.  
  10. if(eregi('1', $strona))
  11. {
  12. echo 'dziala, teraz pokaze sie jeden: '; print_r($strona);
  13. }
  14. if(eregi('0', $strona))
  15. {
  16. echo "Nie dziala, teraz pokaze sie zero: "; print_r($strona);
  17. }
  18.  
  19.  
  20. ?>


ustaw tam 1 i sobie sprawdz, albo sprawdz sobie na dowolnej innej testowej stronie, kod jest ok.
BartixPL
No tak właśie też bym tak chciał jak mi znajdziesz jakiś darmowy host który obsługuję 'file_get_contents' to możemy pogadać smile.gif Niestety działa tylko CUrl.

Edit: Pewnie masz racje i kod działa ale gdzie mogę to sprawdzić? Wrzuciłem twój kod (sam, pusty na 3 darmowe host yoyo.pl ugu.pl) i nie chodzą... Może znacie jakiś tani host aby to wszystko normalne chodziło?
wree
ja sprawdzalem ten kod na linuxpl.eu, tani hosting.

ps. na allegro masz za pare zł hostingi. Nie wiem czy działają ale pamiętam że kilka lat temu tak kupowałem jak chciałem hosting bez ograniczneń wink.gif zawsze możesz maila wysłać do sprzedającego z zapytaniem czy odpali ten kod jego hosting.
crocodillo
curl_exec() zwraca false w przypadku niepowodzenia. Zawsze możesz sprawdzić błąd za pomocą curl_error() / curl_errno(). Sam kod masz napisany dobrze (no z wyjątkiem eregi()), jeśli Ci nie działa to pytaj o szczegóły dostawcę hostingu.
nospor
Cytat
Ja już nic nie łapie niby wszystko jest ok ale naprawde nie wiem jak zrobić żeby wyświetlał wartość true dla wartości 1 a wartość 0 do false. Czytałęm manuala i proszę o pomoc gdyż nie zrozumiałem jak wyciągnąć wartość i ją przypisać do zmiennej. Ten dział z curl jest dla mnie czarną magią...
Prosiłem: przeczytaj co oznacza FALSE. W manualu jak wół masz podane, że FALSE oznacza, że był problem z połączeniem, a nie że skrypt php zamienia ci 0 na FALSE. Czy to naprawdę jest takie trudne do zrozumienia??

Cytat
awsze możesz sprawdzić błąd za pomocą curl_error() / curl_errno()
Zastosuj się do tej rady, bo jest logicznym następstwem tego, że curl zwraca ci false.
BartixPL
Ok dzięki wszystkim za pomoc. Mam ostatnie pytanie szukam najtańszego(naprawde taniego) hostingu który ma:
1. Odbllokowane funkcje fopen i curl.
2. Wystarczy 50 mb dysku (bez bazy sql)
3. Najlepiej abonament miesięczny.
Jakieś przykłady??
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.