php curl_setopt()函數將為一個CURL會話設定選項,是php中一個重要的函數,它可以模仿使用者的一些行為,如模仿使用者登錄,註冊等等一些使用者可操作的行為。這篇文章就帶你了解怎麼使用php中curl_setopt函數來模擬使用者登入的範例,希望對你理解curl_setopt()函數有幫助。
實戰程式碼加程式碼解釋是對你理解php curl_setopt函數模擬使用者登入範例最好的幫助:
首先先來看登入部分的程式碼:
//模拟登录 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訊息,最後將頁面內容回傳。
我們的最終目的是要獲取到模擬登入後的信息,也就是只有正常登入成功後才能獲取的有用資訊。接下來我們以登入PHP中文網路為例,看看如何抓取到登入成功後的資訊。
//设置post的数据 $post = array ( 'email' => 'oschina账户', 'pwd' => 'oschina密码', 'goto_page' => '/my', 'error_page' => '/login', 'save_login' => '1', 'submit' => '现在登录' ); //登录地址 $url = "//m.sbmmt.com/action/user/login.html"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录 login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件 @ unlink($cookie); //匹配页面信息 $preg = "/(.*)<\/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、輸出資料。
【相關文章推薦】
2.使用php curl_setopt()函數實作抓取網頁與POST資料的簡單範例
##以上是php curl_setopt函數模擬使用者登入範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!
相關標籤:來源:php.cn上一篇:php命名空間:別名與匯入實例詳解 下一篇:使用php curl函數時提示Warning: curl_setopt() [function.curl-setopt]: CURLO…錯誤該怎麼解決本網站聲明本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn作者最新文章
2023-03-07 13:08:02 2023-03-13 16:16:02 1970-01-01 08:00:00 2023-03-13 09:38:01 2023-03-13 14:30:01 1970-01-01 08:00:00 1970-01-01 08:00:00 2023-03-10 21:22:02 1970-01-01 08:00:00 2023-03-07 12:38:01最新問題Laravel 9.x:註冊後重定向用戶查看成功訊息 我試圖在註冊用戶後返回一個包含成功訊息的視圖,其中包含指向登錄頁面的鏈接,但是會話訊息不會隨視圖一起傳遞。這是我的registred()方法protectedfunctionreg...來自於 2023-11-12 22:55:2101336為什麼有些mysql連接在刪除+插入後選擇mysql資料庫的舊資料? 我的python/wsgiWeb應用程式中的會話出現問題。 2個wsgi守護程式中的每個執行緒都有一個不同的、持久的mysqldb連線。有時,在刪除舊會話並建立新會話後,某些連線仍...來自於 2023-10-30 12:37:2002229NUXT 3:如何在版面配置中使用路由中介軟體? (我可以嗎?) 我一直在尋找在佈局中使用Nuxt中間件。但我不確定是否可以,但是,因為我在Nuxt2中使用了它,所以在Nuxt3中可能是可能的。此專案有2種不同的版面:Public.vue和Adm...來自於 2023-10-26 12:57:3702308熱門推薦熱門教學更多>
![]()
php入門教程之一週學會PHP4194112
JAVA 初級入門影片教學2298479
小甲魚零基礎入門學習Python影片教學488034
PHP 零基礎入門教學819986