Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Где я ошибся в PHP скрипте

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Shaggy_Animal

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста, где я ошибся
 
Скрипт отправляет данные по АПИ на сайт, они туда приходят. Но скрипт выдает ошибку "error" вместо открытия success.html
 

Код:
 
<?php
session_start();
error_reporting(85);
header("Content-Type: text/html; charset=UTF-8");
date_default_timezone_set("Europe/Moscow"); // Часовой пояс: http://php.net/manual/ru/timezones.php
 
$api_key = "my API key";
 
$api_data = array(
    "fio" => trim($_POST['fio']),
    "phone" => trim($_POST['phone']),
    "site_id" => trim($_POST[site_data]),
    "out_order_id" => rand(232145678, 345321567),
    "country" => (trim($_POST['country']) ?: "ru"),
    "ip" => $_SERVER['REMOTE_ADDR'],
    "ua" => $_SERVER['HTTP_USER_AGENT'],
    "referrer" => $_SESSION['referer'],
);
 
function f_curl($url, $post)
{
    $ch = curl_init();
 
    curl_setopt($ch, CURLOPT_URL, $url);
 
    if ($post) {
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
    $rez = curl_exec($ch);
    curl_close($ch);
 
    return $rez;
}
 
if (!preg_match("/^[0-9]{10,11}+$/", $_POST['phone'])) echo("Телефон задан в неверном формате");
 
if (trim($_POST['fio']) && trim($_POST['phone'])) {
    $api_z = json_decode(f_curl("https://site.com/api.php?method=order_add&key=" . $api_key, http_build_query($api_data)), true);
 
    if ($_GET['var_dump'] == "api_z") {
        var_dump($api_z);
        exit;
    }
 
    if ($api_z['success'] == "true") {
        header("Location: success.html");
        exit;
    } else {
         
        echo "error" . (($api_z['text']) ? ": " . $api_z['text'] : "");
    }
} else {
    echo "имя и (или) телефон не заполнены";
}
?>
 

 
 
$rez по echo возвращает следующие:
 
HTTP/1.1 100 Continue HTTP/1.1 200 OK Server: nginx Date: Sat, 17 Nov 2018 08:01:19 GMT Content-Type: text/html Content-Length: 172 Connection: keep-alive Vary: Accept-Encoding X-Powered-By: PHP/5.3.28 {"result":{"success":true,"text":"\u0417\u0430\u043a\u0430\u0437 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c"}}
 
 

Всего записей: 62 | Зарегистр. 07-12-2001 | Отправлено: 12:03 17-11-2018 | Исправлено: Shaggy_Animal, 12:08 17-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shaggy_Animal

Цитата:
curl_setopt($ch, CURLOPT_HEADER, true);  

Убрать

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 12:36 17-11-2018
Shaggy_Animal

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Убрать

 
Спасибо
 
Убрал.  
 
Данные сейчас возвращает без заголовка.  
{"result":{"success":true,"text":"\u0417\u0430\u043a\u0430\u0437 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c"}}
 
Но ошибку также выдает.

Всего записей: 62 | Зарегистр. 07-12-2001 | Отправлено: 13:07 17-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shaggy_Animal

Цитата:
Но ошибку также выдает.

$api_z['result']['success']

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 13:11 17-11-2018
Shaggy_Animal

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
$api_z['result']['success']

 
Так вообще HTTP ERROR 500

Всего записей: 62 | Зарегистр. 07-12-2001 | Отправлено: 13:16 17-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shaggy_Animal

Цитата:
Так вообще HTTP ERROR 500

Что именно и где вы написали?
 
Я вам написал что должно быть вместо $api_z['success']  
Посмотрите свой var_dump

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 13:17 17-11-2018 | Исправлено: Mavrikii, 13:20 17-11-2018
Shaggy_Animal

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что именно и где вы написали?

Сюда добавил
 if ($api_z['success'] == "true")
 
Стало  if ($api_z['result']['success'] == "true")

Всего записей: 62 | Зарегистр. 07-12-2001 | Отправлено: 13:20 17-11-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shaggy_Animal
Значит показывайте результат var_dump
500 ошибку это генерить не должно.
Есть вариант, что true в json_decode распространяется только на первый уровень, тогда
$api_z['result']->success
Это будет видно из дампа

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 13:22 17-11-2018 | Исправлено: Mavrikii, 13:25 17-11-2018
esoul

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$r = '{"result":{"success":true,"text":"\u0417\u0430\u043a\u0430\u0437 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c"}}';
 
$api_z = json_decode($r);
 
var_dump($api_z->result->success);

Всего записей: 2 | Зарегистр. 05-12-2014 | Отправлено: 21:49 08-12-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
esoul
у него json_decode с true вторым аргументом, а значит ассоциативный массив, а не объект

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 13:31 09-12-2018
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Где я ошибся в PHP скрипте


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru