三叶草 发表于 2021-11-9 18:25:29

PHP 模拟登陆功能实例详解

这篇文章主要介绍了PHP 模拟登陆功能,结合实例形式详细分析了php基于curl的模拟表单登陆及session信息存储相关操作技巧,需要的朋友可以参考下
本文实例讲述了PHP 模拟登陆功能。分享给大家供大家参考,具体如下:
说明:该模拟登陆实例仅适用于没有验证码的模拟登陆实例
该程序基本功能是,模拟登陆高校图书馆网站,并获取读者信息和借书信息。
程序截图:


目录结构:

login.php
<form method="post" class="am-form" action="judge.php">
<label for="sid">学号:</label>
<input type="text" name="number" id="sid" value="">
<br>
<label for="password">密码:</label>
<input type="password" name="passwd" id="password" value="">
<br>
<div class="am-cf">
<input type="submit" name="" value="登 录" class="am-btn am-btn-primary am-btn-sm am-fl">
<input type="submit" name="" value="忘记密码 ^_^? " class="am-btn am-btn-default am-btn-sm am-fr">
</div>
</form>
judge.php
session_start();
require_once 'curl.php';
$url = "http://opac.lib.ustc.edu.cn/reader/redr_info.php";
$number = $_POST['number'];
$passwd = $_POST['passwd'];
$res = run_curl($url,$number,$passwd);
$pattern = '/<TD><span class=\"bluetext\">姓名:<\/span>(.*)<\/TD>/';
preg_match($pattern, $res,$arr1);
if(is_array($arr1)){
$_SESSION['number'] = $number;
$_SESSION['passwd'] = $passwd;
$_SESSION['name'] = $arr1;
echo "<script>window.location.href='index.php';</script>";
}else{
echo "<script>history.go(-1);</script>";
}
curl.php
<?php
function run_curl($content_url,$number='',$passwd=''){
$cookie_file = tempnam('./temp','cookie');
$url = "http://opac.lib.ustc.edu.cn/reader/redr_verify.php";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$post_fileds = "number=$number&passwd=$passwd&select=bar_no";
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fileds);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content = curl_exec($ch);
curl_close($ch);
$ch = curl_init($content_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
index.php
<?php
session_start();
$number = $_SESSION['number'];
$passwd = $_SESSION['passwd'];
$username = $_SESSION['name'];
if($number==''||$passwd==''||$username==''){
echo "<script>window.location.href='login.php';</script>";
exit();
}
require_once 'curl.php';
header('Content-type:text/html;charset=utf-8');
$url = "http://opac.lib.ustc.edu.cn/reader/book_lst.php";
$res = run_curl($url,$number,$passwd); //通过curl抓取数据
$pattern = '/<td class="whitetext" width="35%"><a class="blue" href="(.*)" rel="external nofollow" >(.*)<\/a>/';//正则匹配获得图书信息
preg_match_all($pattern, $res,$book_arr);
$booklist = array();
$booklist = $book_arr; //借阅图书列表
//var_dump($booklist);
$pattern = '/<font color=(red|)>(.*)<\/font>/';//正则匹配获得还书信息
preg_match_all($pattern, $res,$date_arr);
$datelist = array();
$datelist = $date_arr; //应归还日期列表
$taglist = array();
$taglist = $date_arr; //标记是否超期
//var_dump($date_arr);
?>
logout.php
<?php
session_start();
$_SESSION = array();
session_destroy();
?>
<script>window.location.href='login.php'</script>
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/50273997

http://www.zzvips.com/article/184404.html
页: [1]
查看完整版本: PHP 模拟登陆功能实例详解