За последние 24 часа нас посетили 17597 программистов и 1310 роботов. Сейчас ищут 877 программистов ...

Помогите прикрутить к обычной форме API SMS

Тема в разделе "Работа с почтой", создана пользователем gydzibit, 5 дек 2014.

  1. gydzibit

    gydzibit Новичок

    С нами с:
    5 дек 2014
    Сообщения:
    4
    Симпатии:
    0
    Хочу к обычной форме подключить Апи или смс шлюз. Пользуюсь сервисом флай смс и у них есть пример кода, который нужно подстроить под себя и вставить.
    Вот скрипт элементарной странички с формой:
    Код (Text):
    1. <?php
    2.    function ValidateEmail($email)
    3.    {
    4.       $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
    5.       return preg_match($pattern, $email);
    6.    }
    7.  
    8.    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    9.    {
    10.       $mailto = 'blabla@mail.ru';
    11.       $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    12.       $subject = 'Contact Information';
    13.       $message = 'Values submitted from web site form:';
    14.       $success_url = './success.html';
    15.       $error_url = './error.html';
    16.       $error = '';
    17.       $eol = "\r\n";
    18.       $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
    19.       $boundary = md5(uniqid(time()));
    20.  
    21.       $header  = 'From: '.$mailfrom.$eol;
    22.       $header .= 'Reply-To: '.$mailfrom.$eol;
    23.       $header .= 'MIME-Version: 1.0'.$eol;
    24.       $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
    25.       $header .= 'X-Mailer: PHP v'.phpversion().$eol;
    26.       if (!ValidateEmail($mailfrom))
    27.       {
    28.          $error .= "The specified email address is invalid!\n<br>";
    29.       }
    30.  
    31.       if (!empty($error))
    32.       {
    33.          $errorcode = file_get_contents($error_url);
    34.          $replace = "##error##";
    35.          $errorcode = str_replace($replace, $error, $errorcode);
    36.          echo $errorcode;
    37.          exit;
    38.       }
    39.  
    40.       $internalfields = array ("submit", "reset", "send", "captcha_code");
    41.       $message .= $eol;
    42.       $message .= "IP Address : ";
    43.       $message .= $_SERVER['REMOTE_ADDR'];
    44.       $message .= $eol;
    45.       foreach ($_POST as $key => $value)
    46.       {
    47.          if (!in_array(strtolower($key), $internalfields))
    48.          {
    49.             if (!is_array($value))
    50.             {
    51.                $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
    52.             }
    53.             else
    54.             {
    55.                $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
    56.             }
    57.          }
    58.       }
    59.  
    60.       $body  = 'This is a multi-part message in MIME format.'.$eol.$eol;
    61.       $body .= '--'.$boundary.$eol;
    62.       $body .= 'Content-Type: text/plain; charset=ISO-8859-1'.$eol;
    63.       $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
    64.       $body .= $eol.stripslashes($message).$eol;
    65.       if (!empty($_FILES))
    66.       {
    67.           foreach ($_FILES as $key => $value)
    68.           {
    69.              if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
    70.              {
    71.                 $body .= '--'.$boundary.$eol;
    72.                 $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
    73.                 $body .= 'Content-Transfer-Encoding: base64'.$eol;
    74.                 $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
    75.                 $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
    76.              }
    77.          }
    78.       }
    79.       $body .= '--'.$boundary.'--'.$eol;
    80.       if ($mailto != '')
    81.       {
    82.          mail($mailto, $subject, $body, $header);
    83.       }
    84.       header('Location: '.$success_url);
    85.       exit;
    86.    }
    87. ?>
    88. <!doctype html>
    89. <html>
    90. <head>
    91. <meta charset="UTF-8">
    92. <title>Безымянная страница</title>
    93. <meta name="generator" content="WYSIWYG Web Builder 9 - http://www.wysiwygwebbuilder.com">
    94. <style type="text/css">
    95. body
    96. {
    97.    font-size: 8px;
    98.    line-height: 1.1875;
    99.    margin: 0;
    100.    padding: 0;
    101.    background-color: #FFFFFF;
    102.    color: #000000;
    103. }
    104. </style>
    105. <style type="text/css">
    106. a
    107. {
    108.    color: #0000FF;
    109.    text-decoration: underline;
    110. }
    111. a:visited
    112. {
    113.    color: #800080;
    114. }
    115. a:active
    116. {
    117.    color: #FF0000;
    118. }
    119. a:hover
    120. {
    121.    color: #0000FF;
    122.    text-decoration: underline;
    123. }
    124. </style>
    125. <style type="text/css">
    126. #wb_Form1
    127. {
    128.    background-color: #FAFAFA;
    129.    border: 0px #000000 solid;
    130. }
    131. #wb_Text1
    132. {
    133.    background-color: transparent;
    134.    border: 0px #000000 solid;
    135.    padding: 0;
    136.    text-align: left;
    137. }
    138. #wb_Text1 div
    139. {
    140.    text-align: left;
    141. }
    142. #Editbox1
    143. {
    144.    border: 1px #A9A9A9 solid;
    145.    background-color: #FFFFFF;
    146.    color :#000000;
    147.    font-family: Arial;
    148.    font-size: 13px;
    149.    text-align: left;
    150.    vertical-align: middle;
    151. }
    152. #wb_Text2
    153. {
    154.    background-color: transparent;
    155.    border: 0px #000000 solid;
    156.    padding: 0;
    157.    text-align: left;
    158. }
    159. #wb_Text2 div
    160. {
    161.    text-align: left;
    162. }
    163. #Editbox2
    164. {
    165.    border: 1px #A9A9A9 solid;
    166.    background-color: #FFFFFF;
    167.    color :#000000;
    168.    font-family: Arial;
    169.    font-size: 13px;
    170.    text-align: left;
    171.    vertical-align: middle;
    172. }
    173. #Button1
    174. {
    175.    border: 1px #A9A9A9 solid;
    176.    background-color: #F0F0F0;
    177.    color: #000000;
    178.    font-family: Arial;
    179.    font-size: 13px;
    180. }
    181. </style>
    182. </head>
    183. <body>
    184. <div id="wb_Form1" style="position:absolute;left:0px;top:0px;width:283px;height:120px;z-index:5;">
    185. <form name="contact" method="post" action="<?php echo basename(__FILE__); ?>" enctype="multipart/form-data" id="Form1">
    186. <div id="wb_Text1" style="position:absolute;left:10px;top:15px;width:43px;height:16px;z-index:0;text-align:left;">
    187. <span style="color:#000000;font-family:Arial;font-size:13px;">Name:</span></div>
    188. <input type="text" id="Editbox1" style="position:absolute;left:63px;top:15px;width:198px;height:23px;line-height:23px;z-index:1;" name="name" value="">
    189. <div id="wb_Text2" style="position:absolute;left:10px;top:45px;width:43px;height:16px;z-index:2;text-align:left;">
    190. <span style="color:#000000;font-family:Arial;font-size:13px;">Tel.</span></div>
    191. <input type="text" id="Editbox2" style="position:absolute;left:63px;top:45px;width:198px;height:23px;line-height:23px;z-index:3;" name="Telefon" value="">
    192. <input type="submit" id="Button1" name="" value="Send" style="position:absolute;left:63px;top:75px;width:96px;height:25px;z-index:4;">
    193. </form>
    194. </div>
    195. </body>
    196. </html>
    И вот пример, который дает сервис :
    Код (Text):
    1.  <?php
    2. // iconv используется для корректного перекодирования кириллических сообщений в UTF-8
    3. // для тех, кто изначально работает с UTF-8 ¬преобразование делать не нужно.
    4.  
    5. $text = iconv('windows-1251', 'utf-8', htmlspecialchars('Заметьте, что когда герой фильма подписывает договор с Сатаной, он не подписывает копию договора и не получает ее.'));
    6. $description = iconv('windows-1251', 'utf-8', htmlspecialchars('Моя первая рассылка'));
    7. $start_time = “AUTO”; //отправить немедленно
    8. $end_time = “AUTO”; // автоматически рассчитать системой
    9. $rate = 1; // скорость отправки сообщений (1 = 1 смс минута). Одиночные СМС сообщения отправляются всегда с максимальной скоростью.
    10. $lifetime = 4; // срок жизни сообщения 4 часа
    11. $source = 'SMS'; // Alfaname
    12. $recipient = '380501234567';
    13. $user = 'user';
    14. $password = 'password';
    15.  
    16. $myXML   = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
    17. $myXML  .= "<request>";
    18. $myXML  .= "<operation>SENDSMS</operation>";
    19. $myXML  .= '        <message start_time="'.$start_time.'" end_time="'.$end_time.'" lifetime="'.$lifetime.'" rate="'.$rate.'" desc="'.$description.'" source="'.$source.'">'."\n";
    20. $myXML  .= "        <body>".$text."</body>";
    21. $myXML  .= "        <recipient>".$recipient."</recipient>";
    22. $myXML  .=  "</message>";
    23. $myXML  .= "</request>";
    24.  
    25. $ch = curl_init();
    26. curl_setopt($ch, CURLOPT_USERPWD , $user.':'.$password);
    27. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    28. curl_setopt($ch, CURLOPT_POST, 1);
    29. curl_setopt($ch, CURLOPT_URL, 'http://sms-fly.com/api/api.php');
    30. curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "Accept: text/xml"));
    31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    32. curl_setopt($ch, CURLOPT_POSTFIELDS, $myXML);
    33. $response = curl_exec($ch);
    34. curl_close($ch);
    35.  
    36. // вывод результата в браузер для удобства чтения обрамлен в textarea
    37. echo '<textarea spellcheck="false" name="111" rows="25" cols="150">';
    38. echo $response;
    39. echo '</textarea>';;
    40. ?>
    Ну я краем ухом слышал о программировании и поменял пример подстроив его под себя и свой аккаунт в сервисе. Но как бы я не возился с ним, как бы я не подставлял этот чёртов код
    , у меня все равно ничего не работает. И хотелось бы кончено в текст sms заключить переменную имени, а в телефон получателя - тот телефон, который он указал. Помогите пожалуйста с данной проблемой. Буду ооочень благодарен.
     
  2. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Так что конкретно не получается?

    В этом разделе помогают тем кто хочет научиться.
    Есть раздел "сделайте за меня" там помогают даже если ты ничего не хочешь делать.
    Ещё раздел free-lance за деньги.
     
  3. gydzibit

    gydzibit Новичок

    С нами с:
    5 дек 2014
    Сообщения:
    4
    Симпатии:
    0
    Так я хочу научиться! Я так понимаю, что при нажатии кнопки выполняется функция. И что нужно создать отдельную функцию и прикрутить её к кнопке. Как это сделать я не пойму. Я вставлял код в уже сущетсвующию функцию ValidateEmail , но ничего не получается. Как не старался . Помогите пожалуйста. Заранее спасибо
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    так значит ни "сделай за меня", ни "фрилайнс" а "я хочу научиться". значит это в новички и давайте показывайте чем богаты, как "должно" работать, как работает и почему именно не работает.
     
  5. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Помогаю: все ответы в книге по php для новичков
     
  6. gydzibit

    gydzibit Новичок

    С нами с:
    5 дек 2014
    Сообщения:
    4
    Симпатии:
    0
    Вы все такие странные. А смысл тогда с вашего форума и множества разделов, если всё чем могут помочь - это "читай учебник по php". Спасибо ребята ОГРОМНОЕ!!!! Выручили! Низкий вам поклон
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Мы советуем почитать учебник только тем кто его не читал, ты думаешь как мы всё узнали? Прочитали тысячи страниц теории.
    Вот ты когда прочитаешь хотя бы книгу "php для новичков" на страниц 100-300 и если уже не смог решить свою задачу, то задавай вопрос.

    Вот тебе ответ: при формировании строки которая будет отправлена в виде смс можно с помощью конкатенации (переменная $text) вставить из формы имя и телефон плюс сообщение как ты и хотел. Данные из формы находятся в глобальном массиве $_POST где ключ массива будет имя элемента формы, например input. Форму отправляй методом POST.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я вроде пытался помочь((( не на русском написал что ли? какие все агрессивные стали...