| Autor | Zpráva | ||
|---|---|---|---|
| cs.web Profil |
#1 · Zasláno: 4. 1. 2014, 12:11:28
Dobrý den,
mám skript pro registraci uživatelů do databáze. Konkrétně do minecraftovýho pluginu authme. Registrační skript: <?php
ob_start(); // cachujeme vystup
if(isset($_POST['sent'])){ // pokud byl odeslan formular pokracuj timto
$jmeno=trim($_POST['jmeno']);
$heslo1=$_POST['heslo'];
$heslo2=$_POST['heslo_znovu'];
$mail=trim($_POST['mail']);
$web=trim($_POST['web']);
if($jmeno=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme
echo "Nebyly vyplněny všechny povinné údaje!";
}else{ // povinné udaje vyplněny vsechny
require "db.php"; // pripojime se k databazi
$PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `authme` WHERE `username`='$jmeno' OR `email`='$mail'"),0);
if($PocetStejnych!=0){ // pokud v db je jiz takove jmeno nebo heslo...
echo "Zadané jméno nebo email je již používán někým jiným!!!";
}elseif($heslo1 != $heslo2){ // pokud se hesla nerovnají
echo "Zadané hesla se neshodují!!!";
}else{ // hesla se shoduji, vlozime tedy data do databaze
$salt = substr(hash('whirlpool', uniqid(rand(), true)), 0, 12);
while ($row = mysql_fetch_array($query)) {
$salt = $row['heslo']; // Senha completa no banco de dados
$salt = substr($salt, 5); // Tiramos o começo da String (5 caracteres iniciais)
$salt = substr($salt, 0, 15); // Encontramos o salt em 0 +15.
}
$pass = hash('sha256', $heslo);
$heslo = '$SHA$' . $salt . '$' .hash('sha256', $pass.$salt); // zahashujeme heslo
if($web=="http://" or $web==""){ //pokud nezadal web tak dame promennou web prazdnou
$web="";
}
$VlozData=mysql_query(" INSERT INTO authme (`username`,`password`,`email`,`lastlogin`,`z`)
VALUES
('$jmeno', '$heslo', '$mail', '$web', '0') ") or die (mysql_error());
// Jako posledni hodnota je "0", to jsou ty prava uzivatele.
if($VlozData){
echo "Data byla uložena";
}
}
}
}else{
echo "Nebyl odeslán formulář";
}
// pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO
echo "<a href='index.php'>index</a>";
// samozrejme zde muze byt presmerovani na jinou stranku pomoci
// header ("Location: index.php");
ob_end_flush();
?>Přihlašovací skript: <?php
ob_start();
session_start();
if(isset($_POST['username'])){
require_once 'db.php';
$username = $_POST['username'];
$salt = substr(hash('whirlpool', uniqid(rand(), true)), 0, 12);
while ($row = mysql_fetch_array($query)) {
$salt = $row['heslo']; // Senha completa no banco de dados
$salt = substr($salt, 5); // Tiramos o começo da String (5 caracteres iniciais)
$salt = substr($salt, 0, 15); // Encontramos o salt em 0 +15.
$pass = hash('sha256', $_POST['password']);
$password = '$SHA$' . $salt . '$' .hash('sha256', $pass.$salt); // zahashujeme heslo
$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="index.php";
header("location: $bl");
exit;
}else{
$bl="index.php?chyba=403";
header("location: $bl");
exit;
// echo "Zadal jsi špatné údaje";
}
mysql_free_result($query);
}else{
echo "Zde nic neni";
}
ob_end_flush();
?>Hesla v databázi jsou v tomto tvaru: $SHA$011b6f609882$d1bcca6b4c9fe54218f601e565d50eaa390eeffbf517fed16dd0ff492c10427f |
||
| Davex Profil |
#2 · Zasláno: 4. 1. 2014, 14:57:02
Při přihlášení musíš použít stejnou sůl jako byla použita při registraci.
|
||
|
Časová prodleva: 13 let
|
|||
0