fork(1) download
  1. <?php
  2. class smsOrange
  3. {
  4. private $maxLenOfSMS,$maxNumOfSMS;
  5. private $message,$length;
  6. public function __construct($maxLenOfSMS=409,$maxNumOfSMS=4)
  7. {
  8. $this->maxLenOfSMS=$maxLenOfSMS;
  9. $this->maxNumOfSMS=$maxNumOfSMS;
  10. $this->curl=array();
  11. }
  12. public function setMessage($message)
  13. {
  14. $message=trim($message);
  15. $num=ceil(strlen($message)/($this->maxLenOfSMS-strlen($this->recipient)));
  16. if($num>$this->maxNumOfSMS || $num<1)
  17. return false;
  18. $this->message=$message;
  19. return $num;
  20. }
  21. private $recipient;
  22. public function setRecipient($recipient)
  23. {
  24. if(!preg_match('/[0-9]{9}/',$recipient))
  25. return false;
  26. $this->recipient=$recipient;
  27. return true;
  28. }
  29. private $sender;
  30. public function setSender($sender)
  31. {
  32. $sender=trim($sender);
  33. $len=strlen($sender);
  34. if($len>30 || $len<0 || $len+strlen($this->message)>$this->maxLenOfSMS*$this->maxNumOfSMS)
  35. return false;
  36. $this->sender=$sender;
  37. return true;
  38. }
  39. private $curl;
  40. public function setCurlOpt($array)
  41. {
  42. $this->curl=$array;
  43. }
  44. private function exec($url,$post=array(),$referer='http://o...content-available-to-author-only...e.pl',$header=array())
  45. {
  46. $opt=$this->curl+array(
  47. CURLOPT_FOLLOWLOCATION =>true,
  48. CURLOPT_HEADER =>false,
  49. CURLOPT_POST =>(count($post)>0),
  50. CURLOPT_RETURNTRANSFER =>true,
  51. CURLOPT_POSTFIELDS =>http_build_query($post),
  52. CURLOPT_REFERER =>$referer,
  53. CURLOPT_URL =>$url,
  54. );
  55. if(isset($this->curl[CURLOPT_HTTPHEADER]))
  56. $opt[CURLOPT_HTTPHEADER]=$this->curl[CURLOPT_HTTPHEADER];
  57. if(!empty($header))
  58. if(isset($opt[CURLOPT_HTTPHEADER]))
  59. $opt[CURLOPT_HTTPHEADER]+=$header;
  60. else
  61. $opt[CURLOPT_HTTPHEADER]=$header;
  62. $ch=curl_init();
  63. curl_setopt_array($ch,$opt);
  64. $r=curl_exec($ch);
  65. curl_close($ch);
  66. return $r;
  67. }
  68. public function getToken()
  69. {
  70. $token=$this->exec('http://s...content-available-to-author-only...e.pl/');
  71. if(!$token) return false;
  72. $token=substr($token,strpos($token,'<img src="rotate_token.aspx?token=')+34);
  73. $token=substr($token,0,strpos($token,'"'));
  74. return $token;
  75. }
  76. public function getCAPTCHA($token)
  77. {
  78. $img=$this->exec('http://s...content-available-to-author-only...e.pl/rotate_token.aspx?token='.$token,array(),'http://s...content-available-to-author-only...e.pl');
  79. if(!$img) return false;
  80. return 'data:image/gif;base64,'.base64_encode($img);
  81. }
  82. public function sendMessage($CAPTCHA,$token)
  83. {
  84. if(empty($this->recipient) || empty($this->sender) || empty ($this->message))
  85. return 5;
  86. $h=$this->exec('http://s...content-available-to-author-only...e.pl/sendsms.aspx',array(
  87. 'token' =>$token,
  88. 'RECIPIENT' =>$this->recipient,
  89. 'RecipientValue' =>'',
  90. 'RecipientType' =>0,
  91. 'SENDER' =>$this->sender,
  92. 'SHORT_MESSAGE' =>$this->message,
  93. 'pass' =>$CAPTCHA,
  94. 'Send' =>1
  95. ),'http://s...content-available-to-author-only...e.pl/',array(
  96. 'Content-type: application/x-www-form-urlencoded'
  97. ));
  98. foreach(array(
  99. 'messege_sent_success',
  100. 'Pole ODBIORCA musi składać się z 9 cyfr',
  101. 'adresat wiadomo¶ci nie ma aktywnej usługi SMS z Internetu',
  102. 'Brak pola/pól w HTTP POST',
  103. 'Pewne pola w HTTP POST maj± długo¶ć 0'
  104. ) as $k=>$v){
  105. if(strpos($h,$v)!==FALSE) return $k+1;
  106. }
  107. return 0;
  108. }
  109. }
  110. ?>
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty