尝试将$ var添加到Curl URL中的URL

时间:2017-04-19 10:57:08

标签: php session curl

所以我查看了堆栈溢出和google并且无法找到我需要的一个很好的例子。

我在Curl中有一个URL,我有一个需要添加到URL的会话变量(打印成字符串)。

问题

我该怎么做?

这是我的代码

 <?php
session_start();

echo $_SESSION['userID'];
$userId = $_SESSION['userID'];

$service_url  = 'http://localhost/app/api/user/$userId.xml';

我试过

$service_url  = 'http://localhost/app/api/user/echo $userId.xml';

$service_url  = 'http://localhost/app/api/user/<?php echo $userId ?>.xml';

更新

确定完整代码,如果我将网址更改为

$service_url = 'http://localhost/app/api/user/1.xml';

一切正常,但我需要代码是动态的,具体取决于会话var

目前会话var $_SESSION['userID'];为1

所以当前代码的工作方式与URL

的方式相同
 `$service_url  = 'http://localhost/app/api/user/1.xml';`

但不是

<?php
session_start();

echo $_SESSION['userID'];
$userId = $_SESSION['userID'];

$service_url = "http://localhost/app/api/user/{$userId}.xml";
$session_cookie = file_get_contents( 'session_cookie.txt' );

// set up the request
$curl = curl_init( $service_url );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );  // have curl_exec return a string

curl_setopt( $curl, CURLOPT_COOKIE, "$session_cookie" ); // use the previously saved session

// make the request
curl_setopt( $curl, CURLOPT_VERBOSE, true ); // output to command line
$response = curl_exec( $curl );
curl_close( $curl );
print "RESPONSE:\n";
var_dump( $response );

$xml=simplexml_load_file("$service_url") or die("Error: Cannot create object");
echo $xml->name . "<br>";
echo $xml->roles->item  . "<br>";
echo $xml->timezone . "<br>";

相反,我得到错误

  

警告:simplexml_load_file

  

警告:simplexml_load_file():I / O警告:无法加载外部实体&#34; http://localhost/app/api/user/1%3Cbr%3E.xml&quot;在第23行的C:\ wamp64 \ www \ mytest \ testfolder \ authenticated.php

3 个答案:

答案 0 :(得分:0)

尝试

$service_url  = "http://localhost/app/api/user/{$userId}.xml";

答案 1 :(得分:0)

将'更改为'。 让我解释一下原因。

“与”的区别在于“将解析$ phpVariables。

所以$service_url = "http://localhost/app/api/user/$userId.xml";$service_url = "http://localhost/app/api/user/{$userId}.xml";

如果由于某种原因你想保留单引号,你可以这样做:

$service_url  = 'http://localhost/app/api/user/'.$userId.'.xml';

答案 2 :(得分:0)

为什么不CONCAT他们?

$service_url  = 'http://localhost/app/api/user/'.$userId.'.xml';