Publicidade

DinhoPHP

Members
  • Total de itens

    112
  • Registro em

  • Última visita

Reputação

1 Comum

Sobre DinhoPHP

  • Data de Nascimento 05-06-1982

Informações Pessoais

  • Sexo
    Masculino
  1. Tive o mesmo problemas hoje e este tópico me ajudou muito, porém, quando uso o PHPStorm o CSS funciona e só o XAMPP não (o que não ocorre com outros projetos) mas enfim, a questão maior é essa. Minha árvore nova de diretório. /(root) /_css (folder) estilo.css (file) ****************** /_includes header.php footer.php menu_responsivo.php ******************* /index.php => com os require_once de header e footer Lendo o post adicionei o caminho completo no header.php <link rel="stylesheet" href="reviver/../_css/estilo.css"/> que carrega a CSS, só acontece o problema do amigo aqui, com novas divs que faço, mas usando o PHPStorm isso não acontece. Mas o foco é o seguinte: pelo fato desta linha estar no header.php, creio que os ../ são necessários segundo a lógica. Porém, se eu fizer o que está abaixo, não carrega estilo algum. <link rel="stylesheet" href="../_css/estilo.css"/> e conforme abaixo e com o caminho completo carrega. <link rel="stylesheet" href="_css/estilo.css"/> Deduzi que seja por causa da index.php isso tem lógica? Tenho receio de fazer o site todo assim e depois ter que alterar tudo, e o mesmo ocorre com os require. Abraços! E Obrigado.
  2. Obrigado ESerra pelo apoio, mas resolvi desta maneira. Tinha esquecido do Fetch rs public function Login($email, $senha2){ $datalog = $this->pdo->prepare("SELECT * FROM profissionais WHERE email = :email AND senha = :senha LIMIT 1"); $datalog->bindValue(":email", $email, PDO::PARAM_STR); $datalog->bindValue(":senha", $senha2, PDO::PARAM_STR); $datalog->execute(); $dadoslogin = $datalog->fetch(PDO::FETCH_ASSOC); echo var_dump($datalog->rowCount()). "<br>"; if ($dadoslogin){ session_start(); $_SESSION["nome"] = $dadoslogin["nome"]; // FUNCIONAL $_SESSION["email"] = $dadoslogin["email"]; // FUNCIONAL echo "<h1>Logado com sucesso!".$_SESSION["nome"]."</h1>";// TESTE DE EXIBIÇÃO echo "<h1>Logado com sucesso!".$_SESSION["email"]."</h1>";//FAIL RS //header("refresh: 3; url=../mensagem.php"); echo print_r($dadoslogin); } else { echo "<h1>Email ou senha incorretos! Por favor, digite novamente.</h1>"; session_destroy(); header("refresh: 3; url=../login.php"); } }
  3. Dei um var_dump ($dadoslogin) e me retornou à isto array(1) { [0]=> object(stdClass)#4 (7) { ["id"]=> string(2) "14" ["nivel"]=> string(1) "1" ["status"]=> string(1) "1" ["nome"]=> string(4) "Nana" ["rua"]=> string(14) "Rua souza maia" ["email"]=> string(11) "nana@pb.com" ["senha"]=> string(40) "senha criptografada" } } string(11) "nana@pb.com" Ou seja, tudo está vindo no array. Eu estava enviando o var_dump quando me enviou.
  4. Retorna exatamente a uma.
  5. Amigos, venho novamente e espero que possam me ajudar novamente. Uma vez que fiz esse SELECT * FROM, eu não deveria retornar à qualquer campo da minha tabela sem ter erros? Eu já fiz isso uma vez, inclusive no mesmo projeto, só que aqui não funciona, nem com PDO::FECTH_OBJ ou ASSOC. public function Login($email, $senha2){ $datalog = $this->pdo->prepare("SELECT * FROM profissionais WHERE email = :email AND senha = :senha LIMIT 1"); $datalog->bindValue(":email", $email); $datalog->bindValue(":senha", $senha2); $datalog->execute(); $dadoslogin = $datalog->fetchAll(PDO::FETCH_OBJ); if ($dadoslogin){ session_start(); $_SESSION["id"] = $dadoslogin->id; //TENTATIVA $_SESSION["email"] = $email; // FUNCIONAL echo "<h1>Logado com sucesso!".$_SESSION["email"]."</h1>";// TESTE DE EXIBIÇÃO echo "<h1>Logado com sucesso!".$_SESSION["id"]."</h1>";//FAIL RS //header("refresh: 3; url=mensagem.php"); } else { echo "<h1>Email ou senha incorretos! Por favor, digite novamente.</h1>"; session_destroy(); header("refresh: 3; url=../login.php"); } }
  6. Beleza! Gabriel. Super válido esse complemento. Abraço!
  7. Compreendo e sempre faço uso destas contants, mas como eu vinha tendo problemas eu a tinha removido. Já fiz alguns freelance só que nada relacionado à sistema de cadastro e login; e nesses eu percebi esses usos da PDO mesmo, só que como este eu estou desenvolvendo, veio uma preocupação extra.
  8. Agradeço aos dois pela ajuda e informação, bom, vejo que a frase que li em um livro JAVA no passado e a levo em mente sempre será verídica, na programação nada é 100% perfeito. É que bate uns receios, mas procurarei fazer o meu melhor, ter coragem e seguir. Bom, isso que fiz foi algo bem básico só para testar estas funções, tanto que não apliquei SESSION nem nada. Mas vlw!
  9. Valeu William, desculpe enfadar mais uma vez, mas isso foi solucionado 100% com o PDO? Pois eu tentei algumas e realmente não consegui realizar a SQL Injection.
  10. Login funcionando perfeitamente assim: (sem a preg_replace, pois ela removeu a arroba) logar.php require_once 'conexao.php'; require_once 'Login.class.php'; //RECEBE OS DADOS DO FORMULÁRIO $email = $_POST["email"]; $senha = $_POST["senha"]; //$email = preg_replace('/[^[:alnum:]_.-]/', '', $_POST["email"]); $senha2 = sha1($senha. "spbrmitcz"); //VERIFICA SE ESTÃO VAZIOS if (empty($email) || empty($senha)) { echo "Preencha todos os campos!"; }else { //Todos os campos preenchidos if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Email ou senha inválidos! Por favor, digite novamente."; } else { //Executa a classe de cadastro $logado = new Login(); $logado = $logado->Logar($email, $senha2); } }echo var_dump($email); Login.class.php require_once 'conexao.php'; class Login extends Conexao { public function Logar($email, $senha2){ $datalog = $this->pdo->prepare("SELECT * FROM profissionais WHERE email = :email AND senha = :senha LIMIT 1"); $datalog->bindValue(":email", $email); $datalog->bindValue(":senha", $senha2); $datalog->execute(); $datalog->fetchAll(PDO::FETCH_ASSOC); if ($datalog->rowCount() == 1){ echo "<h1>Logado com sucesso!</h1>"; } else { echo "<h1>Digite seu email e senha corretamente!</h1>"; print_r($datalog->errorInfo()); }echo "<br>" .var_dump($datalog)."<br>" .var_dump($email)."<br>" .var_dump($senha2)."<br>"; } } Agora preciso tratar as SQL injections, me deparei com diversos posts até mesmo daqui, ainda não testei e apliquei nenhum. Se alguém tiver sugestão de qual a melhor e puder me ajudar, pois de SQL injection não entendo muito.
  11. $email = preg_replace('/[^[:alnum:]_.-]/', '', $_POST["email"]); $senha = sha1($_POST["senha"]); Está estranho esse negócio, continua com 40 strings if ($datalog->rowCount() != 1) { echo "<h1>Digite seu email e senha corretamente!</h1>"; print_r($datalog->errorInfo()); } else { echo "<h1>Logado com sucesso!</h1>"; } Mudei a lógica e só dá incorreto e... Digite seu email e senha corretamente! Array ( [0] => 00000 [1] => [2] => ) object(PDOStatement)#3 (1) { ["queryString"]=> string(67) "SELECT * FROM profissionais WHERE email = :email AND senha = :senha" } string(10) "nanapb.com" string(40) "7c222fb2927d828af22f592134e8932480637c0d" string(10) "nanapb.com" string(40) "7c222fb2927d828af22f592134e8932480637c0d"
  12. Pensei nisso, porém não testei sem o hash para a leitura da senha no BD, Assim como vi em um vídeo no Youtube. Vou testar e retorno. Obrigadão!
  13. Tenho um sistema de login conforme o código abaixo, porém o post já inicia com uma senha criptografada com 40string mesmo com o campo vazio, e o usuario se loga com qualquer senha digitada. Favor! Preciso de ajuda para concluir isto. Fiz várias pesquisas e nada. logar.php require_once 'conexao.php'; require_once 'Login.class.php'; //RECEBE OS DADOS DO FORMULÁRIO /*$email = $_POST["email"]; $senha = $_POST["senha"];*/ $email = preg_replace('/[^[:alnum:]_.-]/', '', $_POST["email"]); $senha = sha1($_POST["senha"]. "spbrmitcz"); //VERIFICA SE ESTÃO VAZIOS if (empty($email) || empty($senha)) { echo "Preencha todos os campos!"; }else { //Email inválido! if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Email ou senha inválidos! Por favor, digite novamente."; } else { //Executa a classe Login $logado = new Login(); $logado = $logado->Logar($email, $senha); } } echo "<br>" . var_dump($email) . "<br>". var_dump($senha); Login.class.php require_once 'conexao.php'; class Login extends Conexao { public function Logar($email, $senha){ $datalog = $this->pdo->prepare("SELECT * FROM profissionais WHERE email = :email AND senha = :senha"); $datalog->bindValue(':email', $email, PDO::PARAM_STR); $datalog->bindValue(':senha', $senha); $datalog->execute(); $datalog->fetchAll(PDO::FETCH_ASSOC); if (count($datalog) <= 0) { echo "<h1>Digite seu email e senha corretamente!</h1>"; } else { echo "<h1>Logado com sucesso!</h1>"; } echo "<br>" .var_dump($datalog)."<br>" .var_dump($email)."<br>" .var_dump($senha)."<br>"; } }
  14. Solcionada a parte do If e Else exibir a mensagem correta para o usuário. Agora partirei para o aprimoramento do sistema. http://blog.ultimatephp.com.br/sistema-de-login-php/
  15. Olá! Estou tentando fazer um sistema de login mais seguro possível, mas de início gostaria de resolver esta questão, aonde este sistema não loga. O cadastro está acontecendo normal, o problema é com o login mesmo. Quero lembrar que este é apenas um exemplo básico para que eu possa aplicar no projeto que desejo, sem contar que os campos que trabalharei, serão estes: email e senha. Aguardo contato e agradeço desde já. A variável login que recebe a classe açoes que contem o método Login, fica vazia com o var_dump . O arrquivo abaixo recebe o post do formulário. <?php require_once 'conexao.php'; require_once 'Acoes.php'; //RECEBE OS DADOS DO FORMULÁRIO if(isset($_POST["email"]) && isset($_POST["senha"])) { $email = $_POST["email"]; $senha = $_POST["senha"]; $email = preg_replace('/[^[:alnum:]_.-]/', '', $email); $senha = sha1($senha . "spbrmitcz"); //Executa a classe de cadastro $logado = new Acoes(); $login = $logado->Login($email, $senha); //VERIFICA SE ESTÃO VAZIOS if (empty($email) || empty($senha)) { $msg = "Preencha todos os campos!"; //Todos os campos preenchidos if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $msg = "Email ou senha inválidos! Por favor, digite novamente."; } else { } } } echo "<pre><h2>".var_dump($login)."</h2></pre>"; ?> Segue o arquivo da classe Acoes. <?php require_once 'conexao.php'; class Acoes extends Conexao { public function exibe(){ $con = $this->pdo->prepare("SELECT * FROM profissionais"); $con->execute(); print_r($con->rowCount()); } public function Cadastrar($nivel, $status, $nome, $rua, $email, $senha) { $check = $this->pdo->prepare("SELECT * FROM profissionais WHERE email=?"); $check->execute(array($email)); if ($check->rowCount() == 0) { $insert = $this->pdo->prepare("INSERT INTO profissionais (nivel, status, nome, rua, email, senha) VALUES (:nivel, :status,:nome, :rua,:email, :senha)"); $insert->bindValue(":nivel", $nivel, PDO::PARAM_INT); $insert->bindValue(":status", $status, PDO::PARAM_INT); $insert->bindValue(":rua", $rua, PDO::PARAM_STR); $insert->bindValue(":nome", $nome, PDO::PARAM_STR); $insert->bindValue(":email", $email, PDO::PARAM_STR); $insert->bindValue(":senha", $senha, PDO::PARAM_STR); $insert->execute(); }else{ echo "<h1>Já existe um usuário cadastrado com este email!</h1>"; } } public function Login($email, $senha){ $datalog = $this->pdo->prepare("SELECT * FROM profissionais WHERE email=? AND senha=?"); $datalog->bindValue(":email", $email); $datalog->bindValue(":senha", sha1($senha."spbrmitcz")); $datalog->execute(array($email, $senha)); if ($datalog->rowCount() == 1) { $datalog->fetchAll(PDO::FETCH_ASSOC); $_SESSION["email"] = $datalog["email"]; $_SESSION["senha"] = $datalog["senha"]; $_SESSION["nivel"] = $datalog["nivel"]; setcookie("logado", 1); $log = 1; } if (isset($log)){ echo "<h1>Logado com sucesso!</h1>"; }else{ echo "<h1>Digite seu email e senha corretamente!</h1>"; } } } ?>