gpt4 book ai didi

php - curl 替代要求文件而不是 allow_url_fopen?

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:35 25 4
gpt4 key购买 nike

我有一个 php 脚本,我试图从一个站点的数据库中提取一些数据并将其显示在另一个站点上。我需要引用一些文件,但是使用 require filename.php 会抛出错误,因为出于安全原因我的 allow_url_fopen 被设置为关闭。是否有替代方法使用 cURL 来“要求”文件?

旧示例:

<?php require ('http://site.com/filename.php'); ?>

我试过了,但是没用:

<?php
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://site.com/filename.php');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);

// display file
require $file_contents;
?>

最佳答案

女士。拉姆齐,

在 2011 年,针对您的问题最广泛接受的解决方案是使用所谓的 RESTful 架构,几年前 Yahoo 首次广泛倡导这种架构。正如您很快就会看到的那样,它真的很简单,一点也不复杂。

首先,在“服务器”端(您接收信息的地方)创建一个简单的 RESTful 服务器,这是我能想到的最简单的服务器(在此处现场编码):

// RESTful service
$action = 'action_' . filter_input(INPUT_GET, 'action', FILTER_SANITIZE_STRING);
$params = filter_input(INPUT_GET, 'params', FILTER_SANITIZE_STRING);

if (function_exists($action))
{
// Run the action w/ the parameters
$data = call_user_func_array($action, json_decode($params));

// Encode the data in a HTTP friendly way...
$output = json_encode($data);

echo $output;
}
else
{
trigger_error('Invalid action: ' . htmlspecialchars($action), E_USER_ERROR);
}


function action_foo($param1)
{
return "Param 1: $param1";
}

现在,在您的客户端,您所要做的就是:

$ch = curl_init();
$params = json_encode(array('param1' => 'value', 'param2' => 'value'));
curl_setopt ($ch, CURLOPT_URL, 'http://site.com/restServer.php?action=foo&params=' . $params);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

$data = json_decode($output);

它实际上工作得很好。

我希望你选择我的答案!

关于php - curl 替代要求文件而不是 allow_url_fopen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com