首页 > 解决方案 > 为什么我收到空字符串 PHP curl OpenCart

问题描述

我正在尝试通过 curl 从不同的来源访问一个功能,我放置在我的 OpenCart 网站中,该网站假设将当前产品存储在数据库中。

通常,每当有人试图访问 admin opencart 中的任何页面时,它都会被重定向到登录页面,这也发生在我的 curl 请求中。我通过 postfields 发送用户名和密码,以便像手动登录一样访问登录页面,因此我可以被重定向到我的函数。

我的功能是:

public function get_settings(){

        $this->load->model('catalog/product');
        $this->load->model('tool/image');
        $return = $this->model_catalog_product->getProducts();
        $array = array();
        foreach($return as $ret){
            $array[] = array(
                'product_id' => $ret['product_id'],
                'product_image' => ($ret['image']) ? $this->model_tool_image->resize($ret['image'], 40, 40) : $image = $this->model_tool_image->resize('no_image.png', 40, 40),
                'product_name' => $ret['name'],
                'product_model' => $ret['model'],
                'product_quantity' => $ret['quantity'],
                'product_price' => $this->currency->format(number_format($ret['price'], 2, '.', ''), $this->config->get('config_currency')),
                'product_status' => ($ret['status'] == 1) ? 'Enabled' : 'Disabled'
            );
        }
        echo json_encode($array);
    }

虽然我的 curl 请求是:

$params = array(
            'username' => $this->session->userdata('admin_user'),
            'password' => $this->session->userdata('admin_pass'),
            'redirect' => $this->session->userdata('domain').'admin/index.php?route=catalog/product/get_settings'
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->session->userdata('domain').'admin/index.php?route=common/login');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $return = curl_exec($ch);
        curl_close($ch);

        var_dump($return);

我没有收到任何错误消息。我签入了日志文件。我只得到一个空字符串。OpenCart 在登录时验证是否存在我发送的任何重定向帖子值,以便将我转发到该特定页面,这是返回我的 JSON 的函数

标签: phpcurl

解决方案


推荐阅读