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: 10 let
|
0