Problem mit md5

SandyS

Grünschnabel
Hallo, ich bin mir sicher hier kann mir jemand helfen mit meinem "Problemchen"!
Bin ein totaler Neuling in Sachen php. Mein Problem:
Ich habe eine Registrierungsseite in Verbindung mit SQL gebaut. Nur leider weiß ich nicht, wie und wo ich denn das Passwort verschlüsseln kann?
Hier mal mein komplettes Script:
PHP:
<?php require_once('../Connections/verbindung_sasokunden.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO benutzer (Benutzer, Passwort, Email, Name) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($HTTP_POST_VARS['namename'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['pass'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['email'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['name'], "text"));

  mysql_select_db($database_verbindung_sasokunden, $verbindung_sasokunden);
  $Result1 = mysql_query($insertSQL, $verbindung_sasokunden) or die(mysql_error());

  $insertGoTo = "login.php";
  if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_verbindung_sasokunden, $verbindung_sasokunden);
$query_registrierung = "SELECT * FROM benutzer";
$registrierung = mysql_query($query_registrierung, $verbindung_sasokunden) or die(mysql_error());
$row_registrierung = mysql_fetch_assoc($registrierung);
$totalRows_registrierung = mysql_num_rows($registrierung);
?>
<html>
<head>
<title>Registrierung</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#DDEEEE">
<p align="center"><strong><font size="5" face="Arial, Helvetica, sans-serif">Registrierung</font></strong></p>
<form name="form1" method="POST" action="<?php echo $editFormAction; ?>">
<center>
<fieldset style="width:390px; border-color:#2f5faf; border-width:1px">
<legend><span class="headam-information">
allgemeine Daten</span></legend><br />
<table width="350" border="0" align="center" cellspacing="3" cellpadding="4" bgcolor="EDEDED">
	<tr>
		<td width="151">
		<span class="Formular">Name</span>
		</td>
			<td width="174">
			<input type="text" size="20" name="namename" class="feldi" />
			</td>
	</tr>
	<tr>
		<td width="151">
		<span class="Formular">Benutzername</span>
		</td>
			<td>
			<input type="text" size="20" name="name" class="feldi" />
			</td>
	</tr>
	<tr>
		<td>
		<span class="Formular">Passwort</span>
		</td>
			<td>
			<input type="password" size="20" name="pass" class="feldi" />
			</td>
	</tr>
	<tr>
		<td>
		<span class="Formular">Email</span>
		</td>
			<td>
			<input type="text" size="20" name="email" class="feldi" />
			</td>
	</tr>
</table>
<br />
</fieldset>
<br />
<br />
<table width="400" border="0" align="center" cellspacing="0" cellpadding="0" bgcolor="#ddeeee">
<tr>
	<td width="213" align="left">
	<input type="submit" value="jetzt registrieren" name="submit" class="sender" />
	</td>
	<td width="187" align="right">
	<input type="reset" class="sender" />
	</td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</center>
</form>
</body>
</html>
<?php
mysql_free_result($registrierung);
?>

Ich weiß, dass ist nur eine Kleinigkeit, aber ich komm einfach nicht klar! Die Daten in die Datenbank eintragen, dass funktioniert. Aber ich schaffe es einfach nicht, das Passwort zu verschlüsseln.

Wäre echt nett, wenn sich das ein Könner mal anschauen könnte.
Ich bin schon fast am verzweifeln.

Danke schon mal

SandyS
 
Hi,
also verschlüsseln kannst du mit md5
PHP:
md5($str)
.

Und diesen Hashwert dann einfach in die Datenbank speichern.
Ist das denn die Anwort auf deine Frage oder wolltest du was anderes wissen?
 
Hallo Olli!

Danke für Deine flinke Antwort!
Kannst Du mir vielleicht noch sagen, wo ich das denn genau hinschreiben muss?
Ich sag ja, bin absoluter Neuling!
Danke
 
Hallo,
so vielleicht?
Code:
<?php require_once('../Connections/verbindung_sasokunden.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO benutzer (Benutzer, Passwort, Email, Name) VALUES (%s, md5('%s'), %s, %s)",
GetSQLValueString($HTTP_POST_VARS['namename'], "text"),
GetSQLValueString($HTTP_POST_VARS['pass'], "text"),
GetSQLValueString($HTTP_POST_VARS['email'], "text"),
GetSQLValueString($HTTP_POST_VARS['name'], "text"));

mysql_select_db($database_verbindung_sasokunden, $verbindung_sasokunden);
$Result1 = mysql_query($insertSQL, $verbindung_sasokunden) or die(mysql_error());

$insertGoTo = "login.php";
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_verbindung_sasokunden, $verbindung_sasokunden);
$query_registrierung = "SELECT * FROM benutzer";
$registrierung = mysql_query($query_registrierung, $verbindung_sasokunden) or die(mysql_error());
$row_registrierung = mysql_fetch_assoc($registrierung);
$totalRows_registrierung = mysql_num_rows($registrierung);
?>

mfg
forsterm
 
Da Du hier mit Benutzerdaten arbeitest solltest Du etwas mehr auf Sicherheit achten!
Hier zwei Links zum Thema.

PHP Handbuch:
In vielen PHP Programmen liegt die größte Schwäche nicht an der Sprache selbst,
sondern bloß am Code, der nicht mit dem nötigen Augenmerk auf die Sicherheit
geschrieben wurde. Deshalb sollten Sie sich immer Zeit nehmen, die Implikationen
eines gegebenen Codestücks zu bedenken, um einen möglichen Schaden durch eine eventuell
unerwartete übergebene Variable festzustellen.
1.) mysql_real_escape_string

2.) Vordefinierte Variablen

Zu prüfen ist hierbei auch das register_globals auf off steht.
Ab PHP 4.2.0 Standard, jedoch von Provider zu Provider unterschiedlich.
Leicht zu prüfen mit phpinfo().
 
Noch zu allgemeinen Information: der Message Digest Algorithm 5 (MD5) ist keine Verschlüsselung sondern eine Hash-Funktion. Das deutlichste Merkmale einer Hash-Funktion gegenüber einer Verschlüsselung sind wohl, dass der Ausgabewert einer Hash-Funktion irreversibel ist, der Eingabewert also nicht ermittelbar ist. Ein anderer Unterschied ist, dass es bei Verschlüsselungen im Gegensatz zu Hash-Funktionen einen Schlüssel zum ver- und entschlüsseln gibt.
 
Das heißt dass du den md5-Wert nicht "entschlüsseln" kannst sondern wenn du überprüfen willst ob zb das Passwort ident ist wird auch vom Eingegebenen der Hashwert gebildet und die beiden dann verglichen. Wenn die 2 ident sind stammen sie vom gleichen Passwort.
 
Zurück