CharliNBH 0 Denunciar post Postado Junho 24, 2015 Olá pessoal, sou novo no fórum e em PHP. Estudando um pouco achei este fórum que já me ajudou muito quando eu programava em VB. Bem vamos aos códigos: Classe login: <?php require_once 'C:/wamp/www/colaborador/classes/DB.php'; abstract class Login extends DB{ public function findLogin($nome, $senha){ $sql = "SELECT * FROM $this->table WHERE nome = :nome, pass = :pass"; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $nome, PDO::PARAM_STR); $stmt->bindParam(':pass',$senha, PDO::PARAM_STR); $stmt->execute(); return $stmt->fetch(); } } depois.. <?PHP // Descrição se $_POST['nome e senha'] existem if (isset($_POST['logar'])){ $nome = $_POST['nome']; $senha = $_POST['senha']; $resultado = $Login->findLogin($nome,$senha); // O ERRO ACONTECE AQUI. VARIÁVEL INDEFINIDA E Call to a member function findLogin() on a non-objec //Caso consiga logar cria a sessão if (mysql_num_rows ($resultado) > 0) { // session_start inicia a sessão session_start(); $_SESSION['nome'] = $nome; $_SESSION['senha'] = $senha; } //Caso contrário redireciona para a página de autenticação else { //Destrói session_destroy(); //Limpa unset ($_SESSION['nome']); unset ($_SESSION['senha']); //Redireciona para a página de autenticação header('location:sys.php'); } } ?> NÃO ENTENDO. NA TEORIA ESTÁ TUDO CERTO. Compartilhar este post Link para o post Compartilhar em outros sites
r.lacerda83 0 Denunciar post Postado Junho 24, 2015 Onde vc instanciou a variavel $Login?Só consegui ver que vc criou a classe, mas não vi onde vc inicializou essa variável. Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Junho 24, 2015 Só uma recomendação... Não utiliza isso assim não: require_once 'C:/wamp/www/colaborador/classes/DB.php'; Que esse é o caminho físico da sua máquina, utiliza assim: require_once '../classes/DB.php'; Esse é um exemplo vc tem que ver certinho onde está o arquivo que vc esta chamando... Exemplo na seguinte estrutura.. COLABORADOR (pasta) - index.php - CASSES (pasta) - DB.php dentro do arquivo index.php vc chamaria require_once 'classes/DB.php'; Nessa sua segunda parte vc deve chamar a classe... $Login = new Login(); Compartilhar este post Link para o post Compartilhar em outros sites
CharliNBH 0 Denunciar post Postado Junho 24, 2015 Pessoal fiz as correções. Agora acontece um erro apenas na linha com o execute(): PDOException: in C:\wamp\www\colaborador\classes\Login.php on line 12 Compartilhar este post Link para o post Compartilhar em outros sites
Diego Rinno 35 Denunciar post Postado Junho 24, 2015 Posta a linha 12 ou então olha ela pra ver qual o problema.... É só um execute que tem ali? Compartilhar este post Link para o post Compartilhar em outros sites
CharliNBH 0 Denunciar post Postado Junho 24, 2015 a linha 12 é o Execute() da classe Login. Acho que algo no sql que esta na classe Login descrita no primeiro post aqui dessa discussão. valew galera. a classe está assim: class Login extends DB{ public function findLogin($nome, $senha){ $sql = "SELECT COUNT (*) FROM tbl_colaboradores WHERE nome = :nome and pass = :senha "; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $nome, PDO::PARAM_STR); $stmt->bindParam(':senha', $senha, PDO::PARAM_STR); $stmt->execute(); return $stmt->fetch(); } Galera consegui. Ficou assim: class Login extends DB{ public function findLogin($nome, $senha){ $sql = "SELECT * FROM tbl_colaboradores WHERE nome = :nome and pass = :senha "; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $nome, PDO::PARAM_STR); $stmt->bindParam(':senha', $senha, PDO::PARAM_STR); $stmt->execute(); return $stmt->fetch(PDO::FETCH_NUM); } --------------------------------------------------------------------------------------------------------------------------------------------------- <?PHP $Login = new Login; // Descrição se $_POST['nome e senha'] existem if (isset($_POST['logar'])){ $nome = $_POST['nome']; $senha = $_POST['senha']; //Redireciona para a página do sistea $resultado = $Login->findLogin($nome, $senha); //Caso consiga logar cria a sessão if ( ($resultado) > 0) { // session_start inicia a sessão session_start(); $_SESSION['nome'] = $nome; $_SESSION['senha'] = $senha; //Redireciona para a página de autenticação header('location:sys.php'); } //Caso contrário redireciona para a página de autenticação else { //Destrói session_destroy(); //Limpa unset ($_SESSION['nome']); unset ($_SESSION['senha']); //Redireciona para a página de autenticação header('location:index.php'); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites