Passwort sha-1 verschlüsseln

05/09/2014 20:41 Döner-Chicken Grill#1
Moin Leute,
Meine Registerpage für meinen WoW-Server ist so gut wie fertig nur folgendes Problem habe ich noch. Die Daten werden ja in die Datenbank eingegeben aber da die Passwörter (sha_pass_hash) aus ID:PW bestehen z.B.:

ID: Test
PW: bauer

sha_pass : TEST:BAUER

= 875ac247bdf5f3a32c70435bd79c00ad24bdda6b

wie kann ich das also bei diesem Script einfügen?


PHP Code:
<?php 
$db 
mysql_connect ("localhost","root"," ") or 
die (
"Verbindung fehlgeschlagen");
mysql_select_db("auth",$db);

$name $_POST["name"];
$passw $_POST["passw"];

echo 
$name;
echo 
$passw;

$eintrag "INSERT INTO account
(username, sha_pass_hash)

VALUES
('
$name', '$passw')";

$eintragen mysql_query($eintrag);

?>

Danke im Voraus.

PS: Oder muss da ein extra Script her?

MfG
05/09/2014 21:08 Syc#2
PHP Code:
$sha_pass_hash sha1($passw); 
05/09/2014 22:14 Döner-Chicken Grill#3
und wie muss ich das einfügen das es funktioniert? bitte mal meins oben kopieren und einfügen.

PS: Hat jmd. den Code um abzufragen ob in der Tabelle der Benutzername bereits existiert? Bitte auch nach Möglichkeit einfügen.

(Sry , bin neu beim Programmieren und kenn mich mit dem Eingeben und eintragen in DB nur durch ein Galileo Computing Buch aus (Einstieg in PHP 5.5 und MySQL 5.6))

Aktualisierter Code:

PHP Code:
<?php 
$db 
mysql_connect ("localhost","root","ascent") or 
die (
"Verbindung fehlgeschlagen");
mysql_select_db("auth",$db);

$name $_POST["name"];
$passw $_POST["passw"];
$email $_POST["email"];

echo 
$name;
echo 
$passw;
echo 
$email;

if(
$name == "" or $passw == "" or $email == "") {
echo 
"Du hast die Felder nicht ausgefüllt....";
} else {

$eintrag "INSERT INTO account
(username, sha_pass_hash, email)

VALUES
('
$name', '$passw', '$email')";

$eintragen mysql_query($eintrag);

}
?>
wo muss man hier oben bei
PHP Code:
echo $name;
echo 
$passw;
echo 
$email
eingeben das es ein Zeilenumbruch gibt und wie kann man es am geschicktesten schreiben das vor den Variablen noch z.B. ID , PW , Email steht?
05/09/2014 23:03 Requi#4
PHP Code:
<?php  
$db 
mysql_connect ("localhost","root","ascent") or  
die (
"Verbindung fehlgeschlagen"); 
mysql_select_db("auth",$db); 

$name $_POST["name"]; 
$passw sha1($_POST["passw"]); 
$email $_POST["email"]; 

echo 
"ID: ".$name."<br />; 
echo "
PW".$passw."<br />; 
echo 
"Email: ".$email."<br />; 

if(
$name == "" or $passw == "" or $email == "") { 
echo "
Du hast die Felder nicht ausgefüllt...."; 
} else { 

$eintrag = "INSERT INTO account 
(usernamesha_pass_hashemail

VALUES 
('$name''$passw''$email')"; 

$eintragen = mysql_query($eintrag); 


?>
Um Strings zu verbinden nutzt man einen Punkt.
05/09/2014 23:21 Hyukisawa#5
Du solltest mysqli oder pdo benutzten für datenbanken...
das sha_pass_hash muss TEST:BAUER ergeben richtig ?
PHP Code:
$sha_pass_hash sha1($name.":".$passw); 
was dir dann 875ac247bdf5f3a32c70435bd79c00ad24bdda6b <- ausgibt

du solltest aber nicht vergessen die POST zu escapen/sichern vor SQLi's
05/10/2014 00:07 Döner-Chicken Grill#6
Wie trägt man den Code
PHP Code:
$sha_pass_hash sha1($name.":".$passw); 
in das
PHP Code:
<?php 
$db 
mysql_connect ("localhost","root","") or 
die (
"Verbindung fehlgeschlagen");
mysql_select_db("auth",$db);

$name $_POST["name"];
$passw $_POST["passw"];
$email $_POST["email"];

if(
$name == "" or $passw == "" or $email == "") {
echo 
"Du hast nicht alle Felder ausgefüllt....";
} else {

$eintrag "INSERT INTO account
(username, sha_pass_hash, email)

VALUES
('
$name', '$sha_pass_hash', '$email')";

$eintragen mysql_query($eintrag);

echo 
"Dein Account wurde Erfolgreich erstellt.";

}
?>
ein.

PSSSS: Bräuche noch ein Code für die Abfrage, ob der Nutzername existiert.
05/10/2014 00:15 Mostey#7
Quote:
Originally Posted by Marcel32754 View Post
Wie trägt man den Code
PHP Code:
$sha_pass_hash sha1($name.":".$passw); 
in das
PHP Code:
<?php 
$db 
mysql_connect ("localhost","root","") or 
die (
"Verbindung fehlgeschlagen");
mysql_select_db("auth",$db);

$name $_POST["name"];
$passw $_POST["passw"];
$email $_POST["email"];

if(
$name == "" or $passw == "" or $email == "") {
echo 
"Du hast nicht alle Felder ausgefüllt....";
} else {

$eintrag "INSERT INTO account
(username, sha_pass_hash, email)

VALUES
('
$name', '$sha_pass_hash', '$email')";

$eintragen mysql_query($eintrag);

echo 
"Dein Account wurde Erfolgreich erstellt.";

}
?>
ein.

PSSSS: Bräuche noch ein Code für die Abfrage, ob der Nutzername existiert.
Dir werden fertige Beispiele geliefert die an deine Daten angepasst wurden und somit nur kopiert werden müssen, das weißt du?

Mir ist sehr schleierhaft wie du jetzt noch fragen kannst, wie du das Zeug und die Passage zur Verschlüsselung einfügst.

Übrigens gebe ich dir mal hier die MySQL [Only registered and activated users can see links. Click Here To Register...] mit auf den Weg, wo du dir anhand deiner Tabellenstruktur deine Abfrage formen kannst, wie du deine Nutzer rauskriegst.
05/10/2014 09:58 Döner-Chicken Grill#8
jo , das passwort wird jetzt eingetragen als sha-1 nur kann ich mich nicht einloggen ingame.
Denke das liegt daran das Benutzername nicht komplett groß und das Passwort groß.
das Sha-1 Passwort habe ich bereits groß gemacht aber die passwörter mit denen das sha-1 entsteht sind ja nicht groß.

Wo muss man also eintragen strtoupper bei $name und $passw ? hab zwar an etlichen stellen probiert , aber will mir den Namen in der Datenbank nicht groß schreiben.

//Edit: Hab jetzt raus warum man sich nicht anmelden kann.

Wenn man sich mit Test:Bauer anmeldet wird auch so das sha-1 pw generiert.
Aber das sha-1 pw muss TEST:BAUER ergeben. also es muss generiert werden mit den Großbuchstaben der wörter. Wie kann ich es in meinem script also so einstellen das nicht mit Test:Bauer sondern mit TEST:BAUER generiert wird, also egal was man eingibt, das es automatisch mit den großbuchstaben generiert wird.
05/10/2014 11:51 M4xicaner#9
PHP Code:
$name strtoupper($_POST["name"]) 
Du solltest DRINGEND alle Nutzereingaben escapen, bevor sie in den Sql-Query eingefügt werden.

PHP Code:
$name $_POST["name"];
$passw $_POST["passw"];
$email $_POST["email"]; 
zu

PHP Code:
$name strtoupper(mysql_real_escape_string($_POST["name"]));
$passw $_POST["passw"];
$email strtoupper(mysql_real_escape_string($_POST["email"]));
$sha_pass_hash sha1($name.":".$passw); 
wäre die sichere Komplettlösung
05/10/2014 12:45 Döner-Chicken Grill#10
@all Danke für die gute Hilfe. Läuft jetzt das man sich registrieren kann.

#requestclosed