1

私は、ユーザーがアカウントを登録するための単純な php/mysql ソリューションを永遠に探していました。これは、管理者がログインする前に承認を求めるリクエストを管理者に送信します。これは可能ですか?もしそうなら簡単ですか?

チュートリアルと以前の質問を探していましたが、まだどこにも行きません! 正常に登録されましたが、管理者の電子メールにリクエストを送信することを理解できませんでした...

ありがとう

4

3 に答える 3

1

is_approvedユーザーテーブルに列を追加することで、簡単に実装できます。

ユーザーが登録するとき、このフィールドをfalseデフォルトで に設定します。

新しい登録に関するメールを管理者に送信し、ユーザーを承認するには、 に変更is_approvedするだけtrueです。

もちろん、ユーザーがログインしようとしたときにこの値を確認し、false の場合はアクセスを拒否する必要があります。

適切なリソースは、必要なことを正確に実行するコードを含む sfGuardパッケージです。

于 2012-05-16T23:38:45.140 に答える
1

ユーザー テーブルに BOOLEAN カラムを追加し、user_approvedデフォルトで 0 に設定できます。

新しいユーザーが登録したら、PHP メール機能を使用して承認を求めるメールを管理者に送信します。

    $to = 'admin@yourwebsite.com';
    $subject = 'User needs approval';
    $message = 'The user {username} needs your approval' .
    '----------------------------------- ' . "\r\n" .
    'Accept: ' . $accept_link . "\r\n" .
    'Decline: ' . $decline_link . "\r\n";

    $_headers = 'From:admin@yourwebsite.com' . "\r\n"; // Set FROM headers
    mail($to, $subject, $message, $headers); // Send the email

accept_linkandは、 PHP ハッシュ関数decline_linkを使用して生成できます。

たとえば、SHA512 ハッシュを使用できます。

$accept_link = "yourwebsite.com/approval.php?e=" . $email . "&h=" . hash('sha512', 'ACCEPT');

$decline_link = "yourwebsite.com/approval.php?e="  . $email . "&h=" . hash('sha512', 'DECLINE');

PHP スクリプトでは、 get変数を確認して、管理者が登録要求を受け入れるか拒否するかを確認approval.phpするだけです。

$hash = $_GET['h'];
$email = $_GET['e'];

if($hash == hash('sha512', 'ACCEPT')){

  //ACCESS MYSQL DATABASE
  //FIND THE USER AND SET user_approved = 1
  //WHERE email = $email

}else if($hash == hash('sha512', 'DECLINE')){

  //MAIL THE USER NOTIFYING THAT THE ACCOUNT HAS NOT BEEN APPROVED

}
于 2016-05-28T23:36:54.300 に答える
0

管理者に電子メールを送信する場合、PHP には mail() 関数があります: http://php.net/manual/en/function.mail.php

#given $email, $user
$mail_success = mail("admin@mysite.net","User Registration awating approval","User ".$user." has registered and is on the waiting list.\n User's email: ".$email);
if(!$mail_success) { echo "Warning: Mail delivery failed"; }

複数の電子メールを送信する場合、mail() 関数はまったく効率的ではないことに注意してください。

于 2012-05-16T23:38:33.707 に答える