我是一名PHP初學者,我剛開始創建自己的網站。我遇到了一個問題,即mail()無理由返回FALSE。PHP郵件返回false
我的想法是實現密碼重置機制。當用戶輸入他的電子郵件時,HTML表單會將信息傳遞給php腳本,並且php腳本將執行驗證並通過隨機生成的密碼重置密碼,隨後將此臨時密碼發送給用戶電子郵件。以下是我的代碼:
<?php
session_start();
$email = $_POST['email'];
function random_string_generator ($character_options, $length_of_generated_string)
{
$random_string = "";
//count the number of characters available for picking
$num_valid_charactor = strlen($character_options);
for ($i = 0 ; $i < $length_of_generated_string; $i++){
$random_pick = mt_rand(1, $num_valid_charactor);
$random_char = $character_options[$random_pick-1];
$random_string .= $random_char;
}
return $random_string;
}
function createSalt()
{
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
}
$dbhost = 'localhost';
$dbname = 'my_db';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $conn);
$query = "SELECT password, salt FROM users WHERE email = '$email';";
$result = mysql_query($query);
if(mysql_num_rows($result) < 1)
{ //no such user exists
$_SESSION['error'] = '1';
$_SESSION['message'] = 'user does not exist';
header("Location: Forgot_password.php");
}
else
{
$random_pick_options = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$temporary_password = random_string_generator($random_pick_options, 12);
$hash = hash('sha256', $temporary_password);
$salt = createSalt();
$hash = hash('sha256', $salt . $hash);
$query = "UPDATE users set password=$hash, salt=$salt where email=$email;";
mysql_query($query);
//Email user the temporary password
$email_from = "[email protected]";
$email_to = $email;
$message = "Dear user,\n\n your temporary passowrd is: " . $temporary_password . "\n This is an auto-generated email. Please do not reply to this email address.\n\n ALEMC\n";
mail($email_to, "ALEMC: Password Reset", $message, "From: $email_from");
$_SESSION['message'] = "password reset";
header("Location: Login_form.php");
}
?>
任何想法是什麼錯?或者有沒有更好的方式來發送郵件然後使用PHP?
你在localhost上運行這個嗎?即WAMP或XAMP? –
當服務器的後端郵件發送服務未運行或未正確配置時,我主要收到有關郵件()的錯誤。因爲看起來你已經正確設置了PHP,所以我相信是這樣。 – SamT
你應該真的對SQL注入一些東西,或者你會在宇宙中打一個洞...... – Polygnome