【php】使用curl发post请求出现400咋办?

最近一直在使用curl,对curl的使用有了较深的认识,但是今天遇到一个问题,让寡人很是头疼啊。

老生长谈的需求了--就是session跨域,跨服务器共享

我就想着既然是共享,那必定要有交集--

1、session入库(数据库),两台服务器都去这个数据库读取数据就ok了

2、不入库,还是session写在文件中,一台服务器对另一台服务器开放一个获取session的接口不就完了

 

session入库不用说,绝对可行的,但是公司当前规模不大,秉着能省则省的原则,选择了第二种办法,这个方案的实施给了寡人;

首先我搭建了一个lnmp环境,模拟一台服务器,而本地wamp环境作为另一台服务器,看能不能本地获取到虚拟机里的session信息

第一步:get请求

       使用curl发送get请求,获取session信息,木有一丁点问题,但是考虑到get请求,不安全,万一信息被劫持咋办?所以放弃

第二步:post

      在使用post时,有点头大,一直提示400 Bad Request错误, 你大爷的,get好好的,咋一换post就不行了呢?

经过搜索,思考,终于找到了原因--原来curl在发送post请求时,有个严格的限制:post必须大写

好记性不如烂笔头,附录个代码,怕过几天忘记了

<?php
	$url = "http://192.168.139.10/index.php";

	$data = array('param'=>'abcs','act'=>'getname');
	//发送请求
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	 curl_setopt($curl, CURLOPT_HEADER, 0);
	//设置获取的信息以文件流的形式返回,而不是直接输出。
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	//设置请求方式
	curl_setopt($curl, CURLOPT_POST, 1);
	//发送post数据
	curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);	//传递参数
	//curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
	$result = curl_exec($curl);
	curl_close($curl);
	
	var_dump($result);
	die;


	$result = json_decode($result,true);
	
	$user_name = decrypt($result['name'],'09wl2018');
	
	var_dump($user_name);
	
	/**
	 * @desc加密
	 * @param string $str 待加密字符串
	 * @param string $key 密钥
	 * @return string
	 */
	function encrypt($str, $key){
		$mixStr = md5(date('Y-m-d H:i:s').rand(1000));
		$tmp = '';
		$strLen = strlen($str);
		for($i=0, $j=0; $i<$strLen; $i++, $j++){
			$j = $j == 32 ? 0 : $j;
			$tmp .= $mixStr[$j].($str[$i] ^ $mixStr[$j]);
		}
		return base64_encode(bind_key($tmp, $key));
	}

	/**
	 * @desc解密
	 * @param string $str 待解密字符串
	 * @param string $key 密钥
	 * @return string
	 */
	function decrypt($str, $key){
		$str = bind_key(base64_decode($str), $key);
		$strLen = strlen($str);
		$tmp = '';
		for($i=0; $i<$strLen; $i++){
			$tmp .= $str[$i] ^ $str[++$i];
		}
		return $tmp;
	}

	/**
	 * @desc辅助方法 用密钥对随机化操作后的字符串进行处理
	 * @param $str
	 * @param $key
	 * @return string
	 */
	function bind_key($str, $key){
		$encrypt_key = md5($key);

		$tmp = '';
		$strLen = strlen($str);
		for($i=0, $j=0; $i<$strLen; $i++, $j++){
			$j = $j == 32 ? 0 : $j;
			$tmp .= $str[$i] ^ $encrypt_key[$j];
		}
		return $tmp;
	}
?>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值