Как правильно вставить переменные в URL для POST-запроса в PHP?

Приведенный в самом низу код выполняется после заполнения формы. Для отправки СМС-уведомления о заявке должен выполняться HTML-запрос, где text='Имя Номертелефона'. PHONENUMBER, EMAIL, PASSWORD, REKLAMA - эти постоянные прописываются мной. Интересует только &text=$name%20$tel

Пробовал &text='.$name.'%20'.$tel.'
Пробовал так:

$url = 'http://gate.smsaero.ru/send/?to=PHONENUMBER&user=EMAIL&text=$name%20$tel&password=PASSWORD&from=REKLAMA';
$url = eval('return "' . addslashes($url) . '";');


И потом подставлял $url в CURL-запрос - выдает ошибку.

При выполнении кода снизу приходит СМС с текстом "$name $tel", только вместо $ какой-то непонятный значок. Должно приходить "Глеб 12313123", например.

Помогите, пожалуйста, решить проблему!

if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['tel'])) {$tel = $_POST['tel'];}

$myCurl = curl_init();
curl_setopt_array($myCurl, array(
    CURLOPT_URL => 'http://gate.smsaero.ru/send/?to=PHONENUMBER&user=EMAIL&text=$name%20$tel&password=PASSWORD&from=REKLAMA',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query(array())
));
$response = curl_exec($myCurl);
curl_close($myCurl);
  • Вопрос задан
  • 9099 просмотров
Решения вопроса 1
@kovalevsky
$url = 'http://gate.smsaero.ru/send/?to=PHONENUMBER&user=EMAIL&text=$name%20$tel&password=PASSWORD&from=REKLAMA';


Используйте " вместо ' для того, чтоб переменная интерпретировалась как переменная, иначе будет как строка.

$url = "http://gate.smsaero.ru/send/?to=PHONENUMBER&user=EMAIL&text=$name%20$tel&password=PASSWORD&from=REKLAMA";


или

$url = 'http://gate.smsaero.ru/send/?to=PHONENUMBER&user=EMAIL&text=' . $name . '...


А ещё советую Вам отказаться от eval, совсем и навсегда
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kovalevsky
Тогда попробуйте так:

curl_setopt_array($myCurl, array(
    CURLOPT_URL => 'http://gate.smsaero.ru/send/?',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query(array(
        'to' => PHONENUMBER,
        'user' => EMAIL,
        'text' => $name . ' ' . $tel,
        'password' => PASSWORD,
        'from' => REKLAMA,
    ))
));
$response = curl_exec($myCurl);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы