TruX 0 Denunciar post Postado Novembro 12, 2013 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
pixelrafael 7 Denunciar post Postado Novembro 12, 2013 aqui: if(isset($_POST['acao']) && $_POST['acao'] == 'logar'); é ":" ao invés de ";", mas recomendo colocar {} no lugar do endif, para n causa confusão. Compartilhar este post Link para o post Compartilhar em outros sites
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 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
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 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
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 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
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 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
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 Sem resultados amigo, por favor me ajuda eu preciso muito conectar o e-mail no chat.php Compartilhar este post Link para o post Compartilhar em outros sites
Raphael Barros 48 Denunciar post Postado Novembro 12, 2013 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
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 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
Raphael Barros 48 Denunciar post Postado Novembro 12, 2013 Imprime o valor de $pegar_user->rowCount(); Compartilhar este post Link para o post Compartilhar em outros sites
TruX 0 Denunciar post Postado Novembro 12, 2013 Raphael como assim? poderia falar como eu não sei desculpa Compartilhar este post Link para o post Compartilhar em outros sites
raonibs 64 Denunciar post Postado Novembro 12, 2013 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
TruX 0 Denunciar post Postado Novembro 12, 2013 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
Raphael Barros 48 Denunciar post Postado Novembro 12, 2013 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