Ir para conteúdo

Arquivado

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

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

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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