Ir para conteúdo
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 :)

Compartilhar este post


Link para o post
Compartilhar em outros 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/

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

Compartilhar este post


Link para o post
Compartilhar em outros 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>"
	 ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por edvaldo123
      Olá para todos, preciso de um código em PHP ou HMTL que mostre cotações de moedas, pra colocar em um site de notícias. Vou deixar um link abaixo onde tem exatamente o que preciso, porém queria remover algumas linhas desse código para não identificar seu site de origem.

      http://www.precododolar.com/widgets/cotacao.php
    • Por violin101
      Caros amigos
       
      Gostaria de tirar uma dúvida com os amigos.
       
      No Codeiginter tem como visualizar um arquivo .PDF dentro do sistema ?
       
      Por exemplo:
             o usuário realizou um download do arquivo --> DadosEmpresa.pdf
       
      Quando clicar em cima do arquivo, tem como visualizar em uma página o arquivo ?   E como faria ?
       
      Grato,
       
      Cesar
    • Por Ivana_Silva
      Olá a todos que estão lendo!
       
      Preciso de uma função PHP que filtre 2 padrões de campos a partir do caractere barra(|), preservando a linha.
       
      Em uma caixa de texto vou colar valores assim:
      0001|qwerty
      0002|091234
      0003|09164867
      0004|ab12312
      ...
      A caixa de texto:
      <form id="form" name="form" method="post" action=""> <textarea name="lista" type="text" id="lista" cols="48" rows="5" size="600" /></textarea> <br /> <br /> <button type="submit">Separar</button> </form> <?php ?> Quando eu clicar no botão Separar, preciso que o código filtre e mostre apenas as linhas que, após barra " | " possuam números inteiros de 6 e 8 dígitos(sem letras, símbolos ou pontos).
       
      Exemplo:
      Dados colados na caixa de texto:
      0001|qwerty
      0002|091234
      0003|09164867
      0004|ab12312
       
      Dados filtrados após clicar no botão Separar:
      0002|091234
      0003|09164867
       
      Filtrou apenas os campos que após a barra "|" possuem 6 e 8 dígitos(Nem mais nem menos), não é pra filtrar campos com letras ou números e letras, se tiver letra após a barra já descarta... É pra Filtrar e mostrar apenas as linhas que possuem 6 e 8 dígitos após a barra.
      Agradecida se alguém puder ajudar!
       
    • Por RSN
      Boa Noite, 
      Gostaria de saber se existe a possibilidade de gravar além do id do option value outra variavel, para enviar via post.
      <div class="form-group"> <label class="col-md-4 control-label" for="txtgrupo">Tipo de Pagamento : </label> <div class="col-md-4"> <select id="" class="selectpicker" data-live-search="true" name="tipo_pagamento" > <?php $query = mysql_query("SELECT * FROM tipo_pagamento ORDER BY id ASC"); while($result = mysql_fetch_array($query)) { echo '<option value="'.$result["id"].'">'.$result["nome_tipo"].'</option>'; } ?> </select> </div> </div>  
    • Por JeanTDZ
      Eu tenho um form com algumas informações etc. O form envia pro banco de dados e tudo mais, funcional.
       
      Alguém teria algum exemplo que após o submit, o form é transformado em pdf/doc e direcionado para uma pasta/ftp já criada.?
×

Informação importante

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