Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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和Javascripts时会出现什么问题?_Javascript_Php_Drupal_Curl_Drupal 7 - Fatal编程技术网

在我的网站上使用PHP和Javascripts时会出现什么问题?

在我的网站上使用PHP和Javascripts时会出现什么问题?,javascript,php,drupal,curl,drupal-7,Javascript,Php,Drupal,Curl,Drupal 7,>使用Javascript >使用PHP/Curl 我尝试使用两种不同的脚本登录,一种来自JQuery,另一种来自PHP/Curl 当我启动JQuery时,它正在成功地工作。 但是,当我尝试从PHP/Curl自动登录时,它会给我如上所述的成功响应,但是当openurl无法登录时,任何人都可以解释问题所在 根据我的假设,会话名称/sessiond是否可能存储在cookie中 根据我的假设,会话名称/sessiond是否可能存储在cookie中 与许多其他引擎一样,Drupal需要会话cooke,看

>使用Javascript

>使用PHP/Curl

我尝试使用两种不同的脚本登录,一种来自JQuery,另一种来自PHP/Curl

当我启动JQuery时,它正在成功地工作。 但是,当我尝试从PHP/Curl自动登录时,它会给我如上所述的成功响应,但是当openurl无法登录时,任何人都可以解释问题所在

根据我的假设,会话名称/sessiond是否可能存储在cookie中

根据我的假设,会话名称/sessiond是否可能存储在cookie中

与许多其他引擎一样,Drupal需要会话cooke,看起来像SESSa89ab839dd1casdasdec163e12679c2f2ea1e=asdfasdf2323423dsa。使用setcookie()在php中设置此cookie(如session_name=sessiond),并向客户端发送响应

l。我的问题是,当我们使用PHP/CURL的jqueryinstrad时,它会自动向浏览器添加cookie值吗

当Jquery将查询发送到服务器时,浏览器会收到带有Set Cookie头的响应,您可以使用chrome开发工具(或浏览器的类似工具)对此进行检查

当您在服务器端执行PHP代码时,PHP对响应cookie不做任何处理,因为PHP解释器不是浏览器

看看这个虚拟查询方案:

1) Jquery WebBrowser=>Apacher/PHP服务器(login.json代码) Apacher/PHP服务器=>Browser(使用会话cookie进行响应)

2) 在php端登录 Web浏览器=>Apacher/PHP服务器(您的脚本) Apacher/PHP服务器=>Apacher/PHP(调用登录代码) Apacher/PHP服务器=>Apacher/PHP服务器(登录代码对第一个脚本的响应)


这里cookie信息丢失了,因为它只是php代码中的http查询而已。不会自动设置任何标题。您需要使用setkookie()函数或$\u cookie变量手动设置此cookie


Apacher/PHP server=>Web浏览器(在当前脚本中设置所有cookie)


对不起,我的语法错误,希望我帮了你。

当我将用户名和密码传递给user/login.json url时,上面的代码工作正常。我的问题是,当我们使用PHP/CURL的jqueryinstrad时,它会自动向浏览器添加cookie值吗?在我的情况下,上述代码工作良好,并登录我的网站成功。但是,当我使用相同的PHP/CURL请求时,它会给我一个带有Sess ID和值的成功响应,但我认为它不会存储为Cookie,也不会将我登录到站点?任何有帮助的评论都太长了,我不得不改变答案。
var username = "user1";
var password = "user1";
jQuery.ajax({ 
    url : "http://domainname.com/rest/user/login.json",
    type : 'post', 
    data : 'username=' + encodeURIComponent(username) + '&password=' + encodeURIComponent(password), 
    dataType : 'json', 
    error : function(data) { console.log("error"); console.error(data); }, 
    success : function(data) { console.log("success"); console.info(data); } 
});
// Method: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value

function CallAPI($method, $url, $data = false)
{
    $curl = curl_init();

    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);

            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // Optional Authentication:
    //curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    //curl_setopt($curl, CURLOPT_USERPWD, "username:password");

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    return curl_exec($curl);
}

// Example
$method = "POST";
$url = "http://domainname.com/rest/user/login.json";
$rurl = "http://domainname.com/";
$postdata = array('username'=>'editor1', 'password'=>'editor1');
$response = CallAPI($method, $url, $postdata );

    print "<pre>";
    print_r($response);
{"sessid":"R03y8-40VBh6FDEIfi9Lnm2kh2SikCxY3105egCynDY","session_name":"SESS2063f746500d52bace78ba433478bd2d","user": ......