Страница 1 из 1

Поправить php для отправки СМС

СообщениеДобавлено: 23 мар 2018, 08:12
awsswa
В общем. Попросили. Сделал.
Но руки из жопы и я не сдаюсь
Веб морда для отправки СМС через dongle индивидуально под каждого с выбором через какой отправлять
Проблема... Отправляет вместо русского языка всякую фигню
cat index.html
Код: выделить все
<!DOCTYPE html>
<!--[if IE 8]>    <html lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8" />
</head>
<h2>Анкета</h2>
<!-- <form action="input.php" method="POST" accept-charset="utf-8"> -->

<form enctype="multipart/form-data" method="post" action="input.php">

<p>Номер телефона начиная с 7:<br>
<input type="text" name="telnumber" /></p>
<p>Текст сообщения:<br>
<input type="text" name="firsttext" /></p>
<p>Выбор модема: <br>
<input type="radio" name="eduform" value="GSM001" />Первый <br>
<input type="radio" name="eduform" value="GSM002" />Второй </p>
<input type="radio" name="eduform" value="GSM003" />Третий </p>
<input type="submit" value="Отправить СМС">
</form>


Вторая часть
cat input.php
Код: выделить все
<!DOCTYPE html>
<!--[if IE 8]>    <html lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8" />
</head>
<body style="background:#fff;">

<?php
header("Content-Type: text/html; charset=utf-8");
    $ftext = htmlentities($_POST['firsttext']);
    $eduform = htmlentities($_POST['eduform']);
    $telnumber = htmlentities($_POST['telnumber']);

if (empty($telnumber)):
        echo '<p>Внимание - вы не ввели номер телефона.</p>';
        exit();
else:
endif;
if (empty($eduform)):
        echo '<p>Внимание - вы не выбрали модем.</p>';
        exit();
else:
endif;
if (empty($ftext)):
        echo '<p>Внимание - Вы не ввели сообщение.</p>';
        exit();
else:
endif;
    $output ="
    <html>
    <head>
    <title>Данные отправки</title>
    </head>
    <body>
    Сообщение: $ftext<br />
    Модем: $eduform<br />
    Телефон: $telnumber<br />
    <ul>";
    $output.="</ul></body></html>";
    echo $output;

$command="/usr/sbin/asterisk -rx ";
$output = shell_exec("$command \"dongle sms $eduform +$telnumber $ftext \" ");
echo(nl2br($output));
sleep (3);

echo "<h2>Успешное. Спасибо!</h2>";

?>

В общем как то так

Re: Поправить php для отправки СМС

СообщениеДобавлено: 17 апр 2018, 13:36
shader
ну ответ очевиден - кодировка! :)

Вам нужно указать кодировку для переменной $ftext.

У меня похожая беда была, когда я получал из диалплана (AGI, perl) имя звонящего, которое было на русском языке. AGI при этом также выводил какой-то бред))

помогла вот такая комбинация:
Код: выделить все
$callername = encode( 'iso-8859-1', $callername );
$callername = decode( 'utf-8', $callername );

Скорее всего Вам нужно проделать что-то схожее, но на PHP. В какую кодировку преобразовывать - хз.
Онлайн-декодер Вам в помошь.

ADD:
скорее всего, перед отправкой нужно конвертировать из utf8 --> iso-8859-1 (но это теория, нужно проверять)

Re: Поправить php для отправки СМС

СообщениеДобавлено: 17 апр 2018, 22:19
awsswa
там есть закоментированные строки
посылать в форму в формате
<!-- <form action="input.php" method="POST" accept-charset="utf-8"> -->

до формы доходил лажа
конвертацию в форме я тоже делал - тремя разными способами

в общем - нужно тупо поправить и показать где я промахнулся
советы мне гугл давать три дня подряд

Re: Поправить php для отправки СМС

СообщениеДобавлено: 18 апр 2018, 09:43
virus_net
Код: выделить все
$output = shell_exec(sprintf('%s "dongle sms %s +%s %s"',$command,$eduform,$telnumber,conv_to_iso($ftext)));

function conv_to_iso( $text ){
    $ret=$text;
    if(function_exists('iconv') && $text){
        $ret = iconv('UTF-8','iso-8859-1',$text);
    }
return $ret;
}