怎麼寫一個本地網頁來連線WIFI(如何使用cmd命令連線wifi)
如果你已具備:
1、後臺語言PHP或Node.js的知識2、筆記本或樹莓派或PC
3、windows或Linux系統
4、PHP或Node.js的開發環境
5、HTML等web前端知識
6、以上五點都是廢話,簡單來說是已具備C/S前後端開發的實力和一臺用來開發的電腦
如果你不具備:
1、windows或Linux客戶端程式設計2、bat或shell命令使用方式
3、無線網絡卡
4、瀏覽器
5、以上四點都是廢話,簡單來說是不會桌面應用開發和沒有連wifi的無線網絡卡
如果你有這樣的一個需求:
1、寫一個網頁2、在網頁上連線wifi而非用滑鼠在工作列上點選連線
3、這個網頁只是本地使用
4、以上三點都是廢話,簡單來說就是需要製作一個單機網頁並在網頁上輸入帳號密碼來連線wifi
看到這樣的需求,你的腦子是不是開始運轉起來去思考這個需求的解決方案。可能你跟我的思路一樣:
首先,連線wifi是系統做的事情,肯定不能使用JavaScript這種在瀏覽器上執行的語言來呼叫系統的功能,就算是chrome這樣強大瀏覽器也不會具備連線wifi的API;
然後,得知JS敗下陣來,就到Node.js上場,那能不能通過Node.js來呼叫系統的API呢,好像可以,但是要去找相應的系統呼叫模組和學習資料要花很多時間,既然Node.js可以實現這個需求,那就先keep住這個方案;
另外,Node.js能實現的需求,PHP應該也能實現,不過PHP本身好像沒有連線wifi的API,怎麼辦呢,換一種方式,可以使用exec()或者system()這樣的函式來呼叫系統命令來連線wifi;
最後,知道了可以通過PHP來呼叫系統命令,那就只要知道連線wifi的命令的好辦了,通過查詢得知在CMD中連線WiFi的命令要使用netsh wlan加上引數即可連線wifi。
有了這麼一個從高階到底層的整體思路,就可以開幹了。
其實,還有一種方案比Apache+PHP這種方式來實現更好,就是使用npm的electron模組來將網頁打包成一個桌面應用,安裝後通過node.js監聽並接收打包後的網頁post過來的賬號密碼再呼叫系統命令來連線WIFI。不過本文只介紹在Windows系統中的PHP的需求實現,日後有時間我會寫一篇electron的打包教程。
===============
好,本文正式開始!
===============
連線wifi的命令有兩句,使用方式非常簡單:
(1)設定配置檔案
netsh wlan set profileparameter name=賬號 SSIDname=還是賬號 keyMaterial=密碼
注意name和SSIDname兩個一般情況下是相等的,都是wifi的賬號
(2)按配置檔案資訊連線WIFI
netsh wlan connect name=賬號 ssid=還是賬號
注意連線命令中沒有密碼
需求的實現也非常簡單:
一、為了方便PHP呼叫,我把這兩句命令寫成一個bat檔案。在編輯器中新建一個名為wlan的bat檔案,wlan.bat寫入內容如下:
netsh wlan set profileparameter name=%1 SSIDname=%1 keyMaterial=%2
netsh wlan connect name=%1 ssid=%1
二、在php呼叫這個bat檔案連線wifi之前,把網頁的介面寫好,我只是簡單寫一個wlan.html的例子:
<html>
<head>
<title>本地連線wifi網頁</title>
</head>
<body>
<form action="wlan.php" method="post">
<input type="text" name="wlan_name" />
<input type="text" name="wlan_pass" />
<input type="submit" />
</form>
</body>
</html>
三、根據網頁,得知頁面點選提交按鈕後會post了wlan_name和wlan_pass到wlan.php,所以可以開始寫PHP程式碼了,wlan.php如下:
<?php
//如果有資料POST過來,接收賬號和密碼資料
if( !empty($_POST['wlan_name']) && !empty($_POST['wlan_pass']) ){
//呼叫bat的命令,格式為 "wlan.bat 賬號 密碼"
$wlan_connect = 'wlan.bat '.$_POST['wlan_name'].' '.$_POST['wlan_pass'];
//獲取命令呼叫結果
$msg = exec( $wlan_connect );
//輸出結果
echo $msg;
}
?>
把上面的 wlan.bat 和 wlan.html 和 wlan.php 三個檔案放在Apache的網站目錄下,在瀏覽器輸入 localhost/wlan.html即可看到效果,輸入賬號密碼,點選提交按鈕即可連線對應賬號密碼的WIFI。
如果你不會開發桌面應用的情況下,可以像這樣製作一個單機網頁來滿足需求。但是我還是建議你學習Node.js,在electron下將網頁檔案打包成客戶端(Windows、Linux)來實現桌面應用,或者直接學習桌面應用開發讓使用者獲得更好的體驗。
回到原文的需求,在Linux系統中,也是按照這樣的思路:寫shell命令,用PHP呼叫shell命令即可。
講述使用C語言來控制wifi,不過由於我沒研究過windows API,所以大多看不懂,平時我都是使用cmd命令來解決問題的,想研究一下Native Wifi API的童鞋可以參考一下這篇文章。
最後,如果本文有錯誤的地方請不吝指教,謝謝閱讀!
相關推薦
怎麼寫一個本地網頁來連線WIFI(如何使用cmd命令連線wifi)
如果你已具備: 1、後臺語言PHP或Node.js的知識 2、筆記本或樹莓派或PC 3、windows或Linux系統 4、PHP或Node.js的開發環境 5、HTML等web前端知識6、以
bat檔案(cmd命令批處理)的編寫使用
bat檔案簡介 首先,批處理檔案是一個文字檔案,這個檔案的每一行都是一條DOS命令(大部分時候就好象我們在DOS提示符下執行的命令列一樣),你可以使用DOS下的Edit或者Windows的記事本(notepad)等任何文字檔案編輯工具建立和修改批處理
寫一個函數來獲取一個網頁中用到的html標簽有多少種
作用 source con class pos ... log 知識點 cto 代碼段 const getTagNameNum = () => { return new Set([...document.querySelectorAll(‘*‘)].map(el
如何寫一個Metasploit的登錄掃描(LoginScanners)插件
發送 user spl ast 設定 相互 語法 lec 文章 我們不生產文章,我們只是大自然的搬運工。此掃描插件的詳細生產由rapid團隊在github發布,詳情在博客最下端。 在寫插件之前,我們需要了解一些基本的概念: 證書(Credential Objects) 數字
已知長度為n的線性表A採用順序儲存結構,請寫一個時間複雜度為O(n)、空間複雜度為O(1)的演算法,該演算法可刪除線性表中所有值為item的資料元素。
語言:C++ #include <iostream> using namespace std; typedef int ElemType; //定義 #define MAXSIZE 100 typedef struct {ElemType *elem; int length;}Sq
自動化運維:(3)寫一個簡單的Shell腳本(案例)
sage 數字 shel $1 test 多余 限制 div nbsp 一、需求 1、test.sh 腳本執行時候需要添加參數才能執行 參數和功能詳情如下: 參數 執行效果 start 啟動中... stop 關閉
手寫一個Linux下的debug工具(一)
寫在前面 學習過Linux程式設計的同學都或多或少用過gdb來除錯自己的程式,但是並沒有很多的資源讓我們學習有關偵錯程式的東西。希望通過這篇文章,你可以瞭解基本的除錯原理,更重要的是可以寫出一個自己的簡易除錯工具。更有趣的是,你可以瞭解如何修改記憶體,來“愚弄
手把手教你寫一個手勢密碼解鎖View(GesturePasswordView)
相信大家在很多的app肯定看到過手勢密碼解鎖View,但是大家有沒有想過怎麼實現這樣一個View,哈,接下來,小編手把手教大家教寫一個GesturePasswordView。 先看一張效果圖 要實現這樣一個效果,首先需要在螢幕上繪製一個3x3九宮圖,如下圖 具體思路:
在Unity裡寫一個純手動的渲染管線(一)
隨著Unity3D 2018的面世,Scriptable Rendering Pipeline,也就是可程式設計渲染管線這項新技術變得家喻戶曉。官方在推出這項技術的時候,著重強調了他的各種優點,而筆者總結了一下官方的解釋,認為SRP有以下三個優點:簡單,簡單和簡單。 這第一
C語言寫一個方便的GCC編譯工具(古月)
使用的場景 我在學習C語言的時候要寫很多測試的程式碼,然而每次在編譯程式碼的時候每次都要寫同樣的編譯程式碼gcc -o 生成的檔名 原始碼檔案.c 而我們有現有的生成規則,那就是生成的檔案只要去掉原始檔後面的.c字尾即可,那我們何不寫個程式來實現這個功能呢? 下面是具體實現程式碼
用vue寫一個商城的上貨元件(簡單易懂版,50行js實現效果)
0、結果放前面 加個Star後,fork下來。 然後在控制檯,先輸入npm install安裝依賴,再輸入npm run dev執行檢視效果 1、先列需求 一切開發都是基於需求做的,所以需求先行,根據需求設計功能。 需求如下: 上貨商品有多
如何寫一個給自己的框架寫一個優雅的Java Config模組(一)
Build設計模式 配置模組化 用build設計模式將配置模組化。 配置的依賴關係管理 主從模式 可以暫時先看下面的主從從模式。 單屬性配置 httpSecurity.authorizeRequests().regexMatch
用HTML+PHP寫一個留言板來進行XSS測試&學習 第三篇(簡單的過濾標籤功能實現&繞過)
這次我們要給前一篇文章寫的簡易“入庫”留言板新增一個功能,實現初級的過濾 留言板程式碼請看:http://blog.csdn.net/qq_38219257/article/details/69808
用proxy寫一個遞迴來監聽巢狀物件甚至JSON
其實那個監聽方式有個大bug,當不停的update 監聽物件以後就會導致記憶體洩漏。因為每次在呼叫get的時候都會生成一個新的proxy,後來才知道是多傻。 經過我一天時間的思考,用了一個遞迴的方法去解決巢狀物件的監聽問題。 下面是程式碼: //傳
自己寫一個java的mvc框架吧(二)
.get 支持 請求方式 實例 list amt 但是 提取方法 事情 自己寫一個mvc框架吧(二) 自己寫代碼的習慣 寫一個框架吧,如果這個框架會用到一些配置上的東西,我自己習慣是先不用考慮這個配置文件應該是怎樣的,什麽形式的,先用一個java對象(比如叫 Config.
Java 連線池(使用DBCP與C3P0)
DBCP 需要下載common-dbcp.jar和common-pool.jar。 下載網址(下載xxx-bin.zip即可): http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi http://com
用GitHub Pages來搭建網站(Godaddy域名解析問題)
按照網上的部落格說的一步一步操作了:可是發現還是不行!因為GitHub Pages 的提供的 ip變了,不再是192.30.252.135和192.30.252.135;現在變成了下圖的地址,希望大家別再遇到這個坑,參考文章地址(https://help.github.com/articles/
nuxt.js 本地開發跨域問題(Access-Control-Allow-Origin)及其解決方案
先執行npm i @gauseen/nuxt-proxy -D 再nuxt.config.js的module.exports 裡面新增如下程式碼 modules:[ '@nuxtjs/axios', // 請求代理配置,解決跨域 '
C#字串連線問題(包含破折號和引號)
1.需求場景: 生成字串如下:jsonStr.Append("\"SensorTypes\":"); 解決方法: string code = @"jsonStr.Append(""\""SensorTypes\"":""); "; 學到的知識點: &nb
一個Python編寫的小程式(學生資訊管理系統)
def printInfo(StudentData,StudentName): """ :param StudentData: :param StudentName: :return: """ student = StudentData[Stude