[RESOLVIDO] Formulário PHP não envia dados via POST

12 respostas
M

Olá pessoal.
Bem, estou tendo um problema que não consigo resolver de jeito nenhum, já tentou inumeras soluções mas nenhuma funcionou.
Estou tentando fazer uma tela de login utilizando php. O arquivo login.php contem os um formulário de login que deve enviar as informações via POST para o arquivo dados.php e esse verificaria se os dados estão corretos. Acontece que não consigo recuperar os dados via POST. O GET funciona, mas o POST não. Observando as ferramentas do desenvolvedor do chrome, na aba network percebi que a requisição é enviada via GET mesmo tendo definido como POST. Abaixo o código:

Login.php

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
</head>
<body>
	
	<form  method="POST" action="dados.php">
		<label>Login</label>
		<input type="text" name="usuario" class="form-control" id="usuario" autocomplete="off" autofocus required>

		<label for="senha">Senha</label>
		<input type="password" class="form-control" id="pass" name="pass" autocomplete="off" required>

		<input type="submit" value="Login" id="entrar" name="entrar">
	</form>

		<!-- Scripts -->
	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/ocultarSenha.js"></script>

</body>
</html>

Dados.php

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
</head>
<body>
	<?php
		// Conexão com o banco
		$bdServidor = '127.0.0.1';
		$bdUsuario = 't3carvvo_MatheusEdnei';
		$bdSenha = 't3carvvo_#';
		//$bdUsuario = 'root';
		//$bdSenha = 'root';
		$bdBanco = 't3carvvo_pessoas';

		$conexao = mysqli_connect($bdServidor, $bdUsuario, $bdSenha, $bdBanco);

		if(mysqli_connect_errno($conexao)) {
			echo "Problemas para conectar no banco. Erro:";
			echo mysqli_connect_errno;
			die();
		}

		if (isset($_POST['usuario'])) {
			echo "entrei";
			$usuario = $_POST['usuario'];
		} 
		if (isset($_POST['pass'])) {
			echo "entrei na senha";
			$pass = MD5($_POST['pass']);	
		} 
		//$entrar = $_POST['entrar'];
		$arroba = '@';
		echo $usuario;
		echo $pass;
		$contem = strpos($usuario, $arroba);

		if($contem === false){
			echo "cpf";

		} else {
			echo "email";
			$sqlSelecionarEmail = "SELECT email FROM pessoa WHERE email = '$login'";
			$selecaoEmail = mysqli_query($sqlSelecionarEmail,$conexao);
			$arrayEmail = mysqli_fetch_array($selecaoEmail);
			print($arrayEmail);
			$loginarray = $arrayEmail['email'];

			$sqlSelecionarSenha = "SELECT senha FROM pessoa WHERE senha = '$senha'";
			$selecaoSenha = mysqli_query($sqlSelecionarSenha,$conexao);
			$arraySenha = mysqli_fetch_array($selecaoSenha);
			$senhaArray = $arraySenha['senha'];

			if(($loginarray == $login) and ($senhaArray == $senha) ) {
				echo"
				<script language='javascript' type='text/javascript'>
					alert('Login e senha corretos');
					window.location.href='dados.php';
				</script>
				";
			} else {
				echo"
				<script language='javascript' type='text/javascript'>
					alert('Login ou senha incorretos');
					window.location.href='dados.php';
				</script>
				";
			}

		}

	?>
</body>
</html>

12 Respostas

Kassioburgadon

Já tentou utilizar via Session?

session_start();
$_SESSION[‘usuario’]
$_SESSION[‘pass’]

Tenta alterar o POST para SESSION

M

Mas nesse caso eu necessito gravar os dados em um banco de dados. Via Session isso seria possível?

M

Testei com o session e ficou no mesmo, ainda não consigo pegar os valores. Recebo a mensagem: Notice : Undefined variable: usuario

Kassioburgadon

Antes de realizar a conexão, colocando
echo $_POST[‘usuario’];

Ele encontra o usuario digitado na pagina Login.php?
digitei aqui e aparece normalmente

M

Não, ele não chega a encontrar, é como se o usuário estivesse vazio. Qual ambiente esta utilizando?

Kassioburgadon

Estou utilizando o WampServer,
Segue alguns print,

Não terá a conexão com o banco, mas, ele deu um echo


M

É, é estranho. Aqui eu também consigo imprimir os dados mas quando eu os salvo em uma variável para fazer consultar no banco eles me retornam:

Warning : mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\t3carvvo_tarefa1\dados.php on line 39

Warning : mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\t3carvvo_tarefa1\dados.php on line 40

Warning : mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\t3carvvo_tarefa1\dados.php on line 46

Warning : mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\t3carvvo_tarefa1\dados.php on line 47

Notice : Undefined variable: usuario in C:\xampp\htdocs\t3carvvo_tarefa1\dados.php on line 50

Notice : Undefined variable: pass in C:\xampp\htdocs\t3carvvo_tarefa1\dados.php on line 50

Kassioburgadon

Neste campo não deveria ser ‘$usuario’" em vez de ‘$login’" ?

Em momento algum você declara $login somente $usuario

O select está trazendo null com login

SELECT email FROM pessoa WHERE email = ‘’

E aqui não deveria ser $pass?

M

É, foram algumas modificações que eu fiz, mas eu já concertei. Mesmo assim, ele não funciona. Dei um var_dump($_POST); e ele não me retorna array{0}. Aparentemente ele não ta conseguindo pegar os valores enviados.

Kassioburgadon

Me mostra a página completa do Dados.php, quero verificar em quais Echo ele está estrando

M

Desculpe pela demora, então, depois de muito tentar consegui resolver esse problema com algumas modificações. Eu troquei o nome do arquivo para “valida.php” e a partir dele eu chamei o arquivo “dados.php” salvando o usuário logado na sessão para selecionar as informações dele no banco de dados. Com isso funcionou perfeitamente. Obrigado pelo seu tempo e esforço : ).

cpontes

me explica direitinho isso?
algumas coisas nao entendi como: a partir dele eu chamei o arquivo “dados.php” salvando o usuário logado na sessão para selecionar as informações dele no banco de dados.

-Estou com o mesmo problema :confused:

Criado 13 de março de 2019
Ultima resposta 25 de mai. de 2020
Respostas 12
Participantes 3