我有一个问题,张贴到一个URL使用cURL



我正在做一个小项目,遇到了一个障碍。我试图发布信息到一个URL使用cURL特别是curl_init。当我将完整的URL放入代码中时,我可以使代码正常工作,但当我试图更改URL的某个方面时,问题就发生了。例如

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://test.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pdata);

上面的代码工作得很好,但是如果我在下面做类似的事情,代码会出错。

$mode = "one";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://' . $mode . '.test.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pdata);

是我做了什么特别错误的,还是这种类型的URL操作不被函数接受?

这是一个简单的字符串引号错误,实际上与cURL或URL无关-尽管在这种情况下它会导致您形成错误的URL。这是代码生成的URL -

https://' . one . '.test.com

演示:http://sandbox.onlinephpfunctions.com/code/e2a878e59681f9c731140d5005043eb7bb2ab91a

而很明显你想要的是

https://one.test.com

你可以用两种方式来解决这个问题——一种是正确地使用字符串连接(通过以"而不是'结束第一个字符串,并以类似的方式开始第二个字符串),另一种是使用PHP的插值功能,简单地将变量放在单个字符串中。

方法1:

$mode = "one";
curl_setopt($ch, CURLOPT_URL, "https://".$mode.".test.com");

方法2:

$mode = "one";
curl_setopt($ch, CURLOPT_URL, "https://$mode.test.com");

你会有同样的问题与任何字符串-你不能用"开始一个字符串,然后用'完成它,并期望它产生有效的输出。分隔符两端必须相同。

在这个特殊的情况下,你实际上只是结束了一个长字符串,所以你没有语法错误,但它会导致字符串不包含你期望的内容,导致cURL请求失败,因为URL是错误的。

我认为这是因为你以单和双结尾试试:"https://"。美元的模式。".test.com">

相关内容

  • 没有找到相关文章

最新更新