嘿伙计们
就是这样,我只喜欢在我身边这样做,不仅是 sha1。但是登录和许多其他事情更安全一些。
现在试试我举个例子。
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;
}
/*
* Opret bruger på siden og kan har mulighed for alle ting!..
*/
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>";
}
}
这是它在注册页面上的外观:
if(isset($_POST["godkendt_bruger"]))
{
$pass = $mebe->generateSalt();
$users = $mebe->bruger_opret_siden();
}
'<?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"]))
{
$pass = $mebe->generateSalt(12);
$login = $mebe->godkendt_bruger_login();
}
?>
<ul>
<li><a href="">Forgot password and username</a></li>
<li><a href="/opret-bruger/">Users</a></li>
</ul>
</form>
<?php
}
?>
当我需要登录页面时,这说明了它:
注意:未定义的变量:第 216 行 /home/jesperbo/public_html/mebe/function/function.php 中的哈希
function godkendt_bruger_login(){
$password = $_POST["pass"];
$algorithm = '$6$'; //<--- Dette betyder SHA 512
$salt = $this->generateSalt(16); //<--- SHA 512 bruger et 16 tegn langt salt
if($stmt = $this->mysqli->prepare('SELECT `id`, `brugernavn`, `rank`, `profilbillede`, `profilbillede_godkendt` FROM `bruger` WHERE `brugernavn` = ? AND `password` = ?'))
{
$stmt->bind_param('ss', $brugernavn, $password);
$brugernavn = $_POST["brugernavn"];
$password = $hash;
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $brugernavn, $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;
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>";
}
}
}
就是说这里;
$password = $hash;
创建部分工作正常,因为它会生成一个长密码。但问题是当我登录页面时。
希望你能帮我