$crp_password = crypt('$password','$salt');
This is your problematic line.
When this evaluates the string and the salt, the single quote doesn't tell it to parse the variables in the string. It is actually evaluating the string "$password" (not the variable contents) with the salt "$salt", which of course returns the same crypted data ($st6HWsQnQGV.)
To fix this:
$crp_password = crypt($password,$salt);
or
$crp_password = crypt("$password","$salt");
-Ben