Ir para conteúdo

POWERED BY:

Arquivado

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

Enyk

Login PDO criptografado error

Recommended Posts

Gente ja resolvi o erro, mas aproveitando para nao criar outro tópico.

Queria a ajuda de vocês, queria colocar no meu sistema de login, para verificar se a senha e o salt tiver correto fazer login.

 

E se uma pessoa que tentar 3 vezes o mesmo login e senha ou só o login aparecer um reCaptch se puderem ai vai meu sistema.

 

Sou iniciante em php se puderem explicar como funciona eu agradeceria.

 

 

<?php
ob_start();
session_start();
	if(isset($_SESSION['usuarioadm']) && (isset($_SESSION['senhaadm']))){
	header("Location:index.php");exit;
	}
	include("conn/conn.php");

	if(isset($_POST['logar'])){
		// recuperar dados form
		// Proteção XSS
		$usuario	=  trim(strip_tags(preg_replace("/[^a-zA-Z0-9_\-]+/", "", $_POST['usuario'])));
	    $senha		=  trim(strip_tags(hash('sha512', $_POST['senha'])));
		$error 		=  array();

		// selecionar bando de dados
		$select     = "SELECT * from login WHERE BINARY usuario=:usuario AND BINARY senha=:senha";
		try{
			$result = $conexao->prepare($select);
			$result->bindParam(':usuario', $usuario, PDO::PARAM_STR);
			$result->bindParam(':senha', $senha, PDO::PARAM_STR);
			$result->execute();
			$contar = $result->rowCount();
			if($contar>0){
				// Proteção XSS
				$usuario	=  preg_replace("/[^a-zA-Z0-9_\-]+/", "", $_POST['usuario']);
				$senha		=  hash('sha512', $_POST['senha']);
				$_SESSION['usuarioadm'] = $usuario;
				$_SESSION['senhaadm'] 	= $senha;
				echo '<div id="sucessmsg">Logado com sucesso. Redirecionamente da pagina em 5 sec.</div>';
				header("Refresh: 5, index.php");
			}else{
				$error[1] = 'Desculpe mas os dados estão errados';
			}

		}catch(PDOException $e){
			echo $e;
		}

	}// se clica no botao entra no sistema
?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta criar uma sessão ou usar uma tabela do banco de dados para salvar a quantidade de vezes que o usuário tentou se conectar e seu IP.

 

Se preferir usar sessão ou cookies, não salve o IP.

 

Eu recomendo fazer session_regenerate_id().

 

------------------------------

 

Fazendo com sessões:

 

- Primeiramente você checará se existe uma sessão e criar.

if (!isset($_SESSION['sign_in_rounds'])){
 $_SESSION['sign_in_rounds'] = 1;
} else {
 $_SESSION['sign_in_rounds']++;
}

Caso a sessão não exista, é criada.

 

No else, você poderia aumentar + uma vez o valor dela, como acima.

Isso você inplementa no código de conexão.

 

--------------------------------------------------------

 

Agora você deveria verificar se o número de rodadas tentando conectar à uma conta no site é maior que 3.

if ($_SESSION['sign_in_rounds'] > 3) {
     echo "limit=1";
}

E assim você faz algo.

 

 

Lembrando, não é muito seguro fazer com sessões e cookies... tente com tabelas no banco de dados.

 

 

Fazendo com tabela (do banco de dados):

 

Crie uma tabela com o nome "sign_in_rounds" (opcional), e 2 colunas:

 

u_id (int, 25);

u_ip (varchar, 45);

rounds (int, 2)

 

Vou comer um pouco e dou edit.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sabia q era tao simples assim até ai eu entendi, e porque não é muito seguro utilizar SESSION ou Cookies?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por Luiz Henrique
      Olá,
       
      Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
       3 parcelas de 100.00 e cada registro em seu devido mês:
      INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17) É mais eficiente fazer da forma acima ou colocar 3 INSERT?
      Ou existe forma melhor de fazer isso?
       
      Obrigado.,
       
    • Por eduardodsilvaq
      Erro retornado no console do navegador: 400 bad request
      Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
      if ( is_user_logged_in() ) { // If no action is registered, return a Bad Request response. if ( ! has_action( "wp_ajax_{$action}" ) ) { wp_die( '0', 400 ); } Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
      Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
       
      Código utilizado:
       
      Javascript
      function formValidation() { event.preventDefault(); var name = document.forms["contactForm"]["name"].value; var email = document.forms["contactForm"]["email"].value; var subject = document.forms["contactForm"]["subject"].value; var message = document.forms["contactForm"]["message"].value; document.getElementById('status').innerHTML = ''; var errorMessage="<span class='error'>All fields are required.</span>"; var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") { document.getElementById('status').innerHTML = errorMessage; return false; } if (!regEx.test(email)) { var errorMessage="<span class='error'>Invalid email.</span>"; document.getElementById('status').innerHTML = errorMessage; return false; } processContactSubmit(); return true; } function processContactSubmit() { var request = new XMLHttpRequest(); request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form"); request.onreadystatechange = function() { if(this.readyState === 4 && this.status === 200) { document.getElementById("status").innerHTML = this.responseText; } }; var myForm = document.getElementById("contactForm"); var formData = new FormData(contactForm); request.send(formData); } functions.php
      add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form'); add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0. function process_contact_form() { $to = "Recipient Email Address"; $subject = $_POST["subject"]; $headers = "Testing"; $message = $_POST["message"]; $attachments = ""; $sent = wp_mail($to, $subject, $message, $headers, $attachments); if (! $sent) { echo "<span class='error'>Problem in sending mail.</span>"; } else { echo "<span class='success'>Hi, thank you for the message.</span>"; } wp_die(); } Html
      <form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action=""> <p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p> <p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p> <p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p> <p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p> <p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p> </form>&nbsp; <h3><div id="status"></div></h3>  
    • Por Marcones Borges
      Olá, estou precisando de uma ajuda...
       
      Tenho duas tabelas
      ministros
      entradas
       
      Preciso exibir a lista dos ministros que não contam no relatório gerado em entradas.
       
      Fiz assim a combinação.
       

      $sql = "SELECT ministro.id, ministro.area, entrada.beneficiario, entrada.id_benificiario, entrada.id_benificiario, entrada.tipo_lancamento FROM ministro INNER JOIN entrada ON ministro.id = entrada.id_benificiario WHERE ministro.area = entrada.area_beneficiario AND ministro.nome = entrada.beneficiario AND entrada.id_benificiario='[{$id_exer}' AND entrada.tipo_lancamento='ministro'  "; $stm = $conexao->prepare($sql); $stm->execute(); $clientes = $stm->fetchAll(PDO::FETCH_OBJ);
       
      Fiz as combinações direitinho mais não consigui exbir os que estão na tabela ministro e não estão na tabela entrada.
    • Por Sapinn
      É a primeira vez que vejo esse erro e estou tendo problemas para resolvê-lo. Tenho no meu controller uma página de erro com o código:
       
      <?php namespace Source\App\Error; use Source\Core\Controller; class Error extends Controller { public function __construct() { parent::__construct(__DIR__ . "/../../themes/" . CONF_VIEW_ERROR . "/"); } /** * ERROR * @param array $data */ public function errors(?array $data): void { $error = new \stdClass(); json_encode($error); switch ($data['errcode']) { case "problemas": $error->code = "OPS"; $error->title = "Estamos enfrentando problemas!"; $error->message = "Parece que nosso serviço não está diponível no momento. Já estamos vendo isso mas caso precise, envie um e-mail :)"; $error->linkTitle = "ENVIAR E-MAIL"; $error->link = "mailto:" . CONF_MAIL_SUPPORT; break; case "manutencao": $error->code = "OPS"; $error->title = "Desculpe. Estamos em manutenção!"; $error->message = "Voltamos logo! Por hora estamos trabalhando para melhorar nosso conteúdo para você controlar melhor as suas contas :P"; $error->linkTitle = null; $error->link = null; break; default: $error->code = $data['errcode']; $error->title = "Ooops. Conteúdo indispinível :/"; $error->message = "Sentimos muito, mas o conteúdo que você tentou acessar não existe, está indisponível no momento ou foi removido :/"; $error->linkTitle = "Continue navegando!"; $error->link = url_back(); break; } $head = $this->seo->render( "{$error->code} | {$error->title}", $error->message, url("/ops/{$error->code}"), theme("/assets/images/share.jpg", CONF_VIEW_ERROR), false ); echo $this->view->render("error", [ "head" => $head, "error" => $error ]); } }  
       
      Estou usando o Composer para fazer minhas rotas de erro e elas se parecem com isso:
       
       
      /** * ERROR ROUTES */ $route->namespace("Source\App\Error"); $route->group("/ops"); $route->get("/{errcode}", "Error:errors"); /** * ROUTE */ $route->dispatch(); /** * ERROR REDIRECT */ if ($route->error()) { $route->redirect("/ops/{$route->error()}"); } E minha visão na página fkbError é assim:
       
      layout("_theme"); ?> <article class="not_found"> <div class="container content"> <header class="not_found_header"> <p class="error">•<?= $error->code; ?>•</p> <h1><?= $error->title; ?></h1> <p><?= $error->message; ?></p> <?php if ($error->link): ?> <a class="not_found_btn gradient gradient-green gradient-hover transition radius" title="<?= $error->linkTitle; ?>" href="<?= $error->link; ?>"><?= $error->linkTitle; ?></a> <?php endif; ?> </header> </div> </article> E o código parece estar certo mas o erro persiste, o que devo fazer?  
       
×

Informação importante

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