Ich hatte eine Weile recherchiert und bekam sogar meine Hosting-Firma für Hilfe, aber ich habe ein Problem mit meinem PHP-Code und meine Datenbank über meine Website . Während der Code, den ich habe, Hash das Passwort, das ich eingeben, wenn ich versuche, das normale Wort Passwort zu verwenden, erscheint es als falsch. Aber wenn ich das Hash-Passwort kopiere und einfüge, funktioniert es.Hash ein Passwort in PHP, bevor es in die Datenbank geht, Fehler erhalten
<?php
/* NEW.PHP
Allows user to create a new entry in the database
*/
// creates the new record form
// since this form is used multiple times in this file, I have made it a function that is easily reusable
function renderForm($email, $pass, $error)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>New User</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
// if there are any errors, display them
if ($error != '') {
echo '<div style="padding:4px; border:1px soluser_id red; color:red;">'.$error.'</div>';
}
?>
<form action="" method="post">
<div>
<strong>Update User Info <br><br><br><br><br>Email: *</strong>
<input type="text" name="email" value="<?php echo $email; ?>" /><br/>
<strong>Password: *</strong> <input type="password" name="pass" value="<?php echo $pass; ?>" /><br/>
<p>* required</p>
<input type="submit" name="submit" value="Submit"> <br><br>Back to <a href="index2.html">home</a>?</div>
</form>
</body>
</html>
<?php
}
// connect to the database
include('connect-db.php');
// check if the form has been submitted. If it has, start to process the form and save it to the database
if (isset($_POST['submit'])) {
// get form data, making sure it is valuser_id
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
$pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
// check to make sure both fields are entered
if ($email == '' || $pass == '') {
// generate error message
$error = 'ERROR: Please fill in all required fields!';
// if either field is blank, display the form again
renderForm($email, $pass, $error);
} else {
// save the data to the database
mysql_query("INSERT users SET email='$email', pass=MD5('$pass')")
or die(mysql_error());
// once saved, redirect back to the view page
header("Location: view.php");
}
} else {
// if the form hasn't been submitted, display the form
renderForm('','','');
}
?>
Wie Sie sehen, es es ist Hash, wenn ich es in die Datenbank eingeben, aber wenn ich versuche, das Passwort bei der Art und Weise zu verwenden, es ursprünglich geschrieben wurde, es sagt mir, es die falsche ist.
Wenn Sie vor der Speicherung von Passwörtern Sicherheit hinzufügen möchten, ist 'md5' eine schreckliche Wahl. Informieren Sie sich über BCrypt. – Madbreaks
Mir ist klar, dass MD5 ziemlich nutzlos Hashing ist, aber wenn ich das zuerst zur Arbeit bringen kann, wäre ich mehr als froh, eine andere Methode auszuprobieren. –
Sie sollten vorbereitete Anweisungen für die Interaktion mit der Datenbank verwenden, Sie öffnen sich für die SQL-Injektion. http://php.net/manual/en/pdo.prepared-statements.php – kyle