Autor Zpráva
cs.web
Profil
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();

?>
Nevím však jak zprovoznit přihlašovací skript, se sha256 si nevím rady.
Hesla v databázi jsou v tomto tvaru: $SHA$011b6f609882$d1bcca6b4c9fe54218f601e565d50eaa390eeffbf517fed16dd0ff492c10427f
Davex
Profil
Při přihlášení musíš použít stejnou sůl jako byla použita při registraci.

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: