Hash på password
HejDet er sådan at jeg har opret indlæg her;
http://www.udvikleren.dk/forum/39136/hash-paa-password/side3/
men Det er sådan at mit problem er at den vil gerne opret bruger med crypt. lige nu ser password sådan her ud;
$6$j7Rd68RhKNx.6ccH$9lvRDdks.jx4hk7.YQ0hpvzPE22h/BZQ/9yXiwTMBV1Kx2xr2gbIZZJxYjeLrA41nL2WGjmt.FMQi877uOXrP1
sådan her ser det ud når man "opret en bruger",
function bruger_opret_siden(){
if ($stmt = $this->mysqli->prepare('SELECT NULL FROM `bruger` WHERE `brugernavn` = ?'))
{
$stmt->bind_param('s', $brugernavn);
$brugernavn = $_POST["brugernavn"];
$stmt->execute();
$stmt->store_result();
$count = $stmt->num_rows;
$stmt->close();
if($count > 0)
{
$user_found = 1;
}
}
if(!isset($user_found))
{
if($_POST["pass"] != $_POST["gentag"])
{
$errors = 1;
echo "<li id=\"check_not\">Angive ens password på siden..</li>";
}
if(empty($_POST["pass"]) && empty($_POST["gentag"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive et password på siden..</li>";
}
if(empty($_POST["navn"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive et Fornavn</li>";
}
if(empty($_POST["efternavn"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive et Efternavn</li>";
}
if(empty($_POST["land_by"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive en by</li>";
}
if(empty($_POST["hojde"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive en Højde</li>";
}
if(empty($_POST["email"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive en Email</li>";
}
if(empty($_POST["brugernavn"]))
{
$errors = 1;
echo "<li id=\"check_not\">Angive en Højde</li>";
}
if(!isset($errors))
{
$pb = null;
include 'function/class.upload.php';
$handle = new Upload($_FILES["file"]);
if($handle->uploaded)
{
//lidt mere store billeder
$handle->image_resize = true;
$handle->image_ratio_y = true;
$handle->image_x = 220;
$handle->Process("profil-img/store");
//til profil billede lign..
$handle->image_resize = true;
$handle->image_ratio_crop = true;
$handle->image_y = 115;
$handle->image_x = 100;
$handle->Process("profil-img");
//til profil billede lign..
$handle->image_resize = true;
$handle->image_ratio_crop = true;
$handle->image_y = 75;
$handle->image_x = 75;
$handle->Process("profil-img/lille");
$pb = $handle->file_dst_name;
}
$password = $_POST["pass"];
$algorithm = '$6$'; //<--- Dette betyder SHA 512
$salt = $this->generateSalt(16); //<--- SHA 512 bruger et 16 tegn langt salt
$hash = crypt($password, $algorithm . $salt);
if ($stmt = $this->mysqli->prepare('INSERT INTO `bruger`
(`rank`, `email`, `brugernavn`, `password`, `profilbillede`, `profilbillede_godkendt`, `navn`, `efternavn`, `alder_d`, `alder_m`, `alder_aar`, `status`, `kon`, `seksualitet`, `land_by`, `hojde`)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'))
{
$stmt->bind_param('issssisssssiiisi', $rank, $email, $brugernavn, $password, $profilbillede, $pb_godkendt, $navn, $efternavn, $alder_d, $alder_m, $alder_aar, $kon, $seksualitet, $partnerstatus, $land_by, $hojde);
$rank = '1';
$pb_godkendt = '1';
$email = $_POST["email"];
$brugernavn = $_POST["brugernavn"];//C
$password = $hash;//C
$profilbillede = $pb;//C
$navn = $_POST["navn"];
$efternavn = $_POST["efternavn"];
$alder_d = $_POST["alder_d"];
$alder_m = $_POST["alder_m"];
$alder_aar = $_POST["alder_aar"];
$kon = $_POST["kon"];
$seksualitet = $_POST["seksualitet"];
$partnerstatus = $_POST["partnerstatus"];
$land_by = $_POST["land_by"];
$hojde = $_POST["hojde"];
$stmt->execute();
$stmt->close();
echo "godkendt";
}
else
{
/* Der er opstået en fejl */
echo 'Der opstod en fejl i erklæringen til ligge i databasen: ' . $mysqli->error;
}
}
}
else
{
echo "<li id=\"check_not\">Dette brugernavn er optaget!!</li>";
}
}
men der hvor password bliver salt m.v. gøre den her eller hvordan man skal beskrive det;
function generateSalt($length) {
$alphabet = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$alphabet_length = strlen($alphabet);
$salt = '';
for ($i = 0; $i < $length; $i++) {
$salt .= $alphabet[rand(0, $alphabet_length - 1)];
}
return $salt;
}
Så skal det også være sådan at bruger har mulighed for at log ind på siden med det crypt password som vi har opret i databasen. skal kun være muligt at log ind på siden med det password.
function godkendt_bruger_login(){
if($stmt = $this->mysqli->prepare('SELECT `id`, `brugernavn`, `password`, `rank`, `profilbillede`, `profilbillede_godkendt` FROM `bruger` WHERE `brugernavn` = ? AND `password` = ?'))
{
$stmt->bind_param('ss', $brugernavn, $password);
$brugernavn = $_POST["brugernavn"];
$password = crypt($_POST["pass"] . '$6$' . './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $brugernavn, $password, $rank, $profilbillede, $profilbillede_godkendt);
$stmt->fetch();
$count = $stmt->num_rows;
$stmt->close();
if($count > 0)
{
$_SESSION["logged_in"] = true;
$_SESSION["id"] = $id;
$_SESSION["profilbillede"] = $profilbillede;
$_SESSION["brugernavn"] = $brugernavn;
$_SESSION["rank"] = $rank;
$_SESSION["profilbillede_godkendt"] = $profilbillede_godkendt;
$_SESSION["password"] = $_POST["password"];
if($_SESSION["logged_in"] == true)
{
echo "Godkendt";
}
else
{
echo "<p>Desværre prøve igen brugernavn eller adgangskode passe ikke med vores</p>";
}
}
else
{
echo "<p>Skrive brugernavn og Password</p>";
}
}
}
Så ind på log ind side/filen ser det sådan her ud;
<?php
/*
* Giver admin adgang til se indhold på siden.
*/
if(isset($_SESSION["rank"]) && $_SESSION["rank"] > 0) {
$bruger = $mebe->brugerindhold_side();
}
/*
* Hvis ingen af dem så få de bare adgang sådan her..
*/
else{
?>
<form name="login" method="post" action="#">
<h1>Log ind</h1>
<p>Brugernavn</p><input type="text" name="brugernavn"/>
<p>Password</p><input type="password" name="pass"/>
<br />
<input type="submit" name="Log_ind" value="Log ind" id="login">
<?php
if(isset($_POST["Log_ind"]))
{
$login = $mebe->godkendt_bruger_login();
}
?>
<ul>
<li><a href="">Glemt Brugernavn</a></li>
<li><a href="/opret-bruger/">Opret Bruger</a></li>
</ul>
</form>
<?php
}
?>
Det vil være super hvis du kun hjælp mig eller forklare mig hvad jeg skal gøre bedre. eller hvad skal gøre for du tror mit log ind system kan virker for mig?