client.php

<?php

//遍历数组元素,并将元素转码
function array_iconv($data, $in_charset='GBK', $out_charset='UTF-8'){
if (!is_array($data)){
$output = iconv($in_charset, $out_charset, $data);
}elseif(count($data) === count($data, 1)){//判断是否是二维数组
foreach($data as $key => $value){
$output[$key] = iconv($in_charset, $out_charset, $value);
}
}else{
eval_r('$output = '.iconv($in_charset, $out_charset, var_export($data, TRUE)).';');
}
return $output;
} $arr = array("username"=>'aaa',"pwd"=>'47bce5c74f589f4867dbd57e9ca9f808','sex'=>'男');
$arr['_e_'] = 'pwd,sex,username'; //这个参数中存的是randkey里面数组value值的排序 //获得按'_e_'排序的临时数组,这是为了得到randkey
$keys = explode(",",$arr['_e_']);
$tempArr = array();
for($i=0;$i<count($arr)-1;$i++){
$tempArr["$keys[$i]"] = $arr["$keys[$i]"];
}
$str='';
foreach ($tempArr as $key=>$value){
$str .= $value;
}
$randkey = md5($str.'123abc');
$arr['randkey'] = $randkey; $arr = array_iconv($arr);
$arr = array_map('urlencode',$arr); //可使用http_build_query()函数替代
$data = json_encode($arr); $url = "http://localhost/zchnqi/member/receive.php?json=$data"; /****get方式传递数据******
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, "$url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
//打印获得的数据
print_r($output);
*/ //***post方式传输数据******
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post数据
curl_setopt($ch, CURLOPT_POST, 1);
// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output); $res=unserialize($output);
var_dump($res);
if ($res['stat']=='1') {
echo 'right';
}else{
echo 'error';
} ?>

server.php

<?php

require_once(dirname(__FILE__)."/config.php");

//遍历数组元素,并将元素转码
function array_iconv($data, $in_charset='GBK', $out_charset='UTF-8'){
if (!is_array($data)){
$output = iconv($in_charset, $out_charset, $data);
}elseif(count($data) === count($data, 1)){//判断是否是二维数组
foreach($data as $key => $value){
$output[$key] = iconv($in_charset, $out_charset, $value);
}
}else{
eval_r('$output = '.iconv($in_charset, $out_charset, var_export($data, TRUE)).';');
}
return $output;
} if($_GET["json"]){ //数据传递为get方式
$arr = json_decode($_GET["json"],true);
}else{ //数据传递为post方式 或者使用$_SERVER['REQUEST_METHOD'] == 'POST',判断提交的数据是否是POST方式传来的
$arr = file_get_contents("php://input"); //若$arr=$_POST;返回null
$arr = json_decode($arr,true);
//var_dump($arr);
}
$arr = array_map('urldecode',$arr);
$arr = array_iconv($arr,'utf-8','gbk');
$str = $arr['_e_']; //获得按'_e_'排序的临时数组,这是为了得到randkey
$keys = explode(",",$str);
$tempArr = array();
for($i=0;$i<count($arr)-2;$i++){
$tempArr["$keys[$i]"] = $arr["$keys[$i]"];
} $str='';
foreach ($tempArr as $key=>$value){
$str .= $value;
}
$randkey = md5($str.'123abc'); if($randkey == $arr['randkey']){
$son = $dsql->GetOne("SELECT * FROM #@__member WHERE user='$arr[username]' ");
if($son[pwd] == $arr[pwd]){
//将数组序列化后输出,客户端反序列化后还原为数组;也可以使用json_encode()输出,客户端使用josn_decode()获得数组
echo serialize($son);
}else{
echo serialize('password error'); //这边序列化是为了防止客户端反序列化该字符串不标准而报错
}
}else{
echo serialize('vertiy code error');
} ?>

最新文章

  1. IoC组件~Autofac将多实现一次注入,根据别名Resove实例
  2. SQLServer内核架构剖析 (转载)
  3. Mysql InnoDB行锁实现方式
  4. C语言 百炼成钢10
  5. 【Shell脚本学习3】什么时候使用Shell
  6. 从零开始完整Electron桌面开发(1)搭建开发环境
  7. 使用自定义 URL 实现控制器之间的跳转-b
  8. 微信小程序开发之入门篇(熟悉项目结构)
  9. iOS开发多线程-线程间通讯
  10. strcpy()、memcpy()、memmove()、memset()的内部实现
  11. 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
  12. 剑指Offer编程题3——从尾到头打印链表
  13. 【EF6学习笔记】(十)处理并发
  14. IndexDB 操作util
  15. cordova打包webapp
  16. MySQL数据类型--与MySQL零距离接触2-13MySQL唯一约束
  17. Docker学习笔记之Docker的Build 原理
  18. unity3d常用组件及分析
  19. Django的Form机制小问题
  20. net.tcp协议的wcf服务在远程计算机无法调用问题分析

热门文章

  1. DeepLearningFlappyBird-深度学习玩游戏-1-环境搭建
  2. Struts错误信息回传
  3. POJ2195 Going Home —— 最大权匹配 or 最小费用最大流
  4. Axios 请求配置参数详解
  5. JQuery操作TABLE,及console.info问题。
  6. mysql忘记root用户密码找回步骤
  7. Github--开源代码仓库式系统(转)
  8. 洛谷P1290 欧几里德的游戏
  9. nodejs QueryString模块 详解
  10. 数据库备份脚本.sh