Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用用户'访问xml;甜点_Php_Xml_Cookies_Curl - Fatal编程技术网

Php 使用用户'访问xml;甜点

Php 使用用户'访问xml;甜点,php,xml,cookies,curl,Php,Xml,Cookies,Curl,一个游戏相关的项目 要访问游戏数据,用户必须“授权”访问。为此,他们访问网站上的一个页面,在用户的PC上设置3个cookie 当用户查看某些XML URL时,游戏服务器会检查这些cookie是否正确,并返回所需的信息 我的问题是,如何使用用户的cookie解析这些XML文件,向数据添加样式等 如果我使用cURL加载URL,并使用CURLOPT_COOKIE预先确定相关COOKIE,它将正确返回信息 但是,我不知道用户的cookies,因为它们只对游戏的域有效 我确信这是可能的,尽管可能不是通过这

一个游戏相关的项目

要访问游戏数据,用户必须“授权”访问。为此,他们访问网站上的一个页面,在用户的PC上设置3个cookie

当用户查看某些XML URL时,游戏服务器会检查这些cookie是否正确,并返回所需的信息

我的问题是,如何使用用户的cookie解析这些XML文件,向数据添加样式等

如果我使用cURL加载URL,并使用
CURLOPT_COOKIE
预先确定相关COOKIE,它将正确返回信息

但是,我不知道用户的cookies,因为它们只对游戏的域有效

我确信这是可能的,尽管可能不是通过这种方法,因为在使用相同的数据之前已经这样做了

cookies集包括:

toolbar_code = 19 digit auth code
toolbar_hash = 19 digit hashed username
toolbar_remember = true

您无法跨域读取XML(无论如何,如果没有,这还不够成熟)

让远程脚本检查cookie并将数据返回给调用方站点的最简单方法是将
指向远程站点,并在其中执行JavaScript,从而提供调用方数据。通常的做法是

客户端:

<script type="text/javascript">
    function receiveData() {
        ...do something...
    }
</script>
<script type="text/javascript" src="http://gamedataserver/getdata.php?jsonp=receiveData"></script>

函数receiveData(){
…做点什么。。。
}
服务器端:

<?php
    header('Content-Type: text/javascript');
    header('Cache-Control: no-cache');
    if (...user auth is OK...) {
        $callbackfn= preg_replace('/[^a-z_]/', '', $_GET['jsonp']);
        $json= json_encode(...game data...);
        echo "$callbackfn($json);";
    }
?>


其中有一些有趣的地方,但我无法控制游戏的网站,因此肯定无法在那里执行js。谢谢你的建议。另外,“您不能跨域读取XML”-当我在远程XML文件上使用cURL并提供有效的cookies时,返回了XML?是的,这是简单的客户端-服务器,而不是跨域。跨域是指一个站点指示用户向第三方发出请求。对XML文件的跨域访问是不可能的(如果目标服务器没有明确的方法来更改它,比如CORS和JSONP包装);否则,这将是一个巨大的安全漏洞。如果游戏网站没有给你一个第三方脚本接口来获取数据,那是因为他们不希望第三方网站读取他们的数据。好吧,因为甚至有一个ToS详细说明如何使用/存储数据等,我想他们会这样做,只是通过一个混乱的系统。无论如何,谢谢你的帮助。