1
0

send3.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/sms.php';
  3. /**
  4. * Отправка SMS-сообщения на указанный номер.
  5. *
  6. * @param string $phone Номер телефона получателя (в любом формате).
  7. * @param string $text Текст сообщения.
  8. * @return array|int Возвращает массив со статусом отправки или 0 в случае ошибки.
  9. */
  10. function send_sms($phone, $text) {
  11. // Очищаем номер телефона от всех символов, кроме цифр
  12. $phone = preg_replace('~\D+~', '', $phone);
  13. if (!preg_match('/^[0-9]{10,13}$/', $phone)) {
  14. return 0;
  15. }
  16. $len = strlen($phone);
  17. // Преобразуем к международному формату
  18. if ($len === 10) {
  19. $phone = '7' . $phone;
  20. } elseif ($len === 11 && preg_match('/^89/', $phone)) {
  21. $phone = preg_replace('/^8/', '7', $phone);
  22. } elseif ($len < 10 || $len > 13) {
  23. return 0;
  24. }
  25. return Sms::send($phone, $text);
  26. }
  27. /**
  28. * Получает параметр из POST или GET (с приоритетом POST).
  29. *
  30. * @param string $key Название параметра.
  31. * @return string|null
  32. */
  33. function get_request_param($key) {
  34. return filter_input(INPUT_POST, $key) ?? filter_input(INPUT_GET, $key);
  35. }
  36. // Получаем параметры запроса
  37. $phone = get_request_param('to');
  38. $sms_text = get_request_param('text');
  39. // Если оба параметра присутствуют
  40. if (!empty($phone) && !empty($sms_text)) {
  41. $result = send_sms($phone, $sms_text);
  42. if (!empty($result) && is_array($result)) {
  43. foreach ($result as $recipient => $statusJson) {
  44. $status = json_decode($statusJson, true, 512, JSON_OBJECT_AS_ARRAY);
  45. if (isset($status["data"]["id"], $status["data"]["status"])) {
  46. echo htmlspecialchars($recipient) . ':' .
  47. htmlspecialchars($status["data"]["id"]) . ':' .
  48. htmlspecialchars($status["data"]["status"]) . '<br>';
  49. }
  50. }
  51. }
  52. }
  53. // Очистка переменных (необязательно, но на всякий случай)
  54. unset($_GET, $_POST);
  55. ?>