deepfriday
@deepfriday
Junior D

Как правильно написать код PHP?

Я совсем "newbie" в этой сфере, но мне всё это начало нравится, столкнулся с такой проблемой.
Захотел на сайте установить обратный звонок, уведомления на почту приходят - проблем нет. Захотелось смс уведомлений, заказал шлюз, мне выслали настройки и тут я встретился с таким:

Пример использования API на PHP 5.5 это из настроек присланных мне тех.поддержкой

<?php
$message = [
"username" => "123456789",
"password" => md5("password"),
"phone" => "375297357355",
"text" => "Hello, World!"
];
$messageQuery = http_build_query($message); // returns username=123456789&password=1fa...
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://api.rocketsms.by/simple/send');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $messageQuery;
$result = @json_decode(curl_exec($curl));
if ($result && isset($result['id'])) {
return "Message has been sent. MessageID=" . $result['id'];
} elseif ($result && isset($result['error'])) {
return "Error occurred while sending message. ErrorID=" . $result['error'];
} else {
return "Service error";
}
?>


Но мой хостинг на PHP 5.2 влияет ли как структура написания кода?
Ошибку ловлю синтаксическую на 2 строке связанную с '['
Пытался всё это дело вертеть-крутить:
$message = [
"username" => "123456789",
"password" => md5("password"),
"phone" => "375297357355",
"text" => "Hello, World!"
];
- все эти строки приняли вот такой вид:
<?php
$message['username']  = 'user';
?>

И ошибки синтаксической, которая была на 2ой строке - нет.
Но задеваю следующее:
$curl = curl_init();

Тоже выдаёт ошибку, только уже другую.
Может посоветуете, что почитать или где что поправить в моей голове, буду весьма благодарен.
  • Вопрос задан
  • 790 просмотров
Решения вопроса 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Но мой хостинг на PHP 5.2

через пару дней даже для php 5.4 прекратится выпус обновлений безопаности. Бегите от этого хостера.

В целом ваша проблема в том, что пример использует сокращенный синтаксис массивов. Воспользуйтесь обычной:

$message = array(
    'username' => '123123',
    // ...
);
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Это короткая запись инициализации массива [ ], попробуйте вместо неё написать array( ) :
$message = array(
"username" => "123456789",
"password" => md5("password"),
"phone" => "375297357355",
"text" => "Hello, World!"
);
Ответ написан
deepfriday
@deepfriday Автор вопроса
Junior D
Проблема решена, спасибо огромное Павел Волынцев
Код выглядит так:

<?php
error_reporting(E_ALL);

$message = array(
    "username" => "xxxxx",
    "password" => md5("xxxx"),
    "phone" => "xxxxx",
    "text" => "Hello, World!"
);

$messageQuery = http_build_query($message);

echo "init curl\n";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://api.rocketsms.by/simple/send');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $messageQuery);
echo "exec curl\n";
$json = curl_exec($curl);
$result = @json_decode($json, true);
if ($result && isset($result['id'])) {
    echo "Message has been sent. MessageID=" . $result['id'];
} elseif ($result && isset($result['error'])) {
    echo "Error occurred while sending message. ErrorID=" . $result['error'];
} else {
    echo "Service error";
    var_dump($json);
}
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Dr_Bro
$curl = curl_init();
libcurl, библиотека, которая даёт возможность соединяться с серверами различных типов и по разным протоколам.
У хостера просто не подключена она, вот и ошибка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы