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.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

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