好的,所以我有以下代碼。它在某種程度上應該起作用。 它首先檢查電子郵件是否在數據庫中,如果找到,它會將密碼重置爲從1000到9999的隨機值,並通過電子郵件發送。 sendMail是一個自定義函數,並以其他形式工作,所以它不是這裏錯誤的代碼塊。我不確定有一對夫婦的事情,這我相信可能導致下面的PHP錯誤:MySQL查詢錯誤我相信
<?php
define('INCLUDE_CHECK',true);
require 'connect.php';
require 'functions.php';
// Allowing MySQL Connection - Include_Check has to be TRUE
$email=$_POST['email'];
$email=mysql_real_escape_string($email);
$status = "OK";
$msg="";
if (!stristr($email,"@") OR !stristr($email,".")) {
$msg="Invalid E-Mail:<br>This address format is invalid!";
$status= "NOTOK";}
if($status=="OK") { // If e-mail is valid, status stays the same: query time!
$query="SELECT email,usr FROM tz_members WHERE email = '$email'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email;// Switching $email to $em for the query.
if ($recs == 0) { // $recs is 0, that means that address doesn't exist. Tell the guy to register ? Yes plz.
// Display the message
echo "We're sorry: We could not find your address in the database.<br>Click here to create an account!<br> <a href='register.html'>Register </a></center>";
exit; }
$pass = rand(1000,9999);
// Using the functions.php public: sendMail
send_mail( 'administrator[email protected]',
$_POST['email'],
'Username: '.$row->usr,
'Password: '.$pass);
mysql_query("UPDATE tz_members SET $row->pass = md5($pass)");
}
?>
差點忘了,這是HTML表單。
<form action="forgot.html" method="post">
<p><b>Email Address:</b> <input type="text" name="email" size="20" maxlength="40" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>" /></p>
<input type="submit" name="submit" value="Reset" /></div>
</form>
讓我描述我的問題:電子郵件發送,用$傳球,但在電子郵件的用戶名(見代碼知道我指的)是這樣的: 用戶名(5),這使我認爲它不會選擇好用戶名(MySQL中的列名稱是'usr')。
最後,更新查詢也必須錯誤,因爲密碼在MySQL中不會更新!
mysql_query("UPDATE tz_members SET $row->pass = md5($pass)");
這是更新查詢,我不確定它爲什麼不起作用。
$query="SELECT email,usr FROM tz_members WHERE email = '$email'";
這是在數據庫中發現的應該選擇usr和email的查詢。
'$ row-> pass'不是什麼,因爲他沒有在他的查詢的'SELECT'列表中包含'pass'。 – Barmar
但他的觀點仍然存在...... –