Autor Zpráva
cs.web
Profil
Dobrý den, mám v databázi uživatelů a jejich hesla jsou zašifrována v sha256.
Mám taky udělané přihlášení ale hesla jsou v něm šifrována pomocí md5.

Kod vypadá takhle:
<?php

ob_start();

session_start(); 

if(isset($_POST['username'])){

  require_once 'db.php';

  $username = $_POST['username'];

  $password = md5($_POST['password']);


    $query = mysql_query("SELECT * FROM `authme` WHERE `username` = '$username' and `password` = '$password'") or die (mysql_error());

      $Vysledek = mysql_fetch_array($query);

        if($Vysledek['username']){ 

          $_SESSION['prihlasen'] = 1;

          $_SESSION['username'] = $Vysledek['username'];

          $_SESSION['id'] = $Vysledek['id'];

          $bl="neco.php";

          header("location: $bl"); 

          exit;

        }else{

          $bl="chyba.php";

          header("location: $bl"); 

          exit;

        }

    mysql_free_result($query);

}else{

  echo "Zkouska";

}

ob_end_flush();

?>

Jak přesně skript předělat aby hesla byla šifrována přes sha256 ?
Zkoušel jsem prostě md5 zaměnit s sha256 ale potom skript háže chybu.
Bertram
Profil
cs.web:
Jak přesně skript předělat aby hesla byla šifrována přes sha256 ?
Zkoušel jsem prostě md5 zaměnit s sha256 ale potom skript háže chybu.

Možná myslíte toto:
$password = hash('sha256', $_POST['password']);
cs.web
Profil
Skript jsem upravil, takže těď vypadá takhle ale pořád i po zadání správných údajů z databáze ukazuje že heslo není správné.

login.php
<?php
ob_start();
session_start(); 
if(isset($_POST['username'])){
require_once 'db.php';
$username = $_POST['username'];  
$password = $_POST['password'];  
$auth_password = hash('sha256', $password);  
$query = mysql_query("SELECT * FROM `authme` WHERE `username` = '$username' and `password` = '$auth_password'") or die (mysql_error());
$Vysledek = mysql_fetch_array($query);
if($Vysledek['username']){ 
$_SESSION['prihlasen'] = 1;
$_SESSION['username'] = $Vysledek['username'];
$_SESSION['id'] = $Vysledek['id'];
$bl="/admin/index.php?jsi=prihlasen";
header("location: $bl"); 
exit;
}else{
$bl="/admin/index.php?chyba=403";
header("location: $bl"); 
exit;
// echo "Zadal jsi špatné údaje";
}
mysql_free_result($query);
}else{
echo "Zde nic není.";
}
ob_end_flush();
?>

index.php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<center>
<h1>Přihlášení</h1>
<form action="login.php" method="post">
  <input type="hidden" name="sent" value=""/>
    <input type="text" name="username" maxlength="32"/> <strong>Jméno</strong> <br/>
    <input type="password" name="password" maxlength="32"/> <strong>Heslo</strong> <br/>
  <input type="submit" name="send" value="Přihlaš"/>
</form>
Micruss
Profil
porovnejte heslov db a potom odeslaný heslo... jestli se neshoduje tak je někde chybka :-)
cs.web
Profil
Jak mám ale heslo rozšifrovat ?
okolojsoucí
Profil *
cs.web:
Nelze rozšifrovat běžným způsobem
Bertram
Profil
cs.web:
$sql = "SELECT `username`, `password` FROM `authme` WHERE `username` = '$username'");

a poté porovnat vrácenou hodnotu hesla s touto

$auth_password = hash('sha256', $password);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: