1

パスワードを忘れた場合のリンクをユーザーのメール アドレスに送信するスクリプトを作成しています。ユーザーの電子メール アドレス、キー、および expdate を保持する「recoveryemails_enc」というテーブルを作成しました。ユーザーのメールアドレスは、「ユーザー」テーブルから取得されます。スクリプトを実行すると、キーと有効期限を含む適切なリンクが作成されますが、データはデータベースに挿入されません。以下は私のコードです。何が間違っているのかわかりません。

$result = mysql_query("SELECT email from users WHERE email = '$email' AND active='1'") or die(mysql_error());       
    $expFormat = mktime(date("H"), date("i"), date("s"), date("m")  , date("d")+3, date("Y"));
    $expDate = date("Y-m-d H:i:s",$expFormat);
    $key = md5($email . rand(0,10000) .$expDate);                    
    $no_of_rows = mysql_num_rows($result);                    
    if ($no_of_rows > 0) { 
        $result = mysql_fetch_array($result);      
        $query = mysql_query("INSERT INTO recoveryemails_enc(email, Key, expDate) VALUES('$email', '$key', '$expDate')");
        $passwordLink = "<a href=\"?a=recover&email=" . $key . "&u=" . urlencode(base64_encode($email)) . "\">http://www.mywebsite.com/forgotpw.php?a=recover&email=" . $key . "&u=" . urlencode(base64_encode($email)) . "</a>"; 

テーブルの作成に使用した編集コマンド:

CREATE TABLE IF NOT EXISTS `recoveryemails_enc` (  

IDbigint(20) unsigned zerofill NOT NULL auto_increment,
emailbigint(20) NOT NULL,
Keyvarchar(32) NOT NULL,
expDatedatetime NOT NULL,
PRIMARY KEY ( ID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

4

2 に答える 2

0

問題はmysqlクエリにあります。これを試してください:

$query = mysql_query("INSERT INTO recoveryemails_enc(`email`, `Key`, `expDate`) VALUES('".$email."', '".$key."', '".$expDate."')");
于 2013-10-14T04:59:47.613 に答える