como encriptar a senha passada pelo fomulário de login?
09/01/2017
0
parte do fomulario de login.php
<form method="POST" action="valida.php">
<table>
<tr>
<td>
<img src="assets/imgs/logo.png">
</td>
<td><h1>Sistema de Gestão<br><b>Patrimonial do DEP</b></h1></td>
</tr>
<tr>
<td colspan='2'>
<input type="text" name="txt_matricula" id="txt_matricula" class="form-control" placeholder="Matricula" required autofocus>
<br><br>
<input type="password" name="txt_senha" id="txt_senha" class="form-control" placeholder="Senha" required>
<br><br>
<input type='submit' value='logar'>
<?php if(isset($_SESSION['loginErro']))
{
echo $_SESSION['loginErro'];
unset ($_SESSION['loginErro']);
}
?>
</tr>
</table>
arquivo valida.php
//Verifica se os campos possuem dados
if((isset($_POST['txt_matricula']) == ['txt_matricula'] ) && (isset($_POST['txt_senha']) == ['txt_senha'])){
$matricula = mysqli_real_escape_string($conn, $_POST['txt_matricula']); //Escapar de caracteres especiais, como aspas, prevenindo SQL injection
$senha = mysqli_real_escape_string($conn, $_POST['txt_senha']);
$senha = md5($senha);
//
//$string = $senha;
//$codificada = hash('sha512', $string);
$result_matricula = "SELECT * FROM usuarios WHERE matricula = '$matricula' && senha = '$senha'";
$resultado_matricula = mysqli_query($conn, $result_matricula);
$resultado = mysqli_fetch_assoc($resultado_matricula);
parte do codigo de cadastro de uma usuario no campo senha
<td>
<label required>Senha:</label>
<input type="password" value='<?= $fdata ['$senha']?>' id="senha" name="senha" placeholder="Senha" >
</td>
a variavel $fdata recebe a senha digitada e cadastra dessa forma
$table = 'usuarios';
$form = [
'status' => 'Cadastrar',
'submit' => 'Salvar',
];
# campos do formulário
$fdata = [
'nome' => isset($_POST['nome']) ? $_POST['nome'] : null,
'senha' => isset($_POST['senha']) ? $_POST['senha'] : null,
];
em valida.php era para fazer a encriptação acredito eu mas nao consigo, como devo fazer?
Jones
Posts
13/01/2017
Jones
aqui ninguém me ajudou,
mas consegui resolver, nao sei se é do jeito certo
com a mudança do seguinte código
$nome = ($_POST['nome']); // acrescebtei as variaveis que pegavam os dados do campos do formulario
$niveis_acesso_id = ($_POST['niveis_acesso_id']);
$matricula = ($_POST['matricula']);
$senha = MD5($_POST['senha']);
// new record case
$query = "INSERT INTO usuarios set nome = '$nome', matricula = '$matricula', senha ='$senha' , niveis_acesso_id= '$niveis_acesso_id' ";
e mudei $query = "INSERT INTO . $middle_query senha = $senha"; para usuarios set nome = '$nome', matricula = '$matricula', senha ='$senha' , niveis_acesso_id= '$niveis_acesso_id'
desde já agradeço foi muita dor de cabeça mas agradeço, preciso fazer uma outra coisa, que não tinha conseguido, quero saber se posso postar poergunta aqui ou em criar outro topico, pois nem mesmo comecei a fazer pois achei que seria facil fazer a criptografia, mas perdi muito tempo.
13/01/2017
Wilson Neto
E se você estiver usando o PHP >= 5.5 poderia usar o password_hash (nativo), o retorno dela é um hash de 72 caracteres. (Outra alternativa)
Veja: Password_has
13/01/2017
Wilson Neto
$senha password_hash ( senha $senha ) ?
Password_hash() espera uma string como parametro, o tipo de algoritmo e um parametro opcional.
Se você pedir para imprimir o retorno abaixo, você terá um hash.
password_hash('Senha aqui', PASSWORD_DEFAULT);
E para você verificar o hash basta usar a seguinte função:
Ela espera a string a comparar e o hash a ser comparado.
password_verify ('input do usuario' , 'hash para comparação')
Retorna um boolean.
17/01/2017
Jones
preciso fazer um registro de histórico de movimentação tipo: PI | Local anterior e local atual | Status anterior e atual | usuário que fez as alterações (logado) | data da movimentação
mas não tenho ideia de como deve ser o script, um exemplo, tenho uma tabela "A" toda alteração que for feita nessa tabela por meio de uma janela web, possa ser registrado em uma outra tabela "B" no banco porém isso é só para registro, no banco e não para ficar no site. não tenho ideia, de como fazer, nem que script usar.
17/01/2017
Wilson Neto
Certo.
Então, eu usaria Triggers para resolver isso, acho mais prático. Mas claro que se quiser fazer a implementação em PHP, basta fazer uma nova query com os dados que você quer após a inserção, mas nesse caso eu usaria transactions só para garantir que tudo será inserido.
Segue alguns link para você se referenciar sobre triggers:
MySQL Triggers
Triggers
E uma referencia do PHP.net sobre Transactions: Tranctions
18/01/2017
Jones
tenho duas tabelas uma chama por exemplo cadastro com campos pi, localizacao, status e outros campos e outra tabela chamada de movimentacao tem campos pi| local-anterior|local-atual|status-Anterior-status-atual campos que a tabela cadastro nao tem, quero que ao eu fazer mudanca no campo pi, local e status (ATIVO/INATIVO) possa aparecer as mudanças feitas na tabela movimentação no campo PI, LOCAL-ANTERIOR e LOCAL-ATUAL, que possa passar o que estava antes e o que ficou, STATUS-ANTERIOR e STATUS-ATUAL da mesma forma.
Segue parte do codigo que faz atualização sem modificao ainda
$middle_query = $table . ' SET ' . implode(', ', $vars);
// new record case
$query = 'INSERT INTO ' . $middle_query;
$action = 'Inserção';
// update case:
if (isset($PARAMS[0])) {
$id = intval($PARAMS[0]);
$query = "UPDATE $middle_query WHERE nota_fiscal={$id}";
$action = 'Atualização';
}
// running query (update or insert)
$sqli->query($query);
if ($sqli->error) {
$msg[] = '<p class="error">Falha durante a ' . $action . '!<br> ' . $sqli->error . '</p>';
} else {
$msg[] = '<p class="ok">' . $action . ' realizada com sucesso!</p>';
header("Location:moderad.php");
}
}
// em caso de edição:
if (isset($PARAMS[0])) {
$id = intval($PARAMS[0]);
// busca os dados a serem editados
$result = $sqli->query("SELECT * FROM $table WHERE nota_fiscal=$id LIMIT 1");
// checa se houve erro:
if ($sqli->error) {
$msg[] = '<p class="error">Falha ao localizar registro!<br> ' . $sqli->error . '</p>';
} elseif ($result->num_rows) { // se algum registro foi encontrado:
$fdata = $result->fetch_assoc(); // carrega os dados
$form = [
'status' => 'Editar',
'submit' => 'Atualizar',
];
} else { // se nenhum registro for encontrado, define mensagem de erro:
$msg[] = '<p class="warning">Registro não encontrado na base de dados!</p>';
}
}
ai coloquei esse codigo mas nao sei se esta certo ou esta no lugar errado
//acrecimo codigos abaixo
$host="localhost";
$user="root";
$pass="";
$conexao = mysqli_connect($host, $user, $pass);
mysqli_autocommit($conexao, false);
mysqli_report(MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT);
$pi = 'pi';
$insert1 = false;
$insert2 = false;
try{
$stmt = mysqli_prepare($conexao, "INSERT INTO cadastro values (?)");
mysqli_stmt_bind_param($stmt, 's', $pi);
$insert1 = mysqli_stmt_execute($stmt);
$stmt = mysqli_prepare($conexao, "INSERT INTO movimentação (nome) values (?)");
mysqli_stmt_bind_param($stmt, 's', $pi);
$insert2 = mysqli_stmt_execute($stmt);
}catch (mysqli_sql_exception $e){
echo 'SQLState: '. $e->getCode() .' <br>Descrição: '. $e->getMessage();
}
if($insert1 && $insert2){
mysqli_commit($conexao);
echo 'sucesso';
}
Clique aqui para fazer login e interagir na Comunidade :)