Estou com mais um probleminha no sistema que estou desenvolvendo, resumindo estou tentando inserir uma pagina HTML a mais para servir como login antes da pagina principal do sistema, porém usando o código abaixo que pega as duas paginas do cartão SD ele simplesmente abre as duas ao mesmo tempo uma sobre a outra não entendi e não consegui acessar a pagina de login encerrar a sessão e abrir a pagina do sistema, se usar as flag´s manualmente forçando para que entre na condição ele abre uma a uma normalmente, pesquisei muito sobre o (“Connection: keep-alive”); e (“Connection: close”); mas infelizmente sem sucesso, alguma dica ?
int flag = 0;
void setup (){
......}
void loop(){
.....
if (flag == 0) {
if (StrContains(HTTP_req, "GET /index")) {
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();
}
else { // web page request
// send rest of HTTP header
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
//client.println("Connection: close");
client.println();
// send web page
webFile = SD.open("index.htm"); // open web page file
if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // send web page to client
}
webFile.close();
flag = 99;
}
}
}
if (flag ==99){
if (StrContains(HTTP_req, "ajax_inputs")) {
// send rest of HTTP header
client.println("Content-Type: text/xml");
client.println("Connection: keep-alive");
client.println();
SetLEDs();
// send XML file containing input states
XML_response(client);
}
else { // web page request
// send rest of HTTP header
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();
// send web page
webFile = SD.open("acesso.htm"); // open web page file
if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // send web page to client
}
webFile.close();
flag = 0;
}
}
}
.
.
}
É realmente o problema esta ai, porém não achei uma forma de abrir a outra pagina no click do login e também de como encerrar a primeira tela de login, até tentei fazer uma tela de login embutida no arduino, porém ela fecha a sessão com o cliente e como o código se baseia na requisição de um cliente não deu certo, testei também um exemplo pronto WEB_Authentication mas ficou confuso de mesclar os códigos.
Ou seja, o Arduino envia o index.html com o formulario de login e ao fazer submit desse formulario, sera outro ficheiro que sera chamado e as variaveis de inicio de sessao testadas.
Ou seja… na primeira paigna que e servida (index.html) a variavel flag nao deve ser alterada…
Sim fiz da forma que falaram, porém o problema que percebi foi o client, ou seja quando recebe a primeira solicitação ele abre o sd card com o login.htm e fecha a sessão neste momento a flag=99; e tenta abrir o sd card , mas como não tem client solicitando ele não abre a pagina do sistema, fiz um outro teste com uma pagina enviando via post uma senha e ficou da mesma forma .
Enfim só abre sessão para o primeiro client e não consigo passar este client para ourta pagina.
Talvez eu esteja a ver mal as coisas... mas normalmente o teu codigo tera de ver qual e a pagina que esta a ser pedida pelo cliente antes de a ir buscar... Tu nao estas a fazer isso... estas a assumir que o cliente apenas vai ver duas paginas. O index e outra...
Nao sera melhor ideia veres qual e a pagina que esta a ser pedida?
Sim exatamente, porém não tenho ideia de como fazer isso ao ler a pagina do login e clicar em logar transferir o client para a pagina do sistema, no serial monitor acompanho o fluxo e na hora de acessar a outra pagina para na hora de "ver" o client ou seja, resolvi acessar login.htm depois de inserir a senha buscar a pagina acesso.htm, agora travei aqui kkk
Como e que chega o pedido do teu browser ao Arduino?? Nao sera nada de extraordinario encontrar o nome do ficheiro que indicas no teu index.html na string de pedido do browser… ou sera?
Então ele chega no arduino desta forma if (StrContains(HTTP_req, "GET /index")) { para a pagina de login e desta forma para pagina do sistema if (StrContains(HTTP_req, "jax_inputs")) {, se quiser e puder posso te enviar todo os códigos para analisar porque ta dificil mesmo de resolver. segue print´s do serial monitor
Ao acessar o ip do arduino ele abre apenas a pagina do login e fica esperando a senha, ao clicar um login ele valida a senha e tenta carregar a pagina do sistema (acesso.htm) .
Ola, sou novo aqui no fórum estava procurando sobre isso, entretanto meu conhecimento em arduino ainda é muito limitado, gostaria de saber como vai o andamento desta Skeat, se tem alguma nova atualização para eu poder implementar e estuda-las. Obrigado.