`
talin2010
  • 浏览: 503868 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

我的第一个PHP程序(by quqi99)

阅读更多

我的第一个PHP程序(by quqi99)

由于有个工作任务要用到php,以前没接触过这玩意,现学现卖,学习了半天,折腾了半天,有了下列程序。程序中通过curl调用两个java servlet完成用户的注册,批VIP。由于要求用户注册后保持登录状态,也将servlet返给php脚本的cookie再通过设置cookie返给客户端。代码如下:

regUser.php文件:

<?php
$regUseUrl = 'http://zhanghua/LiteRegistration';
$approveVipUrl = 'http://zhanghua/JsonTools';
$livetoolUser = '';
$livetoolPass = '';
$logDir = '/home/site/data/lk';
$logFile = 'regUser.log';

function curl($url, $user, $pw, $field, $ispost = 1) {
$ch = curl_init();
if($ispost == 1){
curl_setopt($ch, CURLOPT_POSTFIELDS, $field);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
}else{
curl_setopt($ch, CURLOPT_URL, $url."?".$field);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt ($curl, CURLOPT_HTTPHEADER, $header);
if($user && $pw){
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD,"$user:$pw");
}
$http = curl_exec($ch);
if (curl_errno($ch)){
echo "Error: " . curl_error($ch);
}
curl_close($ch);

// forward cookie
$response = preg_split ("/\r\n\r\n/", $http, 2);
$headers = preg_split ("/\r\n/", $response[0]);
for ($i = 0; $i < count ($headers); $i++) {
$header = explode (":", $headers[$i]);
switch ($header[0]) {
case "Set-Cookie":
header ($headers[$i], FALSE);
break;
default:
break;
}
}
return $response[1];
}

function writeLog($dir,$file,$msg){
if (!file_exists($dir)) {
mkdir($dir,0777,TRUE);
}
$logFile = $dir.'/'.$file;
$msg = date('Y-m-d H:i:s').' >>> '.$msg."\r\n";
if(file_put_contents($logFile,$msg,FILE_APPEND) == FALSE){
echo "Can not write ".$logFile;
chmod ($dir, 0777);
}
}


// judge verify code
session_start();
$verifyCodeSession = $_SESSION["check_num"];
unset($_SESSION['check_num']);

$verifyCode = $_POST["verifyCode"];
$verifyCodeMD5 = md5($verifyCode);
if(empty($verifyCodeSession) || $verifyCodeMD5 != $verifyCodeSession){
$arr = array(
'reason'=>'verify code is invalid',
'success'=>false
);
$json_string = json_encode($arr);
echo $json_string;
return;
}
// reg user by invoking LiteRegistration
extract($_POST);
$fields = array(
'litereg_travelFor'=>$litereg_travelFor,
'litereg_gender'=>$litereg_gender,
'litereg_keepSignedIn'=>$litereg_keepSignedIn,
'litereg_pass'=>$litereg_pass,
'litereg_locationId'=>$litereg_locationId,
'litereg_location'=>$litereg_location,
'litereg_travelFrequency'=>$litereg_travelFrequency,
'litereg_email'=>$litereg_email,
'litereg_username'=>$litereg_username,
'litereg_travelStyle'=>$litereg_travelStyle,
'litereg_DOB'=>$litereg_DOB
);
$fields_string = "form-name=litereg&".http_build_query($fields);
// {"username":"quqi","memberid":"149137","reason":"ok","success":true,"displayname":"quqi"}
$jsonResult = curl($regUseUrl,'','',$fields_string,1);
$objResult = json_decode($jsonResult,true);
// log it
$msg = "RegUser: ".$litereg_username.'@'.$litereg_pass.'_'.$_SERVER["REMOTE_ADDR"].' '.$jsonResult;
echo $msg;
writeLog($logDir, $logFile, $msg);
if($objResult["success"]==true){
// approve VIP
$memberid=$objResult["memberid"];
$params = array(
'action'=>'approveVip',
'memberid'=>$memberid
);
$params_string = http_build_query($params);
$approveVipJsonResult = curl($approveVipUrl,$livetoolUser,$livetoolPass,$params_string,0);
$msg2 = "ApproveVip: ".$memberid." ".$approveVipJsonResult;
writeLog($logDir, $logFile, $msg2);
$approveVipObjResult = json_decode($approveVipJsonResult,true);
}
?>

chkCode.php如下:

<?php
Header("Content-type: image/PNG");
session_start();
srand((double)microtime()*1000000);
$im=imagecreate(45,18);
$black=imagecolorallocate($im,0,0,0);
$white=imagecolorallocate($im,255,255,255);
$gray=imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$gray);
session_register("check_num");
$_SESSION["check_num"]="";
$authnum = '';
for($i=0;$i<4;$i++){
$str=mt_rand(1,3);
$size=mt_rand(3,6);
$onebit = mt_rand(0,9);
$authnum.=$onebit;
imagestring($im,$size,(5+$i*10),$str,$onebit,imagecolorallocate($im,rand(0,130),rand(0,130),rand(0,130)));
}
$_SESSION["check_num"]=md5($authnum);
for($i=0;$i<150;$i++){
$randcolor=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im,rand()%70,rand()%30,$randcolor);
}
imagepng($im);
imagedestroy($im);
?>

分享到:
评论

相关推荐

    quqi.rar_mtk_mtk software_mtk平台

    MTK平台的多功能下載軟件,適用所有MTK手機....

    视频播放源代码directshow开发

    用directshwo开发的视屏播放器,比较简单,有时候会出错

    dm8_setup_win64_ent_8.1.1.45_20191121.iso

    国内最好的数据库达梦DM8,曲奇网盘下载链接:https://quqi.com/s/1243222/wcOZdaWgUlHrwhOk

    C++queue介绍及详细使用示例(源代码)

    deque(双端队列)是C++标准模板库(STL)中的一个容器,它支持在序列的两端(前端和后端)快速插入和删除元素。deque 通常在需要快速地在两端添加或移除元素,但又不想承受像 list 那样的额外开销时使用。 deque的主要特性: 双端操作:deque 允许在序列的前端和后端快速插入和删除元素。 内部引用:deque 通常不会将所有元素都存储在连续的内存块中,而是将元素存储在多个较小的、独立的内存块中,并通过内部引用机制来管理这些内存块。这使得 deque 在进行前端插入和删除操作时比 vector 更高效,因为 vector 在这些操作时需要移动所有元素。 迭代器:deque 支持双向迭代器,可以向前或向后遍历元素。 随机访问:尽管 deque 的元素不是连续存储的,但它仍然支持通过索引直接访问元素(类似于 vector)。

    实验报告3.doc

    实验报告3.doc

    (基于Golang 1.18简单封装的Gorm分页插件).zip

    Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

    一个基于springboot+sureness的面向REST API资源无状态认证权限管理系统

    一个基于springboot+sureness的面向REST API资源无状态认证权限管理系统。个人经导师指导并认可通过的高分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 一个基于springboot+sureness的面向REST API资源无状态认证权限管理系统。个人经导师指导并认可通过的高分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 一个基于springboot+sureness的面向REST API资源无状态认证权限管理系统。个人经导师指导并认可通过的高分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。

    C实验报告模板.doc

    C实验报告模板.doc

    autojs1-仿真随机滑动.js

    模拟滑动抢单,防检测,模拟人手的随机滑动,外卖抢单,美团,大麦

    STM32F103系列芯片的开发资料

    stm32f103c8t6

    YALMIP-R20180209.zip

    yalmip源码,matlab用的求解器,不懂的可以提前联系博主

    Panoply软件是大名鼎鼎的NASA下属的GISS研究所开发的可视化软件,该软件可以实现对地学常用数据的读取,其中包括netC

    Panoply软件是大名鼎鼎的NASA下属的GISS研究所开发的可视化软件,该软件可以实现对地学常用数据的读取,其中包括netCDF,HDF等数据,并在界面实行可视化渲染的过程。

    数据安全标准 数据安全行业相关标准清单列表(全网最全!!!)

    全网最全数据安全相关标准清单!!!!让你做数据安全或提供数据安全服务时快速了解相关标准!!!! 本清单包含数据安全五个方面的行业标准 1.重要计划标准(5项) 2.国家标准(26项) 3.行业标准(28项) 4.地方标准(27项) 5.团体标准(26项) 每项包含数据安全标准 1.具体名称(编号+名称)(例:DB4403/T 361—2023  智能网联汽车数据安全要求) 2.重要程度 3.所属行业 4.标准分类 5.内容摘要 6.发布年份 7.文号/标准号/生效时间 8.主管部门 9.归口部门 其中具体名称添加了标准链接 一键直接访问标准 (部分标准如果链接失效 可根据标准名称到全国标准信息公共服务平台搜索(https://std.samr.gov.cn/))

    QT-TCP网络通讯工具编写记录

    > 功能描述: > 1、实现服务端创建; > 2、实现客户端创建 ; > 3、实现服务端与客户端的通讯连接,包括:连接响应,断连响应等; > 4、实现服务端一对多客户端,单发送消息,多发消息,循环发消息; > 5、实现一键获取本地IP4地址;

    Go 微服务框架,Router 基于 Gin,同时支持 gRPC 和 HTTP,封装各种常用组件,开箱即用,专注业务。.zip

    Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

    unity PIDI - Planar Reflections 1.8平面反射插件

    unity PIDI - Planar Reflections 1.8平面反射插件

Global site tag (gtag.js) - Google Analytics