Ir para conteúdo

POWERED BY:

Arquivado

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

TruX

Erro com variável em php

Recommended Posts

Pessoal estou com um erro muito chato e que eu não estou sabendo arrumar, seguinte o erro é este:

 

 

Parse error: syntax error, unexpected T_ENDIF in /home/v21ipare/public_html/testes/index.php on line 40

o código do php é este:

<?php
	if(isset($_POST['acao']) && $_POST['acao'] == 'logar');
		$email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));
		
		if($email == ''){}else{
			$pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?");
			$pegar_user->execute(array($email));
			if($pegar_user->rowCount() == 0){
				echo '<script>alert("Usuário não encontrado")</script>';
			}else{
				$fetch = $pegar_user->fetchObject();
				$_SESSION['id_user'] = $fetch->id;
				echo '<script>alert("Login efetuado");location.href="subindex.php"</script>';
			}
		}
		endif;
?>

o erro que é na linha 40 é isso endif; alguém pode me ajudar a arrumar esse erro desagradável?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comentei algumas alterações.

	if(isset($_POST['acao']) && $_POST['acao'] == 'logar'){ //Retirei o ; do final e coloquei {

$email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));

 

if(!empty(trim($email))){// Melhor do que usar if($email == ''){}else{

$pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?"); //Tem certeza que é "email = ?" que você quer ?

$pegar_user->execute(array($email));

if($pegar_user->rowCount() == 0){

echo '<script>alert("Usuário não encontrado")</script>';

}else{

$fetch = $pegar_user->fetchObject();

$_SESSION['id_user'] = $fetch->id;

echo '<script>alert("Login efetuado");location.href="subindex.php"</script>';

}

}

}// troquei o endif por }

Compartilhar este post


Link para o post
Compartilhar em outros sites

pixelrafael fiz do jeito que você mandou mais não obtive resultados deu erro!

Raoni Botelho Sporteman o seu código também não resultou, deu este erro:

 

Fatal error: Can't use function return value in write context in /home/v21ipare/public_html/testes/index.php on line 29

 

 

Alguém pode me ajudar por favor??? eu acho que o erro ta na endif;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tire o trim de dentro do if() ficando assim:

 

if (isset($_POST['acao']) && $_POST['acao'] == 'logar') {

    $email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));
    $email = trim($email);

    if (!empty($email)) {
        $pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?");
        $pegar_user->execute(array($email));
        if ($pegar_user->rowCount() == 0) {
            echo '<script>alert("Usuário não encontrado")</script>';
        } else {
            $fetch = $pegar_user->fetchObject();
            $_SESSION['id_user'] = $fetch->id;
            echo '<script>alert("Login efetuado");location.href="subindex.php"</script>';
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raoni Botelho Sporteman obrigado, estamos quais la mais tem um erro ainda, quando eu digito algum e-mail errado que não esta cadastrado no banco de dados da a seguinte alerta Usuário não encontrado, até ai tudo certo... mais quando eu digito algum e-mail que esta cadastrado no banco de dados da o mesmo alerta e ainda fica na index deveria da o alerta Login efetuado e deveria ser redirecionado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
o trecho filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING) deve estar retornando NULL. De um echo antes dele para ver se esta recebendo o $_POST['email'];


Edit:


Se estiver recebendo o $_POST['email'] ok, alternativamente você pode substituir por filter_var($_POST['email'], FILTER_SANITIZE_STRING) ou ainda filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raoni Botelho Sporteman, não entendi muito bem poderia me explicar melhor não entendo muita coisa em PHP sou novo nessa linguagem. Se possível poderia me mandar o código funcionando ou me explica melhor, confesso eu sou muito burro. :assobiando:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione em vermelho:

echo $_POST['email'];

if (isset($_POST['acao']) && $_POST['acao'] == 'logar') {

$email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));
$email = trim($email);

if (!empty($email)) {
$pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?");
$pegar_user->execute(array($email));
if ($pegar_user->rowCount() == 0) {
echo '<script>alert("Usuário não encontrado")</script>';
} else {
$fetch = $pegar_user->fetchObject();
$_SESSION['id_user'] = $fetch->id;
echo '<script>alert("Login efetuado");location.href="subindex.php"</script>';
}
}
}

tente inserir um cadastro pelo formulário, se receber um erro Undefined index: email in.... Então o problema é no formulário e não neste arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, também não resultou... olha o código da minha index completa:

<?php
	session_start();
	include_once "config.php";
	require_once('classes/BD.class.php');
	BD::conn();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Entre no chat</title>
<style type="text/css">
* {margin:0; padding:0;}
body {background:#f4f4f4;}
div#formulario{width:500px; padding:5px; height:100px; background:#fff; border:1px solid #333; position:absolute; left:50%; top:50%; margin-left:-250px; margin-top:-50px;}
div#formulario span{font: 18px "Trebuchet MS", tahoma, arial; color:#036; float:left; width: 100%; margin-bottom: 10px;}
div#formulario input[type=text]{padding:5px; width: 485px; border: 1px solid #ccc: outline:none; font:16px tahoma, arial; color:#666;}
div#formulario input[type=text]:focus{border-color:#036;}
div#formulario input[type=submit]{padding:4px 6px; background:#069; font:15px tahoma, arial; color:#fff;border:1px solid #036;float:left; margin-top:5px; text-align:center; width:95px; text-shadow: #000 0 1px 0;}
div#formulario input[type=submit]:hover{cursor:pointer; background:#09f;}
</style>
</head>

<body>
<?php
echo $_POST['email'];

if (isset($_POST['acao']) && $_POST['acao'] == 'logar') {

$email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));
$email = trim($email);

if (!empty($email)) {
$pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?");
$pegar_user->execute(array($email));
if ($pegar_user->rowCount() == 0) {
echo '<script>alert("Usuário não encontrado")</script>';
} else {
$fetch = $pegar_user->fetchObject();
$_SESSION['id_user'] = $fetch->id;
echo '<script>alert("Login efetuado");location.href="chat.php"</script>';
}
}
}
?>

<div id="formulario">
	<span>Digite seu e-mail</span>
	<form action="" method="post" enctype="multipar/form-data">
		<label>
			<input type="text" name="email"/>
		</label>
	<input type="hidden" name="acao" value="logar"/>
	<input type="submit" value="Logar"/>
	</form>
</div>
</body>
</html>

Me ajuda por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguma coisa o echo deve mostrar, ou o erro ou o email inserido no login.

 

em action="" tente colocar o nome do arquivo ex.: action="index.php"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se o seu código funciona:

 

<?php
	
	if( isset($_POST['acao']) && $_POST['acao'] == 'logar' ){
		$email = strip_tags(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING));
		if($email != ''){
			$pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?");
			$pegar_user->execute(array($email));
			
			if($pegar_user->rowCount() == 0)
				echo '<script>alert("Usuário não encontrado")</script>';

			else{
				$fetch = $pegar_user->fetchObject();
				$_SESSION['id_user'] = $fetch->id;
				echo '<script>alert("Login efetuado");location.href="subindex.php"</script>';
			}
		}
	}	
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja essa sua classe BD se esta ok, veja se esta conectando se retornado certinho. Use algum tratamento de erros nela com exception ou outro, sem tratamento de erros fica complicado de achar o que acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raphael não deu certo, sempre fala que Usuário não encontrado mesmo tento no Banco de Dados.

Raoni aqui esta minha BD e esta tudo certinho acredito eu

<?php
class BD{
	private static $conn;
	public function __construct(){}
	
	public function conn(){
		if(is_null(self::$conn)){
			self::$conn = new PDO('mysql:host='.HOST.';bdname='.BD.'', ''.USER.'', ''.PASS.'');
		}
		return self::$conn;
	}
}
?>

Por favor não desista de me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta sua classe BD não vai funcionar. De onde vem as constantes HOST, BD, USER? Pesquise sobre encapsulamento e escopo de variável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raoni não entendi me ajuda ai por favor

aqui esta a conexão da BD que é a config.php

<?php
	define('HOST', 'localhost');
	define('BD', 'TruX_chat');
	define('USER', 'Usuario');
	define('PASS', '0001597');
?>

me ajuda por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os parâmetros estão errados no new PDO(), não é bdname, mas dbname, e não são para ficar entre " ' ".

 

Segue uma implementação mais adequada:

 

<?php

interface IBanco{
	
	const HOST = 'SEU HOST';
	const USER = 'SEU USUARIO';
	const PASS = 'SUA SENHA';
	const BD   = 'SEU BANCO';
	
	public function conn();
}

class BD implements IBanco{
	private static $conn;
	public function __construct(){}
	
	public function conn(){
		return new PDO('mysql:host='. self::HOST . ';dbname=' . self::BD , self::USER , self::PASS );
	}
}



$pegar_user = BD::conn()->prepare("SELECT id FROM `usuarios` WHERE email = ?");;
$pegar_user->execute(array($email));

echo $pegar_user->rowCount();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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