本文目錄一覽:
php單點登陸(sso)實例
建一個在線用戶表 欄位 包括session_id,user_id,
如果你想 用戶登錄後沒有退出 用戶繼續使用相同賬戶 密碼登錄的話 踢出原來已經登錄的用戶
用戶登錄成功時,把sessuib_id,user_id插入到在線用戶表中
下次用戶登錄時 根據user_id查詢這個表 若有記錄取得相應的session_id 並刪除相應的session文件即可。
php curl 模擬登錄並獲取數據實例詳解
PHP的curl()在抓取網頁的效率方面是比較高的,而且支持多線程,而file_get_contents()效率就要稍低些,當然,使用curl時需要開啟下curl擴展。
代碼實戰
先來看登錄部分的代碼:
//模擬登錄
function
login_post($url,
$cookie,
$post)
{
$curl
=
curl_init();//初始化curl模塊
curl_setopt($curl,
CURLOPT_URL,
$url);//登錄提交的地址
curl_setopt($curl,
CURLOPT_HEADER,
0);//是否顯示頭信息
curl_setopt($curl,
CURLOPT_RETURNTRANSFER,
0);//是否自動顯示返回的信息
curl_setopt($curl,
CURLOPT_COOKIEJAR,
$cookie);
//設置Cookie信息保存在指定的文件中
curl_setopt($curl,
CURLOPT_POST,
1);//post方式提交
curl_setopt($curl,
CURLOPT_POSTFIELDS,
http_build_query($post));//要提交的信息
curl_exec($curl);//執行cURL
curl_close($curl);//關閉cURL資源,並且釋放系統資源
}
函數login_post()首先初始化curl_init(),然後使用curl_setopt()設置相關選項信息,包括要提交的url地址,保存的cookie文件,post的數據(用戶名和密碼等信息),是否返回信息等等,然後curl_exec執行curl,最後curl_close()釋放資源。注意PHP自帶的http_build_query()可以將數組轉換成相連接的字元串。
接下來如果登錄成功後,我們要獲取登錄成功後的頁面信息。
//登錄成功後獲取數據
function
get_content($url,
$cookie)
{
$ch
=
curl_init();
curl_setopt($ch,
CURLOPT_URL,
$url);
curl_setopt($ch,
CURLOPT_HEADER,
0);
curl_setopt($ch,
CURLOPT_RETURNTRANSFER,
1);
curl_setopt($ch,
CURLOPT_COOKIEFILE,
$cookie);
//讀取cookie
$rs
=
curl_exec($ch);
//執行cURL抓取頁面內容
curl_close($ch);
return
$rs;
}
函數get_content()中也是先初始化curl,然後設置相關選項,執行curl,釋放資源。其中我們設置CURLOPT_RETURNTRANSFER為1即自動返回信息,而CURLOPT_COOKIEFILE可以讀取到登錄時保存的cookie信息,最後將頁面內容返回。
我們的最終目的是要獲取到模擬登錄後的信息,也就是只有正常登錄成功後才能獲取的有用信息。接下來我們以登錄開源中國的移動版為例,看看如何抓取到登錄成功後的信息。
//設置post的數據
$post
=
array
(
’email’
=
‘oschina賬戶’,
‘pwd’
=
‘oschina密碼’,
‘goto_page’
=
‘/my’,
‘error_page’
=
‘/login’,
‘save_login’
=
‘1’,
‘submit’
=
‘現在登錄’
);
//登錄地址
$url
=
“”;
//設置cookie保存路徑
$cookie
=
dirname(__FILE__)
.
‘/cookie_oschina.txt’;
//登錄後要獲取信息的地址
$url2
=
“”;
//模擬登錄
login_post($url,
$cookie,
$post);
//獲取登錄頁的信息
$content
=
get_content($url2,
$cookie);
//刪除cookie文件
@
unlink($cookie);
//匹配頁面信息
$preg
=
“/td
class=’portrait'(.*)\/td/i”;
preg_match_all($preg,
$content,
$arr);
$str
=
$arr[1][0];
//輸出內容
echo
$str;
使用總結
1、初始化curl;
2、使用curl_setopt設置目標url,和其他選項;
3、curl_exec,執行curl;
4、執行後,關閉curl;
5、輸出數據。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
php簡單的登陸驗證用戶名和密碼怎麼寫
給你個實例參考一下php編寫登陸驗證用戶名和密碼吧。
登錄頁面
login.html 負責收集用戶填寫的登錄信息
在CODE上查看代碼片派生到我的代碼片
html
head用戶登錄/head
form name=”LoginForm” method=”post” action=”login.php” onSubmit=”return InputCheck(this)”
p
label for=”username” class=”label”用戶名:/label
input id=”username” name=”username” type=”text” class=”input” /
p/
p
label for=”password” class=”label”密 碼:/label
input id=”password” name=”password” type=”password” class=”input” /
p/
p
input type=”submit” name=”submit” value=” 確 定 ” class=”left” /
/p
/form
/html
登錄處理
login.PHP 負責處理用戶登錄與退出動作。
在CODE上查看代碼片派生到我的代碼片
?php
//登錄
if(!isset($_POST[‘submit’])){
exit(‘非法訪問!’);
}
$username = htmlspecialchars($_POST[‘username’]);
$password = MD5($_POST[‘password’]);
//包含資料庫連接文件
include(‘conn.php’);
//檢測用戶名及密碼是否正確
$check_query = mysql_query(“select userid from user_list where username=’$username’ and password=’$password’ limit 1”);
if($result = mysql_fetch_array($check_query)){
//登錄成功
session_start();
$_SESSION[‘username’] = $username;
$_SESSION[‘userid’] = $result[‘userid’];
echo $username,’ 歡迎你!進入 a href=”my.php”用戶中心/abr /’;
echo ‘點擊此處 a href=”login.php?action=logout”註銷/a 登錄!br /’;
exit;
} else {
exit(‘登錄失敗!點擊此處 a href=”javascript:history.back(-1);”返回/a 重試’);
}
//註銷登錄
if($_GET[‘action’] == “logout”){
unset($_SESSION[‘userid’]);
unset($_SESSION[‘username’]);
echo ‘註銷登錄成功!點擊此處 a href=”login.html”登錄/a’;
exit;
}
?
用戶中心
my.php 是用戶中心,作為用戶登錄檢測。
在CODE上查看代碼片派生到我的代碼片
?php
session_start();
//檢測是否登錄,若沒登錄則轉向登錄界面
if(!isset($_SESSION[‘userid’])){
header(“Location:login.html”);
exit();
}
//包含資料庫連接文件
include(‘conn.php’);
$userid = $_SESSION[‘userid’];
$username = $_SESSION[‘username’];
$user_query = mysql_query(“select * from user_list where userid = ‘$userid’ limit 1”);
$row = mysql_fetch_array($user_query);
echo ‘用戶信息:br /’;
echo ‘用戶ID:’,$userid,’br /’;
echo ‘用戶名:’,$username,’br /’;
echo ‘a href=”login.php?action=logout”註銷/a 登錄br /’;
?
conn.php,用於連接資料庫
在CODE上查看代碼片派生到我的代碼片
?php
$conn = mysql_connect(“127.0.0.1″,”root”,””) or die(“資料庫鏈接錯誤”.mysql_error());
mysql_select_db(“info_db”,$conn) or die(“資料庫訪問錯誤”.mysql_error());
mysql_query(“set names gb2312”);
?
如何用php做個登陸界面?
你可以做一個簡單的例如你只有用戶名和密碼即可那麼你先在資料庫(以mysql為例)中建表例如叫做user 欄位為 id name pass分別是編號、用戶名、密碼長度分別是int(8) a_t(自動編號) 主鍵,varchar(50) ,varchar(50) 你可以添加一個測試數據 例如 1,admin,admin//說明密碼這裡不說加密的問題,用明文實現 登錄頁面的代碼:login.phphtmlheadtitle用戶登錄/title/headbodyform action=”checklogin.php” name=”loginform” method=”post”用戶名:input name=”name” type=”text”br密 碼:input name=”password” type=”password”brinput value=”登錄” type=”submit”br/form/body/html checklogin.php代碼(檢測登錄): $name=$_POST[name];$pass=$_POST[password];session_start();//這個可以維持登錄狀態,可以參照session的使用
//登錄檢查函數 function login_state($uid,$user_shell){ $sql=”SELECT * FROM `user` WHERE `name`=’$name'”;
$query=@mysql_query($sql) or die(mysql_error());
$us=is_array($row=@mysql_fetch_array($query));
$user_shell=$us ? $user_shell==$row[password]:FALSE;
if($user_shell){ echo “scriptalert(‘登錄成功’);/script”;
return $row;
}else{
echo “scriptalert(‘您暫時不能瀏覽該頁面,請先登錄’);location.href=’login.php’;/script”;
} }login_state($name,$password);?
希望可以幫到您,如果還有問題可以聯繫2458285853
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232259.html