Drupal 7 – 使用PHP Curl更新具有服务的用户
发布时间:2020-12-13 16:51:05 所属栏目:PHP教程 来源:网络整理
导读:我正在使用Drupal 7和服务模块,我正在尝试使用 PHP更新用户配置文件.卷曲. 在发送“PUT /更新”之前,我是否始终必须登录? 到目前为止这是我的代码: ?php// REST Server URL$request_url = 'http://mywebsite/end/user/login';// User data$user_data = arr
我正在使用Drupal 7和服务模块,我正在尝试使用
PHP&更新用户配置文件.卷曲.
在发送“PUT /更新”之前,我是否始终必须登录? 到目前为止这是我的代码: <?php // REST Server URL $request_url = 'http://mywebsite/end/user/login'; // User data $user_data = array( 'username' => 'user2','password' => 'pass1',); // cURL $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,$request_url); curl_setopt($curl,CURLOPT_POST,1); // Do a regular HTTP POST curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json')); curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($user_data)); // Set POST data curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); $response = curl_exec($curl); print $response; $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE); // Check if login was successful if ($http_code == 200) { // Convert json response as array $logged_user = json_decode($response); } else { // Get error msg $http_message = curl_error($curl); die($http_message); } print_r($logged_user); // REST Server URL $request_url = 'http://mywebsite.com/end/user/8&XDEBUG_SESSION_START=netbeans-xdebug'; $user_data = array('current_pass' => 'pass1','pass' => 'pass2'); // Define cookie session $cookie_session = $logged_user->session_name . '=' . $logged_user->sessid; // cURL $curl = curl_init($request_url); curl_setopt($curl,array('Accept: application/json','Content-type: application/json')); // Accept JSON response curl_setopt($curl,CURLOPT_PUT,TRUE); curl_setopt($curl,CURLOPT_HEADER,TRUE); // FALSE); // Ask to not return Header curl_setopt($curl,CURLOPT_COOKIE,"$cookie_session"); // use the previously saved session curl_setopt($curl,CURLOPT_FAILONERROR,TRUE); // Emulate file. $serialize_args = json_encode($user_data); $putData = fopen('php://temp','rw+'); fwrite($putData,$serialize_args); fseek($putData,0); curl_setopt($curl,CURLOPT_INFILE,$putData); curl_setopt($curl,CURLOPT_INFILESIZE,drupal_strlen($serialize_args)); $response = curl_exec($curl); $http_code = curl_getinfo($curl,CURLINFO_HTTP_CODE); // Check if login was successful $ret; if ($http_code == 200) { // Convert json response as array $ret = json_decode($response); } else { // Get error msg $http_message = curl_error($curl); die($http_message); } print_r($ret); curl_close($curl); } ?> 我在这里错过了什么? 欢迎任何答案! 解决方法
希望这可以帮助你.
$service_url = 'http://mywebsite/end/user/login'; // .xml asks for xml data in response $post_data = array( 'username' => 'user2',); $post_data = http_build_query($post_data,'','&'); // Format post data as application/x-www-form-urlencoded // set up the request $curl = curl_init($service_url); curl_setopt($curl,true); // have curl_exec return a string curl_setopt($curl,true); // do a POST curl_setopt($curl,$post_data); // POST this data // make the request curl_setopt($curl,CURLOPT_VERBOSE,true); // output to command line $response = curl_exec($curl); curl_close($curl); // parse the response $xml = new SimpleXMLElement($response); $session_cookie = $xml->session_name .'='. $xml->sessid; if(empty($xml->session_name) && empty($xml->sessid)){ echo 'Wrong';exit; } $service_url = 'http://mywebsite/end/user/token'; // .xml asks for xml data in response $curl = curl_init($service_url); curl_setopt($curl,$post_data); // POST this data curl_setopt($curl,"$session_cookie"); // use the previously saved session // make the request curl_setopt($curl,true); // output to command line $csrf_token = curl_exec($curl); curl_close($curl); $xml = new SimpleXMLElement($csrf_token); $csrf_token = $xml->token; $csrf_header = 'X-CSRF-Token: ' . $csrf_token; // REST Server URL $request_url = 'http://mywebsite/end/user/8&XDEBUG_SESSION_START=netbeans-xdebug'; $user_data = array('current_pass' => 'pass1','pass' => 'testing'); // cURL $curl = curl_init($request_url); curl_setopt($curl,'Content-type: application/json',$csrf_header)); // Accept JSON response curl_setopt($curl,TRUE); //curl_setopt($curl,"$session_cookie"); // use the previously saved session curl_setopt($curl,TRUE); // Emulate file. $serialize_args = json_encode($user_data); $putData = fopen('php://temp',strlen($serialize_args)); $response = curl_exec($curl); curl_close($curl); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |