Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal, seguinte, estou desenvolvendo um sistema, onde estou aprendendo pela web, porém a mesma não funciona em minha maquina, ja procurei o erro, mas simplesmente não completa a conexão, espero que possam me ajudar:
O que acontece, o sistema identifica o email inserido pelo usuário e se o email ja existir no banco de dados ele deveria encaminhar e liberar o acesso à pagina plataforma.php para o usuário logado, porém, ao tentar logar, simplesmente continua na mesma pagina (index.php) e some todos os inputs.
Segue o codigo
index.php
<?php
session_start();
include_once "defines.php";
require_once('classes/BD.class.php');
BD::conn();
define('url', 'http://localhost/proig.com.br');
$paginas = array ('plataforma','','','');
$url = explode ('/', $_GET['url']);
$arquivo = $url[0];
$identificador = $url[1];
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Teste de login diferente</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="<?php echo url?>/css/estilo.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
<div id="acesso">
<div id="login">
<div id="logoInicial"></div>
<h1 class="tituloTxt">Acessar Plataforma</h1>
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'logar'){
$email = strip_tags(trim(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING)));
if($email == ''){
echo'informe seu email';
}else{
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'email' = ?");
$pegaUSer->execute(array($email));
if($pegaUser->rowCount() == 0){
echo'Não encontramos este login';
}else{
while($row = $pegaUser->fetchObject()){
$_SESSION['email_logado'] = $email;
$_SESSION['id_user'] = $row->id;
header("Location: plataforma.php");
}
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="text" name="email" class="inputInicial2" placeholder="Digite seu email"/>
<input type="submit" value="Entrar" class="btnInicial"/>
<input type="hidden" name="acao" value="logar" />
</form>
</div>
<div id="formulario">
<div id="logoInicial"></div>
<form action="" method="post">
<input type="text" name="nome" class="inputFormulario" placeholder="nome"/>
<input type="text" name="sobrenome" class="inputFormulario2" placeholder="sobrenome"/>
<input type="text" name="email" class="inputFormulario3" placeholder="email"/>
<input type="text" name="login" class="inputFormulario3" placeholder="login"/>
<input type="password" name="senha" class="inputFormulario3" placeholder="Senha"/>
<input type="submit" value="Cadastrar" class="btnFormulario"/>
</form>
<div id="termo">
Ao clicar em cadastrar você está ciente de todos os <a href="#">termos</a> do site.
</div>
</div>
</div>
</div>
<div id="rodape">
Pro IG - Sistema de cadastro da raça Índio Gigante © 2016
</div>
</body>
</html>
plataforma.php
<?php
session_start();
include_once "defines.php";
require_once('classes/BD.class.php');
BD::conn();
if(!isset($_SESSION['email_logado'], $_SESSION['id_user'])){
header("Location: index.php");
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Pro IG - Sistema de gerenciamento e controle de Indio Gigante</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="<?php echo url?>/css/estilo.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<header>
<div id="logo"><img src="<?php echo url?>/img/logo.png"/></div>
<input type="checkbox" id="btn_menu">
<label for="btn_menu"><img src="img/ico-menu.png"></label>
<nav class="menu">
<ul>
<li><a href="<?php echo url?>/">INICIO</a></li>
<li><a href="<?php echo url?>/cadastro">CADASTRO</a></li>
<li><a href="<?php echo url?>/">FORMULARIO</a></li>
<li><a href="<?php echo url?>/">CONTATO</a></li>
</ul>
</nav>
</header>
<div id="conteudo">
<?php
if($arquivo != '' && in_array($arquivo, $paginas)){
include"$arquivo.php";
}elseif($arquivo == ''){
include 'home.php';
}
else{
include '404.php';
}
?>
</div>
<div id="rodape">
Pro IG - lSistema de cadastro da raça Índio Gigante © 2016
</div>
</body>
</html>
.htacess
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
defines.php
<?php
define('HOST', 'localhost');
define('DB', 'proig');
define('USER', 'root');
define('PASS', '');
?>
classes/BD.class.php
<?php
class BD{
private static $conn;
public function __construct(){}
public static function conn(){
if(is_null(self::$conn)){
self::$conn = new PDO('mysql:host='.HOST.';dbname='.DB.'', ''.USER.'', ''.PASS.'');
}
return self::$conn;
}
}
?>: Undefined variable: pegaUSer in E:\sites\proig.com.br\index.php on line 43
Fatal error: Call to a member function execute() on null inE:\sites\proig.com.br\index.php on line 43
Notice: Undefined variable: pegaUSer in E:\sites\proig.com.br\index.php on line 43
Fatal error: Call to a member function execute() on null inE:\sites\proig.com.br\index.php on line 43
tenta fazer assim na linha: 43 acho
$pegaUSer->execute();
ah sim, os nomes estão errados tmb... pegarUser e pegarUSer...
ah sim, os nomes estão errados tmb... pegarUser e pegarUSer...
Muito obrigado, varrir todo o script e não me atentei a esse S maiusculo!
Agora não aparece mais o erro, porem ele para na frase "Não encontramos este login"
Creio que deva ter algum erro aqui:
else{
while($row = $pegaUser->fetchObject()){
$_SESSION['email_logado'] = $email;
$_SESSION['id_user'] = $row->id;
header("Location: plataforma.php");
}Então tenta so arrumar esse nome da variaisvel ai: $pegaUSer->execute(array($email));
Então tenta so arrumar esse nome da variaisvel ai: $pegaUSer->execute(array($email));
Continua não logando
da um print_r abaixo dessa linha:
echo'Não encontramos este login';
print_r($pegarUser);Notice: Undefined variable: pegarUser in E:\sites\proig.com.br\index.php on line 47
cola teu index.php aqui novamente.
Qual e tua linha 47?
<?php
session_start();
include_once "defines.php";
require_once('classes/BD.class.php');
BD::conn();
define('url', 'http://localhost/proig.com.br');
$paginas = array ('plataforma','','','');
$url = explode ('/', $_GET['url']);
$arquivo = $url[0];
$identificador = $url[1];
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Pro IG - Sistema de gerenciamento e controle de Indio Gigante</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="<?php echo url?>/css/estilo.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
<div id="acesso">
<div id="login">
<div id="logoInicial"></div>
<h1 class="tituloTxt">Acessar Plataforma</h1>
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'logar'){
$senha = strip_tags(trim(filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING)));
if($senha == ''){
echo'informe sua senha';
}else{
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'senha' = ?");
$pegaUser->execute(array($senha));
if($pegaUser->rowCount() == 0){
echo'Não encontramos este login';
print_r($pegarUser);
}else{
while($row = $pegaUser->fetch()){
$_SESSION['email_logado'] = $senha;
$_SESSION['id_user'] = $row->id;
header("Location: plataforma.php");
}
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="password" name="senha" class="inputInicial2"/>
<input type="submit" value="Entrar" class="btnInicial"/>
<input type="hidden" name="acao" value="logar" />
</form>
</div>
<div id="formulario">
<div id="logoInicial"></div>
<form action="" method="post">
<input type="text" name="nome" class="inputFormulario" placeholder="nome"/>
<input type="text" name="sobrenome" class="inputFormulario2" placeholder="sobrenome"/>
<input type="text" name="email" class="inputFormulario3" placeholder="email"/>
<input type="text" name="login" class="inputFormulario3" placeholder="login"/>
<input type="password" name="senha" class="inputFormulario3" placeholder="Senha"/>
<input type="submit" value="Cadastrar" class="btnFormulario"/>
</form>
<div id="termo">
Ao clicar em cadastrar você está ciente de todos os <a href="#">termos</a> do site.
</div>
</div>
</div>
</div>
<div id="rodape">
Pro IG - Sistema de cadastro da raça Índio Gigante © 2016
</div>
</body>
</html>
Neste caso, minha linha 47 é justamente a que vc mandou colocar, o print_r
não e $pegarUser e $pegaUser. altera lá e tenta novamente.
não e $pegarUser e $pegaUser. altera lá e tenta novamente.
Desculpe minha falta de atenção
Apareceu isso:
loginPDOStatement Object ( [queryString] => SELECT * FROM 'usuarios' WHERE 'senha' = ? )
Não achei no teu script esse select, lá tem e email, ai na mensagem ta senha... consegue descobrir isso ai?
desculpe amigo, leia se email, senha
Troquei todo o codigo por senha ao inves de email, vou mandar o codigo corrigido
PDOStatement Object ( [queryString] => SELECT * FROM 'usuarios' WHERE 'senha' = ? )
<?php
session_start();
include_once "defines.php";
require_once('classes/BD.class.php');
BD::conn();
define('url', 'http://localhost/proig.com.br');
$paginas = array ('plataforma','','','');
$url = explode ('/', $_GET['url']);
$arquivo = $url[0];
$identificador = $url[1];
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Pro IG - Sistema de gerenciamento e controle de Indio Gigante</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="<?php echo url?>/css/estilo.css"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
<div id="acesso">
<div id="login">
<div id="logoInicial"></div>
<h1 class="tituloTxt">Acessar Plataforma</h1>
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'logar'){
$senha = strip_tags(trim(filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING)));
if($senha == ''){
echo'informe sua senha';
}else{
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'senha' = ?");
$pegaUser->execute(array($senha));
if($pegaUser->rowCount() == 0){
echo'Não encontramos sua senha';
print_r($pegaUser);
}else{
while($row = $pegaUser->fetch()){
$_SESSION['senha_logada'] = $senha;
$_SESSION['id_user'] = $row->id;
header("Location: plataforma.php");
}
}
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="password" name="senha" class="inputInicial2"/>
<input type="submit" value="Entrar" class="btnInicial"/>
<input type="hidden" name="acao" value="logar" />
</form>
</div>
<div id="formulario">
<div id="logoInicial"></div>
<form action="" method="post" enctype="multipart/form-data">
<input type="text" name="nome" class="inputFormulario" placeholder="nome"/>
<input type="text" name="sobrenome" class="inputFormulario2" placeholder="sobrenome"/>
<input type="text" name="email" class="inputFormulario3" placeholder="email"/>
<input type="text" name="login" class="inputFormulario3" placeholder="login"/>
<input type="password" name="senha" class="inputFormulario3" placeholder="Senha"/>
<input type="submit" value="Cadastrar" class="btnFormulario"/>
</form>
<div id="termo">
Ao clicar em cadastrar você está ciente de todos os <a href="#">termos</a> do site.
</div>
</div>
</div>
</div>
<div id="rodape">
Pro IG - Sistema de cadastro da raça Índio Gigante © 2016
</div>
</body>
</html>abaixo dessa linha
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'senha' = ?");
Coloca isso:
$pegaUser->bindParam(1, '$senha');
>
abaixo dessa linha
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'senha' = ?");
Coloca isso:
$pegaUser->bindParam(1, '$senha');
Fatal error: Cannot pass parameter 2 by reference inE:\sites\proig.com.br\index.php on line 43
Tenta fazer assim amigo... desculpe estou no trabalho e nem to testando so falando pra tu fazer kkk
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'senha' = :senha");
$pegaUser->bindValue(':senha', $senha); //se não der assim, tenta com este outro
//$pegaUser->bindParam(':senha', $senha);
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined inE:\sites\proig.com.br\index.php on line 46
Não encontramos sua senhaPDOStatement Object ( [queryString] => SELECT * FROM 'usuarios' WHERE 'senha' = :senha )
Tenta assim... não to conseguindo ver erro kkk to fazendo no bloco de notas isso...
$pegaUser = BD::conn()->prepare("SELECT * FROM 'usuarios' WHERE 'senha' = :senha");
$pegarUser->bindParam(':senha'; $senha);
$pegaUser->execute();erro no servidor 500
Seguinte.. descobri o erro... tem um problema na sua lógica ai.... mas testa antes e veja o que eu alterei... e te explico depois o que era se voce nao conseguir ver o erro.
Copia e substitui essas linhas no seu
if(isset($_POST['acao']) && $_POST['acao'] == 'logar'){
$email = strip_tags(trim(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING)));
if($email == ''){
echo'informe seu email';
}else{
$pegaUser = BD::conn()->prepare("SELECT * FROM usuarios WHERE 'email' = ':senha'");
$pegaUser->bindParam(':senha', $senha);
$pegaUser->execute();
if($pegaUser->rowCount() == 0){
echo'Não encontramos este login';
}else{
$pegaUser->execute();
$row = $pegaUser->fetchObject();
$_SESSION['email_logado'] = $email;
$_SESSION['id_user'] = $row->id;
header("Location: plataforma.php");
}
}
}fiz da forma q vc passou e mesmo assim não acessa, coisa louca esse codigo meu
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'logar'){
$senha = strip_tags(trim(filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING)));
if($senha == ''){
echo'informe sua senha';
}else{
$pegaUser = BD::conn()->prepare("SELECT * FROM usuarios WHERE 'senha' = ':senha'");
$pegaUser->bindParam(':senha', $senha);
$pegaUser->execute();
if($pegaUser->rowCount() == 0){
echo'Não encontramos sua senha';
}else{
$pegaUser->execute();
$row = $pegaUser->fetchObject();
$_SESSION['senha_logado'] = $senha;
$_SESSION['id_user'] = $row->id;
header("Location: plataforma.php");
}
}
}
?>aqui comigo deu certo....
apresentou alguma mensagem de erro?
coloca isso dentro da index.php:
e tenta logar novamente, ele vai apresentar os erros/warnings.. posta aqui novamente.