Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [wolontariat] Lekka modyfikacja klasy
Forum PHP.pl > Inne > Giełda ofert > Poszukuję
spayk
Bardzo prosze o przerobienie tej klasy tak aby dzialała na hostingu z włączoną fukncja safe_mode i open_basedir
  1. <?php
  2. /**
  3.  * @author Michell Hoduń
  4.  * @copyright (c) 2010 Michell Hoduń <mhodun@gmail.com>
  5.  * @description Klasa odpowiedzialna za wysyłanie SMS-ów z PlayMobile.pl.
  6.  */
  7.  
  8. class PlayMobile {
  9.  
  10. /**
  11.   * Wspomagacz dla CURL'a - ułatwienie dostępu
  12.   *
  13.   * @param string $url
  14.   * @param array $post
  15.   * @param string $ref
  16.   * @param integer $follow
  17.   * @param integer $header
  18.  */
  19. public static function curl ($url, $post = NULL, $ref = NULL, $follow = 1, $header = 1, $post_type = NULL)
  20. {
  21. $ch = curl_init ($url);
  22.  
  23. curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7');
  24. curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  25.  
  26. // Zapisywanie ciastek do pliku
  27. curl_setopt($ch,CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
  28. curl_setopt($ch,CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
  29.  
  30. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  31.  
  32. if ( ! empty($post) )
  33. {
  34. $postVars='';
  35.  
  36. foreach ($post as $option => $value)
  37. {
  38. $postVars .= $option.'='.urlencode($value).'&';
  39. }
  40. curl_setopt($ch, CURLOPT_POST, 1);
  41. curl_setopt($ch, CURLOPT_POSTFIELDS, $postVars);
  42. }
  43.  
  44. if ( $ref )
  45. {
  46. curl_setopt($ch, CURLOPT_REFERER, $ref);
  47. }
  48.  
  49. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  50. curl_setopt($ch,CURLOPT_HEADER, 1);
  51. curl_setopt($ch,CURLOPT_FOLLOWLOCATION, $follow);
  52.  
  53. $r = curl_exec($ch);
  54. curl_close($ch);
  55.  
  56. return $r;
  57. }
  58.  
  59. /**
  60.   * Funkcja odpowiedzialna za zalogowanie się konto + zalogowanie do bramki.
  61.   *
  62.   * @param string $login
  63.   * @param string $password
  64.   */
  65. public function DoLogin ($login, $password)
  66. {
  67. $BeforePost = array('SAMLRequest' => $this->GetGateway(), 'target'=> 'https://bramka.playmobile.pl');
  68.  
  69. $content = $this->curl('https://logowanie.playmobile.pl/p4-idp2/SSOrequest.do', $BeforePost, 'https://bramka.playmobile.pl/composer/public/mmsCompose.do');
  70.  
  71. preg_match('/name="random" value="(.+?)"/', $content, $rand);
  72. $post = array('step' => 1, 'next' => 'Next', 'random' =>$rand[1], 'login' =>$login, 'password' =>$password);
  73.  
  74. // Właściwe zalogowanie się
  75. $LoginDO = $this->curl('https://logowanie.playmobile.pl/p4-idp2/Login.do',$post,'',0);
  76. $samlLog_Post = array('SAMLResponse' => $this->SAMLResponse($LoginDO), 'target'=>'https://bramka.playmobile.pl');
  77. $this->curl('https://bramka.playmobile.pl/composer/samlLog?action=sso', $samlLog_Post, 'https://logowanie.playmobile.pl/p4-idp2/SSOrequest.do');
  78.  
  79. return $this->curl('https://bramka.playmobile.pl/composer/j_security_check', $samlLog_Post, 'https://bramka.playmobile.pl/composer/samlLog?action=sso');
  80. }
  81.  
  82. /**
  83.   * Pobierz "SAMLRequest" - wymagane do zalogowania.
  84.   *
  85.   * @return $SAMLRequest
  86.   */
  87. public function GetGateway()
  88. {
  89. $SAML = $this->curl('https://bramka.playmobile.pl/composer/public/mmsCompose.do', NULL, '', 0, 0);
  90.  
  91. // Wyszukaj SAMLRequest
  92. preg_match('/value="(.*)"/msU',$SAML,$w);
  93.  
  94. $SAMLRequest = $w[1];
  95.  
  96. // Zwróć
  97. return $SAMLRequest;
  98. }
  99.  
  100. /**
  101.   * Wyciągnięcie SAMLResponse z stringa (treści strony).
  102.   *
  103.   * @param string $content
  104.   */
  105. public function SAMLResponse ($content)
  106. {
  107. preg_match('/value="(.*)"/msU', $content, $w);
  108. return trim($w[1]);
  109. }
  110.  
  111. public function SendSMS ($odbiorca, $tresc)
  112. {
  113. $content = $this->curl('https://bramka.playmobile.pl/composer/public/editableSmsCompose.do');
  114.  
  115. // Wyciągnij kod 'zabezpieczający'
  116. preg_match('/name="randForm" value="(.+?)"/', $content, $rand);
  117.  
  118. $SMS = array('recipients' => $odbiorca, 'content_in' => $tresc, 'czas' => 0, 'sendform' => 'on', 'randForm' => $rand[1], 'old_signature' => '', 'old_content' => $tresc,'content_out' => $tresc);
  119.  
  120. $content2 = $this->curl('https://bramka.playmobile.pl/composer/public/editableSmsCompose.do', $SMS);
  121.  
  122. $SMS['SMS_SEND_CONFIRMED'] = 'Wyślij';
  123. $content3 = $this->curl('https://bramka.playmobile.pl/composer/public/editableSmsCompose.do', $SMS);
  124.  
  125. if (preg_match('/Wiadomo(.*) zosta(.*)a wys(.*)ana/',$content3))
  126. {
  127. // Wiadomość została wysłana poprawnie
  128. return TRUE;
  129. }
  130. else
  131. {
  132. // Wiadomość nie została wysłana - wystąpił błąd podczas jej wysyłania.
  133. return FALSE;
  134. }
  135. }
  136. }


Błąd jaki jest zwracany:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/xxx/domains/xxxx/public_html/PlayMobile.class.php on line 51




PS: czy ta klasa jest jeszcze aktualna czy działa nadal
vokiel
http://tinyurl.com/34skcn4
spayk
juz probowałem bez rezultatu same błędy wiec prosze o pomoc
vokiel
Możliwe rozwiązania:
1. PHP: Errore CURLOPT_FOLLOWLOCATION
2. PHP HTTP protocol client
3. Zastąpić cURL soketami
4. Poprawić ustawienia na hostingu, niech się admini nauczą, że dla utrzymania bezpieczeństwa stosuje się inne metody
spayk
a możesz zastosowac rozwiązanie 1 ?
Bardzo prosze bo ja nic z tego nie rozumiem
byłbym niezmiernie wdzięczny
yevaud
podaj widelki kwotowe w ktorych miesci sie Twoja wdziecznosc
spayk
Te widełki kwotowe to tak średnio, zrobiłby to ktos za darmo ?
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.