我们在一些公共场所经常会看到有很多开发WIFI热点,连接以后出现号码收集、广告页面等信息,这里很多就用到了Portal认证,在Portal认证页面进行拓展显示广告、联系方式等是很常用的。下面我们零知平台实现一个Portal认证页面显示零知官网信息的页面。
硬件我们本次使用零知-ESP8266;
软件使用零知开发工具,自带示例:
(1)先在零知开发工具中打开CaptivePortal示例,或者复制下面的代码到零知开发工具中:
/**********************************************************
* 文件: x.ino by 零知实验室([url]www.lingzhilab.com[/url])
* -^^- 零知开源,让电子制作变得更简单! -^^-
* 时间: 2019/05/28 12:22
* 说明:
************************************************************/
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 1, 1);
DNSServer dnsServer;
ESP8266WebServer webServer(80);
String responseHTML = ""
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\
<html>\
<head>\
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\
<style type=\"text/css\">\
...\
</style>\
<body>\
<div class=\"oc\">\
<div class=\"ic\">\
<form action=\"/\" method=\"post\">\
<input type=\"hidden\" name=\"testing\" value= \"www.lingzhilab.com\">\
<input type=\"hidden\" name=\"haha\" value=\"12291a0aff04200a\">\
<input type=\"hidden\" name=\"answer\" value=\"0\">\
<h1 class=\"logo\">\
欢迎访问零知实验室\
</h1>\
<p>\
零知开源是一个国内软硬件开源......\
</p>\
<h2>\
是否前往零知实验室官网\
</h2>\
<div class=\"fec\">\
<input type=\"submit\" value= \"是\" onclick=\"sb('1')\">\
<input type=\"submit\" value= \"否\" onclick=\"sb('0')\">\
</div>\
</form>\
</div>\
</div>\
<script>\
function sb(val) {\
document.forms[0].answer.value = val;\
document.forms[0].submit();\
}\
</script>\
</body>\
</html>";
void setup() {
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("DNSServer CaptivePortal example");
// if DNSServer is started with "*" for domain name, it will reply with
// provided IP to all DNS request
dnsServer.start(DNS_PORT, "*", apIP);
// replay to all requests with same HTML
webServer.onNotFound([]() {
webServer.send(200, "text/html", responseHTML);
});
webServer.begin();
}
void loop() {
dnsServer.processNextRequest();
webServer.handleClient();
}
(2)验证后上传代码到零知-ESP8266开发板;
(3)在上传后,我们可以看到电脑的wifi网络出现如下热点:
(4)我们连接上它以后,浏览器就会弹出如下窗口:
同时我们访问192.168.1.1,同样是该页面,这个程序中设置的是一致的。