Jump to content
Luck_.

Problema com action

Recommended Posts

Estou  com um problema que não sei como resolve. Tenho um sistema de login e registro e bem no formulário login coloquei o Action ="site.php" (Pelo o pouco que eu sei isso é para enviar os dados pro site que eu desejo por exemplo exibir o nome do usuário no site,se eu estiver errado me corrigem por favor),em fim quando vai fazer o login se deixar todos os campos do formulário vazio ele faz o login sem problemas '-'  e o usuário é levado para a página principal que é o site.php,mas quando eu tiro o action não é possível fazer o login sem preencher o formulário corretamente, e é isso que eu quero.Porém quando eu tiro o action="site.php" o login fica como eu quero porém quando eu entro no site não mostra o nome do usuário.

 

Obrigado a quem se prontificar a ajudar o noob aqui :)

Share this post


Link to post
Share on other sites

o Action e para fazer a ação que você deseja. Você deveria criar um página por exemplo login.php essa página validaria o login do usuário e nela você iria validar como por exemplo com o empty para verificar se tem algum campo vazio, fazer consultas para verificar se o usuário realmente existe no banco de dados e só então criar a $_SESSION[] para dizer que o usuário está logado e só então  redirecionar para a site.php.

Poste também os códigos que você fez para o login.

Da uma olhada neste artigo:

http://blog.ultimatephp.com.br/sistema-de-login-php/

Share this post


Link to post
Share on other sites

O problema é tipo quando eu coloco o Action no formulário  da problema no login porém quando eu tiro fica tranquilo.

 

com o Action o login não verifica as condições e simplesmente abri o site.php,sem o Action o login faz a verificação e leva até o site.php porém o site.php parece que não recebe  os dados.

Share this post


Link to post
Share on other sites

Cara, não ficou claro o que você quer. Você quer que não seja efetuado o login caso o usuário não preencha as informações? É isso?

Qualquer coisa poem o seu código aí pra gente ver.

Share this post


Link to post
Share on other sites

É assim eu tenho uma página para login e registro,o problema é o seguinte quando eu coloquei o action no formulário Login,na hora de preencher os dados (nome,e-mail,senha)  eu consigo logar sem preencher o formulário quando eu clico em enviar me leva para outra página que é o site.php,no caso  o sistema estava funcionando perfeitamente só depois do usuário preencher todos os campos ele realizava o login e era enviado para o site.php porém quando eu coloquei o action no formulário ele já leva diretamente pro site sem precisar realizar o login.O action redireciona pro site.php,mas o site.php não recebe o nome que é para ser impresso na tela do usuário,ex: Bem vindo Luck_. é meio difícil de explicar.

Share this post


Link to post
Share on other sites

@Luck_., o action será a página para onde os dados do formulário serão levados. 

 

Se tu estás na página index.php e coloca no action site.php, ao clicar no botão para enviar você será redirecionado para o site.php, seguido dos dados do formulário (se o método for via GET, a URL ficara nesse estilo): 

site.php?user=Ambrosi&pass=12345

No entanto, como é um formulário de login, recomenda-se usar o método POST.

 

Aí sim, indo pra essa outra página, você faz a validação dos dados informados e, se estiverem corretos, você redireciona para a página principal.

 

Se possível, exemplifique com print's/código o que você está fazendo e os erros que estão aparecendo.

Share this post


Link to post
Share on other sites

Sim mas no caso eu digito nada na tela de login e sou levado para o site.php eu queria que quando digitado fizesse a confirmação e me leva-se pro site.php,quando eu coloquei o action="site.php" que começou a dar problema.Ta tarde depois eu envio as prints.

Share this post


Link to post
Share on other sites

@Luck_., pelo que tu está falando, tu não está fazendo a verificação, está apenas redirecionando puramente.

 

Sem o código fica difícil ajudar. Ficaremos no aguardo.

Share this post


Link to post
Share on other sites

Tá..... vamos tentar entender....

 

Digamos que essa seja uma página que tenha isso.

<form method="POST" action="vai_receber.php">
	<input name="texto_que_vai_enviar" type="text" />
	<input type="submit" value="Enviar" />
</form>

Então como o formulário redireciona para vai_receber.php vamos ver esse arquivo

<?php
if (count($_POST)) {
	echo ("Ops!!! Esse arquivo recebeu dados por POST <br/>Vamos depurar eles?!");
	var_dump($_POST);
} else {
	echo ("Epa!!! Você não enviou nada pelo formulário!");
}

 

6 horas atrás, Luck_. disse:

Sim mas no caso eu digito nada na tela de login e sou levado para o site.php eu queria que quando digitado fizesse a confirmação e me leva-se pro site.php,quando eu coloquei o action="site.php" que começou a dar problema.Ta tarde depois eu envio as prints.

Seria mais ou menos assim que está seu código?

 

No cado de direcionar com PHP pode usar isso.

header("Location: LOCAL");

 

no lugar de LOCAL você pode inserir um arquivo.php ou mesmo uma url

Share this post


Link to post
Share on other sites

Aqui o código: 

<?php
	$connect = mysql_connect("127.0.0.1","root","") or die("Erro");
	$db = mysql_select_db("loginregistro",$connect) or die ("Erro");
	
	if (isset($_POST["login"])) {
		$nome = $_POST["Nome"];
		$email = md5($_POST["email"]);
		$password = md5($_POST["password"]);
		$verificar = mysql_query("SELECT * FROM users WHERE email = '$email' AND password = '$password'");
		if (mysql_num_rows($verificar) <= 0) {
			echo "<h3> Dados incorretos </h3>";
		}
		elseif($_POST["Nome"] == "") {
			echo "<h3> Digite um nome</h3>";
		}
		else{
			setcookie("login",$email);
			//header("Location: site.php");
		}
	}
	
	if (isset($_POST["registrar"])) {
		$nome = $_POST["nome"];
		$email = md5($_POST["email_registrar"]);
		$password = md5($_POST["password_registrar"]);
		$password_rep = md5($_POST["password_rep"]);
		$verificar = mysql_query("SELECT * FROM users WHERE email = '$email'");
		if (mysql_num_rows($verificar) > 0) {
			echo "<h3> Está conta já está registrada </h3>";
		}
		elseif ($_POST["nome"]=="") {
			echo "<h3> Digite um Nome </h3>";
		}
		elseif ($_POST["email_registrar"]=="") {
			echo "<h3> Digite um email </h3>";
		}
		elseif ($_POST["password_registrar"]=="") {
			echo "<h3> Digite uma senha </h3>";		
		}
		elseif ($_POST["password_registrar"] != $_POST["password_rep"] ) {
			echo "<h3> Senha incorreta </h3>";
		}
		elseif ($nome =="") {
			echo "<h3> Digite um nome </h3>";	
		}
		else {
			$insert = mysql_query("INSERT INTO users (nome,email,password) VALUES ('$nome','$email','$password')");
			echo "<h3> Conta registrada com sucesso </h3>";
		}
		
	}
	
	
	
?>

<body>
		<form method="POST" action="site.php" >
			<h2>Entrar na Conta</h2>
			<input id="field" type="text" name="Nome" placeholder="Seu nome" />
			<input id="field" type="email" name="email" placeholder="Endereço de E-mail" />
			<input id="field" type="password" name="password" placeholder="Senha" />
			<center><input type="submit" id ="but" name="login" value="Entrar" /></center>
			
		</form>
		
		<form method="POST"  >
			<h2>Criar sua conta</h2>
			<input id="field" type="text" name="nome" placeholder="Nome Completo" />
			<input id="field" type="email" name="email_registrar" placeholder="Endereço de E-mail" />
			<input id="field" type="password" name="password_registrar" placeholder="Senha" />
			<input id="field" type="password" name="password_rep" placeholder="Por favor repita sua Senha" />
			<center><input type="submit" id ="but"  name="registrar" value="Criar conta" /></center>
			
		</form>
	</body>
	

Antes meu código estava sem o Action="site.php" e estava funcionando perfeitamente tipo quando ia fazer o login verificava se o campo nome estava vazio e mandava o aviso de erro e redirecionava para o site.php quando as condições eram atendidas.Ai eu decidi que quando o usuário entra-se no site.php mostra-se o nome dele tipo Bem vindo Luck_. e para eu fazer isso deveria usar o Action="site.php" tipo tudo ocorre bem eu coloco meu nome no login e mostra no site,mas quando eu digito nada no formulário login e aperto no botão entrar ele me leva pro site.php, sem se quer faz a verificação se eu digitei alguma coisa. Tipo se eu digitar uma senha qualquer que nem foi criada ele me redireciona pro site.php.

Share this post


Link to post
Share on other sites

Isso ta acontecendo pq você não tem required no seu form, o required ele exige que as informações sejam preenchidas no seu formulário, as inputs ficariam dessa forma:


<form method="POST" action="site.php">
            <h2>Entrar na Conta</h2>
            <input id="field" type="text" name="Nome" placeholder="Seu nome" required/>
            <input id="field" type="email" name="email" placeholder="Endereço de E-mail" required/>
            <input id="field" type="password" name="password" placeholder="Senha" required/>
            <center><input type="submit" id ="but" name="login" value="Entrar" /></center>

 </form>

Ou seja, como estava sem required, se você apertasse em Entrar o formulário ia fazer a função que ele tava programado, que é te levar pra site.php com ou sem nenhuma informação inserida.

 

Outro erro que você cometeu é enviar os dados de login do formulário pra site.php, mas usar o código que faz a verificação do login no mesmo local do formulário, dessa forma nunca vai ser possível validar o login, pq ou você faz a validação na mesma página e depois redireciona usando header() igual o Omar falou, ou faz a validação do login em site.php.

 

Dei uma consertada, vê se vai aí agora:


<?php
    $connect = mysqli_connect("127.0.0.1","root","" , "loginregistro") or die("Erro");
    
    if (isset($_POST["login"])) {
        $nome = $_POST["Nome"];
        $email = md5($_POST["email"]);
        $password = md5($_POST["password"]);
        $verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email' AND password = '$password'");
        if (mysqli_num_rows($verificar) <= 0) {
            echo "<h3> Dados incorretos </h3>";
        }
        elseif($_POST["Nome"] == "") {
            echo "<h3> Digite um nome</h3>";
        }
        else{
            setcookie("login",$email);
            header("Location: site.php");
        }
    }
    
    if (isset($_POST["registrar"])) {
        $nome = $_POST["nome"];
        $email = md5($_POST["email_registrar"]);
        $password = md5($_POST["password_registrar"]);
        $password_rep = md5($_POST["password_rep"]);
        $verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email'");
        if (mysqli_num_rows($verificar) > 0) {
            echo "<h3> Está conta já está registrada </h3>";
        }
        elseif ($_POST["nome"]=="") {
            echo "<h3> Digite um Nome </h3>";
        }
        elseif ($_POST["email_registrar"]=="") {
            echo "<h3> Digite um email </h3>";
        }
        elseif ($_POST["password_registrar"]=="") {
            echo "<h3> Digite uma senha </h3>";        
        }
        elseif ($_POST["password_registrar"] != $_POST["password_rep"] ) {
            echo "<h3> Senha incorreta </h3>";
        }
        elseif ($nome =="") {
            echo "<h3> Digite um nome </h3>";    
        }
        else {
            $insert = mysqli_query($connect , "INSERT INTO users (nome,email,password) VALUES ('$nome','$email','$password')");
            echo "<h3> Conta registrada com sucesso </h3>";
        }
        
    }
    
    
    
?>

    <body>
        <form method="POST">
            <h2>Entrar na Conta</h2>
            <input id="field" type="text" name="Nome" placeholder="Seu nome" />
            <input id="field" type="email" name="email" placeholder="Endereço de E-mail" />
            <input id="field" type="password" name="password" placeholder="Senha" />
            <center><input type="submit" id ="but" name="login" value="Entrar" /></center>
            
        </form>
        
        <form method="POST"  >
            <h2>Criar sua conta</h2>
            <input id="field" type="text" name="nome" placeholder="Nome Completo" />
            <input id="field" type="email" name="email_registrar" placeholder="Endereço de E-mail" />
            <input id="field" type="password" name="password_registrar" placeholder="Senha" />
            <input id="field" type="password" name="password_rep" placeholder="Por favor repita sua Senha" />
            <center><input type="submit" id ="but"  name="registrar" value="Criar conta" /></center>
            
        </form>
    </body>

Tirei o action="site.php" pq você está fazendo a validação na mesma página do login e já tinha um header() pra fazer o redirecionamento pra site.php. Se você quiser usar o action="site.php", você vai ter que colocar o código de validação do login lá no arquivo site.php, pq do contrário não vai funcionar mesmo, o usuário vai preencher as informações e o formulário vai fazer o papel dele, pegar as informações e levar pra site.php. Troquei os mysql que você tava usando e passei pra mysqli, pq o mysql já não é mais recomendável usar.

 

Testa aí pra ver.

 

Share this post


Link to post
Share on other sites

Tipo mano deu mais ou menos certo, por que eu queria que mostra-se o nome do usuário no site,agora não da mais '-' esse é o código do site.php

<?php
		$name = isset($_POST["Nome"])?$_POST["Nome"]:"Amigo";
		
	
   echo "<header class='masthead' id='bg'>
      
        <div class='intro-text'>
          <div class='intro-lead-in' id='a'>Bem vindos a Unigênios</div>
		  <h1> Bem vindo  $name </h1>
          <div class='intro-heading text-uppercase' id='d'><h4>Venha fazer parte de nossas associações<br>A nossa tecnologia é top de linha</h4></br></div>
		<center> <form class='navbar-form navbar-left' >
		 <a class='btn btn-primary btn-xl text-uppercase js-scroll-trigger'  href='#services' id='in' >Tell Me More</a>
		
        </div>"
	 ?>

 

Share this post


Link to post
Share on other sites

Nesse script do site.php você só consegue capturar o nome do usuário via $_POST , que no caso você pegava pelo formulário. Você pode pegar o nome do usuário que logou via cookie, ficaria dessa forma:

No login onde ta o formulário troca esse trecho:

if (isset($_POST["login"])) {
        $nome = $_POST["Nome"];
        $email = md5($_POST["email"]);
        $password = md5($_POST["password"]);
        $verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email' AND password = '$password'");
        if (mysqli_num_rows($verificar) <= 0) {
            echo "<h3> Dados incorretos </h3>";
        }
        elseif($_POST["Nome"] == "") {
            echo "<h3> Digite um nome</h3>";
        }
        else{
            setcookie("login",$email);
            header("Location: site.php");
        }
    }

por isso:

if (isset($_POST["login"])) {
        $nome = $_POST["Nome"];
        $email = md5($_POST["email"]);
        $password = md5($_POST["password"]);
        $verificar = mysqli_query($connect , "SELECT * FROM users WHERE email = '$email' AND password = '$password'");
        if (mysqli_num_rows($verificar) <= 0) {
            echo "<h3> Dados incorretos </h3>";
        }
        elseif($_POST["Nome"] == "") {
            echo "<h3> Digite um nome</h3>";
        }
        else{
            setcookie("login",$email);
            setcookie("nameUser" , $nome , strtotime("+1 days"));
            header("Location: site.php");
        }
    }

No site.php troca isso:

<?php
		$name = isset($_POST["Nome"])?$_POST["Nome"]:"Amigo";
		
	
   echo "<header class='masthead' id='bg'>
      
        <div class='intro-text'>
          <div class='intro-lead-in' id='a'>Bem vindos a Unigênios</div>
		  <h1> Bem vindo  $name </h1>
          <div class='intro-heading text-uppercase' id='d'><h4>Venha fazer parte de nossas associações<br>A nossa tecnologia é top de linha</h4></br></div>
		<center> <form class='navbar-form navbar-left' >
		 <a class='btn btn-primary btn-xl text-uppercase js-scroll-trigger'  href='#services' id='in' >Tell Me More</a>
		
        </div>"
	 ?>

Por isso:

<?php
		
		if(isset($_COOKIE["nameUser"])){
			$name = $_COOKIE["nameUser"];
		} else {
			$name = "desconhecido";
		}
		
		
		echo "<header class='masthead' id='bg'>
      
        <div class='intro-text'>
          <div class='intro-lead-in' id='a'>Bem vindos a Unigênios</div>
		  <h1> Bem vindo  $name </h1>
          <div class='intro-heading text-uppercase' id='d'><h4>Venha fazer parte de nossas associações<br>A nossa tecnologia é top de linha</h4></br></div>
		<center> <form class='navbar-form navbar-left' >
		 <a class='btn btn-primary btn-xl text-uppercase js-scroll-trigger'  href='#services' id='in' >Tell Me More</a>
		
        </div>";
?>

Testa aí pra ver se vai agora.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sapinn
      Tô fazendo esse forum pq não achei nada que me ajudasse. Tenho um site em que os professores dão temas para as usuarios produzirem textos, basicamente um site de historias. Preciso que o aluno saiba se ja fez um texto sobre aquele determinado tema. Sendo assim tenho duas tabelas no meu banco usuario que cadastra todos os usarios e historia que tem o tema. Quando o aluno vai enviar a historia automaticamente envia seu email. O que eu realmente quero é comparar se o email existe nas duas tabelas se sim ele retorna já foi feito se não ele retorna Nada feito ainda.
    • By Kellyfer
      Ola estou tentando publicar imagens multilas usando o comando FOR mas nao estou acertando, alguem poderia me ajudar??
      /*script*/
      <?php 
      date_default_timezone_set('America/Sao_Paulo');
      session_start();?> 
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <title>Upload de Imagens</title>
      </head>
      <body>
      <!--FORMULÁRIOS-->
      <form action="upload.php" method="post" enctype="multipart/form-data">
          <input type="file" name="arquivos[]" multiple required>
          <input type="submit" value="Publicar">
      </form>
      <p>
      <?php 
      if(isset($_SESSION['erro'])):
          echo $_SESSION['erro'];
          session_unset();
      elseif(isset($_SESSION['sucesso'])):
          echo $_SESSION['sucesso'];
          session_unset();
      endif;
      ?>
      </p>
      <?php 
      /*MOSTRANDO AS IMAGENS NA TELA*/
      $utf8 = header("content-type:text/html;charset= utf-8");
      $conn = new mysqli('localhost','thesim','xthesimx1986','db_galeria');
      $conn->set_charset("utf8");
      $busca_image = "SELECT id, nome_arquivo FROM tb_upload  ORDER BY id DESC";
      $res = mysqli_query($conn, $busca_image);
       if(mysqli_num_rows($res) <= '0'){
           echo "Nenuma imagem encontrada!";
       }else{
           while($res_pos =mysqli_fetch_array($res)){
               $nome_arquivo    =$res_pos[0];
      for($c=0; $c>=10; $c++);
      print "<div class='foto'><img src='uploads/$nome_arquivo$c</div>";
      }
      }
      ?>
      </body>
      </html>
      Imagens anexadas



    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
    • By terra
      Olá,
       Tenho esse codigo
       
      e gostaria de chamar  bairro = dados.address.suburb; aqui nesse função 
       
       
      Agradeço qualquer ajuda
    • By ricardonews
      olá pessoal, eu não estou conseguindo fazer o redirecionamento apos o cadastro para index, eu estou perdido entre os ifs e else, eu acho que só pode ser isso,  quando eu coloco meu código trava, e não faz nada. vou postar o print.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.