DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
PHP Password Hashing With Salt And Storing In Mysql
// description of your code here
<?php
function makeDBConnection() {
$connection = mysql_connect( 'localhost', 'username', 'password' );
if ( !$connection ) exit( "can't connect!" );
if ( !mysql_select_db( 'users', $connection ) ) exit( "can't select database!" );
}
function dbSafe( $value ) {
return '"' . mysql_real_escape_string( $value ) . '"';
}
////////////////////////////////////
// deal with the new user's password
////////////////////////////////////
// capture the new user's information, submitted from the login form
$userName = $_POST['userName'];
$userPassword = $_POST['userPassword'];
// check that it meets our password criteria;
// provide a message (and regenerate the login form) if it doesn't
$passwordProblem = array();
if ( strlen( $userPassword ) < 8 ) {
$passwordProblem[] = 'It must be at least eight characters long.';
}
if ( !preg_match( '/[A-Z]/', $userPassword ) {
$passwordProblem[] = 'It must contain at least one capital letter.';
}
if ( !preg_match( '/[0-9]/', $userPassword ) {
$passwordProblem[] = 'It must contain at least one numeral.';
}
$passwordProblemCount = count( $passwordProblem );
if ( $passwordProblemCount ) {
echo '<p>Please provide an acceptable password.<br />';
for ( $i = 0; $i < $passwordProblemCount; $i++ ) {
echo $passwordProblem[$i] . '<br />';
}
echo '</p>';
// generate form
?>
<form action="<?=$PHP_SELF?>" method="post">
<p>
username: <input type="text" name="userName" size="32" /><br />
password: <input type="password" name="userPassword" size="16" /><br />
<input type="submit" name="submit" value="Login" />
</p>
</form>
<?
exit();
}
// it is acceptable, so hash it
$salt = time();
$hashedPassword = sha1( $userPassword . $salt );
// store it in the database and redirect the user
makeDBConnection();
$query = 'INSERT INTO LOGIN VALUES (' . dbSafe( $userName ) . ', ' .
dbSafe( $hashedPassword ) . ', ' . dbSafe( $salt ) . ')';
if ( !mysql_query( $query ) ) exit( "couldn't add new record to database!" );
else header( 'Location: http://www.example.com/authenticated.php' );
//////////////////////////////////////////
// deal with the returning user's password
//////////////////////////////////////////
// capture the returning user's information, submitted from the login form
$userName = $_POST['userName'];
$userPassword = $_POST['userPassword'];
// retrieve the stored password and salt for this user
makeDBConnection();
$query = 'SELECT * FROM LOGIN WHERE username=' . dbSafe( $userName );
$result = mysql_query( $query );
if ( !$result ) exit( "$userName wasn't found in the database!" );
$row = mysql_fetch_array( $result );
$storedPassword = $row['password'];
$salt = $row['salt'];
// use the stored salt to hash the user's submitted password
$hashedPassword = sha1( $userPassword . $salt );
// compare the stored hash to the just-created hash
if ( $storedPassword != $hashedPassword ) {
exit( 'incorrect password!' );
} else {
header( 'Location: http://www.example.com/authenticated.php' );
}
?>





