Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CURL
Forum PHP.pl > Forum > Gotowe rozwiązania
PiotrGP
Hey,

Mam aktywną usługę na www.smsapi.pl
Mam tam pakiet smsów.
Mam taki kod w PHP:
  1. <?php
  2. $username = 'mojanazwa'; //login z konta SMSAPI
  3. $password = 'mojehaslo';//lub $password="ciąg md5"
  4.  
  5. $from = ''; //nazwa nadawcy musi być aktywna
  6. $eco = 0; //określa czy wiadomość ma być wysłana jako Eco lub Pro
  7. $to = $_POST['to'];
  8. $message = urlencode("Zapraszam na zebranie, ktore odbedzie sie w najblizszy piatek o godzinie 17:00"); //treść wiadomości
  9. $url = 'https://ssl.smsapi.pl/sms.do';
  10. $c = curl_init();
  11. curl_setopt($c, CURLOPT_URL, $url);
  12. curl_setopt($c, CURLOPT_POST, true);
  13. curl_setopt($c, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password.'&from='.$from.'&eco='.$eco.'&to='.$to.'&message='.$message);
  14. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  15. $content = curl_exec ($c);
  16. curl_close ($c);
  17. echo $content;
  18. echo "wiadomość wysłana";
  19. ?>


Za cholerę nie chce się wysłać wiadomość SMS.

Używam Moves Portable. CURL mam włączony - korzystałem z tego: http://www.forum.mowesportable.net/topic/5...tension-in-php/ i nie tylko.
Kończą mi się pomysły.
Napisałem maila z powyższym kodem do obsługi SMSAPI.pl . Otrzymałem odpowiedź, że u nich mój kod działa. Także wina musi być po stronie serwera.

Jakieś koncepcje?


P.S. Link przez FOPEN też nie lata :/
_Borys_
Zamiast
  1. $content = curl_exec($c);

daj na razie
  1. if(curl_exec($c) === false)
  2. {
  3. echo 'Curl error: ' . curl_error($c);
  4. }
  5. else
  6. {
  7. echo 'Wszystko OK';
  8. }

Może pokaże błąd.
PiotrGP
błąd:

Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failedwiadomość wysłana
_Borys_
Przed curl_exec() daj
  1. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);

PiotrGP
No teraz działa :-)

Dziękuję bardzo.

Wklejam cały kod z mini formularzem. Może ktoś będzie potrzebował w przyszłości.

Swoją drogą, SMSAPI (www.smsapi.pl) , to niezły "patent".

  1. <form method="post" action="">
  2. <label for="to"><strong>Adresat:</strong><input maxlength="9" type="text" name="to" id="to" /></label><br />
  3. <input type="hidden" name="send" value="1" /> <button>Wyślij</button>
  4. </form>
  5.  
  6. <?php
  7. if (isset($_POST['send'])) {
  8.  
  9. $username = 'nazwauzytkownika'; //login z konta SMSAPI
  10. $password = 'haslo w md5';//lub $password="ciąg md5"
  11. $from = ''; //nazwa nadawcy musi być aktywna
  12. $eco = 0; //określa czy wiadomość ma być wysłana jako Eco lub Pro
  13. $to = $_POST['to'];
  14. $message = urlencode("Wychowawca serdecznie zaprasza na zebranie, ktore odbedzie sie w najblizszy piatek o godzinie 17:00"); //treść wiadomości
  15. $url = 'https://ssl.smsapi.pl/sms.do';
  16. $c = curl_init();
  17. curl_setopt($c, CURLOPT_URL, $url);
  18. curl_setopt($c, CURLOPT_POST, true);
  19. curl_setopt($c, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password.'&from='.$from.'&eco='.$eco.'&to='.$to.'&message='.$message);
  20. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  21. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  22. if(curl_exec($c) === false) {
  23. echo 'Curl error: ' . curl_error($c);
  24. }
  25. else
  26. {
  27. echo 'Wszystko OK. Wiadomość została wysłana';
  28. }
  29. curl_close ($c);
  30. echo $content;
  31. }
  32. ?>


_Borys_
Popraw na tak
  1. if($content = curl_exec($c) === false){

...
PiotrGP
Poprawiony kod:

  1. <form method="post" action="">
  2. <label for="to"><strong>Adresat:</strong><input maxlength="9" type="text" name="to" id="to" /></label><br />
  3. <input type="hidden" name="send" value="1" /> <button>Wyślij</button>
  4. </form>
  5.  
  6. <?php
  7. if (isset($_POST['send'])) {
  8. $username = 'nazwauzytkownika'; //login z konta SMSAPI
  9. $password = 'haslo w md5';//lub $password="ciąg md5"
  10. $from = ''; //nazwa nadawcy musi być aktywna
  11. $eco = 0; //określa czy wiadomość ma być wysłana jako Eco lub Pro
  12. $to = $_POST['to'];
  13. $message = urlencode("Wychowawca serdecznie zaprasza na zebranie, ktore odbedzie sie w najblizszy piatek o godzinie 17:00"); //treść wiadomości
  14. $url = 'https://ssl.smsapi.pl/sms.do';
  15. $c = curl_init();
  16. curl_setopt($c, CURLOPT_URL, $url);
  17. curl_setopt($c, CURLOPT_POST, true);
  18. curl_setopt($c, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password.'&from='.$from.'&eco='.$eco.'&to='.$to.'&message='.$message);
  19. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  20. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  21. if($content = curl_exec($c) === false)
  22. {
  23. echo 'Curl error: ' . curl_error($c);
  24. }
  25. else
  26. {
  27. echo '<br />Wszystko OK. Wiadomość została wysłana';
  28. }
  29. curl_close ($c);
  30. echo $content;
  31. echo "<br />";
  32. }
  33. ?>


jeszcze jedna sprawa...

Otóz postanowiłem utrudnić sobie życie i poprzesyłać nieco danych z SQL.

W jaki sposób mogę przesłać checkboxy będąc w tej sytuacji?
Wstawiam kompletny kod: formularz + odbiór i wysyłka SMS:

  1. <center><form method="post" action="">
  2.  
  3. <label for="to"><strong>ADRESAT:</strong><br />
  4. <?php
  5.  
  6. $sql="SELECT * FROM uczen";
  7. $r=mysql_query($sql);
  8. $myHTML="";
  9. while($x=mysql_fetch_assoc($r)) {
  10. $myHTML.="<input type=\"checkbox\" name=\"to[]\" id=\"to\" value=\"{$x['telefon']}\" />{$x['telefon']} <br />";
  11. }
  12.  
  13. $myHTML.="<br />";
  14. print $myHTML;
  15.  
  16. ?></label><br />
  17. <input type="hidden" name="send" value="1" /> <button>Wyślij</button>
  18. </form></center>
  19.  
  20.  
  21. <?php
  22. if (isset($_POST['send'])) {
  23.  
  24. $username = 'nazwauzytkownika';
  25. $password = 'haslo';
  26. $from = 'Informacja';
  27. $eco = 0;
  28. $to = $_POST['to'];
  29. $message = urlencode("Wychowawca serdecznie zaprasza na zebranie, ktore odbedzie sie w najblizszy piatek o godzinie 17:00"); //treść wiadomości
  30. $url = 'https://ssl.smsapi.pl/sms.do';
  31. $c = curl_init();
  32. curl_setopt($c, CURLOPT_URL, $url);
  33. curl_setopt($c, CURLOPT_POST, true);
  34. curl_setopt($c, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password.'&from='.$from.'&eco='.$eco.'&to='.$to.'&message='.$message);
  35. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  36. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  37. if($content = curl_exec($c) === false)
  38. {
  39. echo 'Curl error: ' . curl_error($c);
  40. }
  41. else
  42. {
  43. echo '<br /><center>Wszystko OK. Wiadomość została wysłana</center>';
  44. }
  45. curl_close ($c);
  46. echo $content;
  47. echo "<br />";
  48.  
  49. }
  50.  
  51. ?>


Mogę zaznaczyć kilka numerów telefonu ale nie lecą wiadomości. SELECTA w PHP z obsługą SQL wiem jak napisać ale właśnie to zmieniłem bo chciałbym jednocześnie wysyłać powiadomienia do np. kilku osób a nie do jednej, wybieranej z listy rozwijanej :-)

Ok. Rozwiązałem problem:
Prawidłowy kod zamieszczam poniżej- gdyby ktoś szukał rozwiązania do SMSAPI:

  1. <center><form method="post" action="">
  2.  
  3. <label for="to"><strong>ADRESAT:</strong><br />
  4. <?php
  5.  
  6. $sql="SELECT * FROM uczen";
  7. $r=mysql_query($sql);
  8. $myHTML="";
  9. while($x=mysql_fetch_assoc($r)) {
  10. $myHTML.="<input type=\"checkbox\" name=\"to[]\" id=\"to\" value=\"{$x['telefon']}\" />{$x['telefon']} <br />";
  11. }
  12.  
  13. $myHTML.="<br />";
  14. print $myHTML;
  15.  
  16. ?></label><br />
  17. <input type="hidden" name="send" value="1" /> <button>Wyślij</button>
  18. </form></center>
  19.  
  20.  
  21. <?php
  22. if (isset($_POST['send'])) {
  23.  
  24. $username = 'nazwauzytkownika';
  25. $password = 'haslo';
  26. $from = 'Informacja';
  27. $eco = 0;
  28. $telefony = $_POST['to'];
  29. foreach($telefony as $to) {
  30. $message = urlencode("Wychowawca serdecznie zaprasza na zebranie, ktore odbedzie sie w najblizszy piatek o godzinie 17:00"); //treść wiadomości
  31. $url = 'https://ssl.smsapi.pl/sms.do';
  32. $c = curl_init();
  33. curl_setopt($c, CURLOPT_URL, $url);
  34. curl_setopt($c, CURLOPT_POST, true);
  35. curl_setopt($c, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password.'&from='.$from.'&eco='.$eco.'&to='.$to.'&message='.$message);
  36. curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  37. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  38. if($content = curl_exec($c) === false)
  39. {
  40. echo 'Curl error: ' . curl_error($c);
  41. }
  42. else
  43. {
  44. echo '<br /><center>Wszystko OK. Wiadomość została wysłana</center>';
  45. }
  46. curl_close ($c);
  47. echo $content;
  48. echo "<br />";
  49. }
  50. }
  51.  
  52. ?>
_Borys_
Nie potrzeba pętli, można jednorazowo do wszystkich numerów, w dokumentacji pięknie opisane jest pt. Wysyłanie masowe SMS-ów
http://www.smsapi.pl/media/page/docs/SMSAPI_http.pdf
PiotrGP
Cytat(_Borys_ @ 5.04.2013, 11:35:49 ) *
Nie potrzeba pętli, można jednorazowo do wszystkich numerów, w dokumentacji pięknie opisane jest pt. Wysyłanie masowe SMS-ów
http://www.smsapi.pl/media/page/docs/SMSAPI_http.pdf

Tak. Patrzyłem to ale rzowiązałem to inaczej. Teraz jest OK :-)
Dziękuję za zainteresowanie i olecam www.SMSAPI.pl. Jest tam kilkanaście wiadomości do wypróbowania na start. :-)
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-2024 Invision Power Services, Inc.