Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DinhoPHP

Enviar variável para página anterior

Recommended Posts

Olá! Desenvolvi um sistema de login, porém gostaria de dar uma resposta a esse usuário na página anterior, alterando uma variável global vazia por algo do tipo: Preencha todos os campos. E o redireciono via javascript. Obs.: Não sei utilizar bem o Javascript.

 

index_login.php

<div id="login_pro">


                <form id="form_login_pro" name="form_login" method="post" action="<?php echo "_sistema_login_ecsc/_classes/logar.php";?>">

                    <span class="title_perfil_profissional sublinhado">Área Administrativa</span>
                    </br>

                    <div id="mensagem_login" class="mensagem_usuario" style="<?php echo $display;?>">
                        <script>

                            document.getElementById('mensagem_login').innerHTML = global;
                            document.getElementById('mensagem_login').style.color = 'red';
                        </script>
                    <?php
                        echo $msg_login;
                    ?>
                    </div>

                    <span class="txt_login_pro">Usuário:</span>
                    <input name="email" type="text" id="email" size="40" maxlength="40"/>

                    </br>
                    <span class="txt_login_pro">Senha:</span>
                    <input name="senha" type="password" id="senha" size="40" maxlength="40"/>

                    <input type="submit" name="botaologin" id="botao_login_pro" value="Acessar"/>
                    <input type="submit" name="botao_cadastrar" id="botao_login_cad" value="Cadastre-se"/>

                </form>

            </div>

logar.php

<?php
require_once 'conexao.php';
require_once 'Acoes.php';

if(isset($_POST["botao_cadastrar"]) == "Cadastre-se"){
    echo "<script>window.location.href = '../../form_profissional.php';</script>";
}

    //RECEBE OS DADOS DO FORMULÁRIO
    $email = $_POST["email"];
    $senha = $_POST["senha"];

    //$email = preg_replace('/[^[:alnum:]_.-]/', '', $_POST["email"]);
    $senha2 = sha1($senha. "spbrmitcz");
        //VERIFICA SE ESTÃO VAZIOS
        if (empty($email) || empty($senha)) {
            $msg_login = "Campos vazios!";

            echo "<script>
            $(\"#mensagem_login\").change(function(){

               $.ajax({
                  type: \"POST\",
                  url: 
            window.location.href = '../../index_login.php?valor=$msg_login'});</script>";
        }else {
                //Executa a classe de cadastro

                $logado = new Acoes();
                $logado = $logado->Login($email, $senha2);
            }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você realmente quer fazer? Coloque o problema da questão de forma objetiva.

Você quer que após o usuário logar e o sistema retornar erro, seja exibido uma mensagem para o mesmo?

Basta você salvar a mensagem em cookie, e na página do login verificar se existe algum cookie setado, caso tenha escreva na tela.

 

<?php

/* USUÁRIO NÃO ENCONTRADO */
setcookie("mensagemErro", "O usuário não foi encontrado, desculpe. Tente novamente!");
if (isset($_COOKIE["mensagemErro"])){
	echo $_COOKIE["mensagemErro"];
}

Ou você pode enviar via curl, de volta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, eu tentei e enviei via URL, apenas não consegui exibir através do innerHTML. farei o teste desta maneira com o COOKIE. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, DinhoPHP disse:

Sim, eu tentei e enviei via URL, apenas não consegui exibir através do innerHTML. farei o teste desta maneira com o COOKIE. Obrigado.

Você pode enviar via method POST com CURL também.

Na página você verifica se existe, da mesma forma com cookie... Porém para você acho mais simples usar o cookie.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz desse jeito mas não funcionou, como estou redirecionando por JS, penso em colocar o script PHP na página de login, setar e imprimir o erro em uma variável PHP, já que caso o login ocorra com sucesso, o mesmo chamará a classe login.

index_login.php

<div id="login_pro">


                <form id="form_login_pro" name="form_login" method="post" action="<?php echo "_sistema_login_ecsc/_classes/logar.php";?>">

                    <span class="title_perfil_profissional sublinhado">Área Administrativa</span>
                    </br>

                    <div id="mensagem_login" class="mensagem_usuario" style="<?php echo $display;?>">
                      
                    <?php
                    if (isset($_COOKIE["mensagemErro"])){
                        echo $_COOKIE["mensagemErro"];
                    }
                    ?>
                      
                    </div>

                    <span class="txt_login_pro">Email:</span>
                    <input name="email" type="text" id="email" size="40" maxlength="40"/>

                    </br>
                    <span class="txt_login_pro">Senha:</span>
                    <input name="senha" type="password" id="senha" size="40" maxlength="40"/>

                    <input type="submit" name="botaologin" id="botao_login_pro" value="Acessar"/>
                    <input type="submit" name="botao_cadastrar" id="botao_login_cad" value="Cadastre-se"/>

                </form>

            </div>

logar.php

<?php
require_once 'conexao.php';
require_once 'Acoes.php';

if(isset($_POST["botao_cadastrar"]) == "Cadastre-se"){
    echo "<script>window.location.href = '../../form_profissional.php';</script>";
}

    //RECEBE OS DADOS DO FORMULÁRIO
    $email = isset($_POST["email"])?$_POST["email"]:"";
    $senha = isset($_POST["senha"])?$_POST["senha"]:"";

    //$email = preg_replace('/[^[:alnum:]_.-]/', '', $_POST["email"]);
    $senha2 = sha1($senha. "spbrmitcz");
        //VERIFICA SE ESTÃO VAZIOS
        if (empty($email) || empty($senha)) {
            $msg_login = "Campos vazios!";
            setcookie("mensagemErro", "Preencha todos os campos!");
            echo "<script>
                  window.location.href = '../../index_login.php';
                  </script>";
        }else {
                //Executa a classe de cadastro

                $logado = new Acoes();
                $logado = $logado->Login($email, $senha2);
            }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho, mas enfim... você pode tentar enviar via curl usando POST e fazer do mesmo modo que fez com cookie.

Você não precisa usar js, usa header("Location: ../../index_login.php");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa mano, é como eu disse, sou muito noob, horrível em JS rs. Acredito que não fiz nada de errado, pois teria me alertado. Mas agradeço muito pelo apoio. Pensei também em armazenar e destruir a SESSION depois, porém como antes de concluir o sistema de login eu achei que tive problemas com COOKIE e SESSION, preferi não mexer nisso rs.

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, DinhoPHP disse:

Poxa mano, é como eu disse, sou muito noob, horrível em JS rs. Acredito que não fiz nada de errado, pois teria me alertado. Mas agradeço muito pelo apoio. Pensei também em armazenar e destruir a SESSION depois, porém como antes de concluir o sistema de login eu achei que tive problemas com COOKIE e SESSION, preferi não mexer nisso rs.

Não vi o problema, mas procure algum artigo sobre CURL e envie de volta a mensagem via POST e caso a mensagem exista mande escrever.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra q CURL?

 

Eu tava brincando aqui com validação Server side, e persistindo na tela em tempo real.... acabei perdendo a hora....

 

Live Demo:

https://inwork.com.br/clientes/github/valida/

 

Sources:

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/valida

 

Explicação...

$( ".validate" ).bind( "blur", function() {

});

Esse cara aqui basicamente sempre que ocorrer um 'blur' (Perda de foco) nas classes que devem ser monitoradas o JS envia para o servidor... 
Testando validação individualmente.

Bom basicamente para rodar individual eu passo um parâmetro a mais:

'&validar_individual=true'

 

(Aceito sugestões para melhorar ou deixar mais elegante) :smile:

 

Já no server side.. (php4win)

 

Toda função de validação tem o mesmo nome + 'name' do atributo HTML...

Ex:

function valida_nome_completo($nome_completo = ''){
	if($nome_completo == ''){
		throw new Exception('nome_completo||Preencha o nome completo');
	}
	
	if(strlen($nome_completo) < 8){
		throw new Exception('nome_completo||O Nome deve ter ao menos 8 caracteres');
	}
}

....Repare... valida_<nome_do_atributo>

 

Isso tudo sempre dentro de um try/catch tentando diminuir a quantidade de 'if's encadeados.

 

A sacada aqui foi simplesmente tentar reaproveitar a mesma função de validação para as interações abaixo:

Server Side (Antes do sql/insert)

Client Side (Blur)

Unitariamente (Blur/Mock para testes?)

 

A única 'ponta' solta era a mensagem personalizada de erro...

 

Ex:

Uma mensagem de erro para nome vazio não é a mesma de caracteres insuficientes saca?!

Personalizar é preciso :sweat_smile:

 

 

Então adotei um padrão na resposta da Exception

 

Ex:

'termos_aceite||O termo é obrigatório'

Repare nos dois pipes  -> ||

 

Nada que um pouco de split/explode não resolva caso queira separar...

var fieldToFocus = '';
var messageError = '';
if(json.message != null && json.message != ''){
	var auxMessage = json.message.split('||');
	fieldToFocus = auxMessage[0];
	messageError = auxMessage[1];
}

Pronto....

Agora um pouco de manipulação individual de jQuery e conhecimento de DOM e pode tranquilamente dar um focus() deixando muito mais intuitivo o formulário.

 

No caso estou utilizando o materializecss (Eu to meio enjoado de Bootstrap pra freela/Exemplo), o sistema de Grid dele é ok e o visual é 10/10 haha

 

 

 

 

 

 

`PS-Eu tinha um freela que está quase no dead line sabia?! fiquei fazendo o exemplo/praticando e a hora foi passando kkkkk

 

 

Alguns links legais, se quiser se aprofundar a respeito de JS/Ajax/HTML/Early Returno:

http://materializecss.com/getting-started.html

http://blog.alura.com.br/quanto-mais-simples-melhor/

http://softwareengineering.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use-an-if-statement

 

Recomendo a leitura:
https://tableless.com.br/tenha-o-dom/

 

 

Recomendo fazer o curso (caso já tenha uma noção de JS):

http://try.jquery.com/

 

JS:

https://github.com/gabrieldarezzo/helpjs-ravi#exercicios-em-javascript

 

JS - > 'Guia definitivo AJAX'

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax#guia-definitivo-ajax

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
58 minutos atrás, gabrieldarezzo disse:

Pra q CURL?

 

Eu tava brincando aqui com validação Server side, e persistindo na tela em tempo real.... acabei perdendo a hora....

 

 

Ele ainda está iniciando, tendo problema com cookies e session... imagina com ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkkkkkkkkkkkkkkk Hilário James Bond, o meu problema JS mesmo, mas com tempo darei uma olhada nessa complexidade kkkkk. E o COOKIE James, tem que ser declarado antes de tudo, porém não consegui mudar o conteúdo do COOKIE. Estou saindo agora, depois posto.

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, DinhoPHP disse:

kkkkkkkkkkkkkkkkkk Hilário James Bond, o meu problema JS mesmo, mas com tempo darei uma olhada nessa complexidade kkkkk. E o COOKIE James, tem que ser declarado antes de tudo, porém não consegui mudar o conteúdo do COOKIE. Estou saindo agora, depois posto.

Não disse por mal, apenas não é ideal confundir a mente de quem está iniciando.

"Um passo de cada vez..."

Compartilhar este post


Link para o post
Compartilhar em outros sites

:thumbsup::smile: Mas esse iniciar é em JS, tenho que me dedicar à ela, fui a ignorando e hoje preciso kkkk. Finalizando esse projeto, irei me dedicar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, DinhoPHP disse:

:thumbsup::smile: Mas esse iniciar é em JS, tenho que me dedicar à ela, fui a ignorando e hoje preciso kkkk. Finalizando esse projeto, irei me dedicar.

Compreendo. Mas não adianta se embolar, primeiro você tem que saber como funciona o JS para depois ir para JQUERY e depois aprender Ajax.
Eu te aconselho dominar um pouco mais o PHP, entender design patterns, expressões regulares, poo, pdo, dom e etc. Para depois ir para outra linguagem.
A prática leva a perfeição e quando você ainda não tem muito domínio a falta de prática faz esquecer tudo o que aprendeu.

Enfim, bons estudos e boa sorte em sua carreira como desenvolvedor.

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, jamesbond disse:

Compreendo. Mas não adianta se embolar, primeiro você tem que saber como funciona o JS para depois ir para JQUERY e depois aprender Ajax.
Eu te aconselho dominar um pouco mais o PHP, entender design patterns, expressões regulares, poo, pdo, dom e etc. Para depois ir para outra linguagem.
A prática leva a perfeição e quando você ainda não tem muito domínio a falta de prática faz esquecer tudo o que aprendeu.

Enfim, bons estudos e boa sorte em sua carreira como desenvolvedor.

:smiley::thumbsup: Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz monteiro
      Bom dia.
      Estou precisando formatar um campo de entrada type text somente para numero com a seguinte formatação.
      se menor que 999 mostrar dessa forma mesmo, nesse caso seria para centena.dezena.unidade. Tipo 001 até 009 depois 010 até 099 depois 100 até 999
      de 1.000 até 999.999  mostrar com o ponto, nesse caso seria para milhar.centena.dezena.unidade. Tipo 001.000 até 001.999 e assim por diante.
      de 1.000.000 até 9.999.000, nesse caso seria para milhão.milhar.centena.dezena.unidade. aqui mesma ideia....
      Parecidos com aqueles campos de preço, que ao digitar os zeros ficam a esquerda até o valor atingirem a unidade correspondente.
       
      Tentei adaptar esse que encontrei na net.
      function moeda(a, e, r, t) { let n = "" , h = j = 0 , u = tamanho2 = 0 , l = ajd2 = "" , o = window.Event ? t.which : t.keyCode; if (13 == o || 8 == o) return !0; if (n = String.fromCharCode(o), -1 == "0123456789".indexOf(n)) return !1; for (u = a.value.length, h = 0; h < u && ("0" == a.value.charAt(h) || a.value.charAt(h) == r); h++) ; for (l = ""; h < u; h++) -1 != "0123456789".indexOf(a.value.charAt(h)) && (l += a.value.charAt(h)); if (l += n, 0 == (u = l.length) && (a.value = ""), 1 == u && (a.value = "0" + r + "0" + l), 2 == u && (a.value = "0" + r + l), u > 2) { for (ajd2 = "", j = 0, h = u - 3; h >= 0; h--) 3 == j && (ajd2 += e, j = 0), ajd2 += l.charAt(h), j++; for (a.value = "", tamanho2 = ajd2.length, h = tamanho2 - 1; h >= 0; h--) a.value += ajd2.charAt(h); a.value += r + l.substr(u - 2, u) } return !1 } Mas sem sucesso.
       
      Grato por enquanto.
       
       
       
    • Por Giovanird
      O script abaixo atualiza a página (centro.php) a cada um minuto e dentro desta página terei uma div que não poderá ser atualizada.
      Tentei colocar esta div como pagina com setInterval de 100 minutos porem ao dar o refresh no centro.php  tudo vai junto.  Será que isto é possivel?

      Desde já meu muito obrigado!
      <script> function atualiza(){ var url = 'centro.php'; $.get(url, function(dataReturn) { $('#centro').html(dataReturn); }); } setInterval("atualiza()",60000); </script>  

    • Por luiz monteiro
      Bom dia. Eu estou tentando encontrar uma maneira de evitar que após o usuário selecionar, se selecionar, uma imagem, essa seja substituída apenas por outra selecionada. Porém quando o usuário cancela a seleção, o input file remove o arquivo se já foi selecionado anteriormente.
      Essa é a estrutura que estou usando HTML
      form action="#" method="post" name="formulario" id="formulario" enctype="multipart/form-data"
      input type="file" name="file_name[]" br input type="file" name="file_name[]" br button enviar /button /form
      JS PURO
      Peguei esse script em um post aqui do stackoverflow e adaptei
      script type="text/javascript"
      let formulario = document.querySelector("#formulario"); formulario.addEventListener("change", (e)=>{ e.preventDefault(); var file = e.target.files[0]; if (e.target.files.length === 1 && e.target.files !== undefined && e.target.files !== null && file.type.match('image.*')) { console.log("if okay"); } else { //preciso entender o que devo fazer aqui para verificar se há arquivo no DOM desse target caso, o usuário cancele a seleção, para evitar que se há um arquivo no DOM esse permaneça. console.log(file); //CASO O USUÁRIO CANSELA A SELEÇÃO, RETORNA undefined } }); /script
      O if está correto, porém o que falta é o que fazer no else. Agradeço desde já.
    • Por ILR master
      Fala pessoal.
      Tudo bem?
       
      Tenho o seguinte código que funcionda perfeitamente:
       
      date_default_timezone_set("America/Sao_Paulo");
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+30  day'));
       
      Mas eu quero definir a quantidade de dias pegando o valor que a variável:
       
      date_default_timezone_set("America/Sao_Paulo");
      $tempo = 30;
      $d_inicio= date('Y-m-d');
      $d_final= date('Y-m-d', strtotime('+$tempo  day'));
       
      Mas quando declaro com variável não funciona.
      Obrigado pela ajuda.
    • Por ILR master
      Fala pessoal, tudo bem?
       
      Tô tentando fazer um pre-loading, mas não consigo de jeito algum.
      Quero mostrar uma animação enquanto a página é carregada e depois de caregada, esconder a animação e mostrar conteúdo.
       
      Aguém pode me ajudar?
       
      Segue código abaixo
       
       
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
          <title>PÁGINA LOAD</title>

      <style type="text/css">
      .loadclass {
          border: 2px solid #f3f3f3; /* Light grey */
          border-top: 4px solid #ffc401; /* Blue */
          border-radius: 50%;
          width: 50px;
          height: 50px;
          animation: spin 2s linear infinite;
      }
      @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
      }
      .conteudo {
          display:none;
      }
      </style>
      <script>
          function loading(){
              document.getElementsByClassName('loadclass')[0].style.display="none";
              document.getElementsByClassName('conteudo').style.display="block";
          }
      </script>
      </head>
      <body onLoad="loading()">
      <div class="loadclass"></div>
      <div class="conteudo">SEU CONTEUDO AQUI DENTRO!!!</div>
      </body>
      </html>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.