0

登録メールで送信される変数からユーザー アカウントを検証 (アクティブ化) するスクリプトを作成しようとしています。

URLは次のようになります

activate.php?confirm=h47H35gGdh7G6dh3j

データベースと$_GET["confirm"]照合してチェックしますが、発生する可能性のあるすべてのエラーをキャッチする方法がわかりません。たとえば、次のようになります。

  • ユーザーはすでにアクティブ化されています
  • アクティベーションコードが間違っています
  • アクティベーションコードがまったくないなど

これどうやってするの?

4

2 に答える 2

0

私は自分でそれに答えることができました。

基本的に、$_GET 配列から値を取得し、その値を使用してデータベース内に存在するかどうかを確認し、存在する場合は別の if ステートメントを使用して、そのユーザーのステータスが既に「アクティブ」に設定されているかどうかを確認しました。何もしませんが、アカウントがアクティブでない場合は、アクティブに設定してこれを確認します。

于 2011-09-01T14:09:14.233 に答える
0

アクティベーション コードを検出しない場合:

if (!isset($_GET['confirm']) || empty($_GET['confirm'])) {
    die('Error: an activation code is required.');
}

すでにアクティブ化されているユーザーを検出するには、アクティブ化するユーザー ID のデータベース ルックアップを実行し ( $uid)、データベースをチェックインして、ユーザーが既にアクティブ化されているかどうかを確認します。追加のルックアップを回避したい場合で、追加の更新を実行してもかまわない場合 (およびアクティブ化時間などを更新しない場合) は、更新を実行してから、影響を受けた行数 ( $stmt->rowCount()PDO 内) を確認できます。それがゼロでデータベース エラーがない場合は、ユーザーが既にアクティブ化されており、エラーをスローできます。

アクティベーション コードが間違っているとは、確認コードを検索するときにデータベースから空のセット (ゼロ行) が返された場合です。

于 2011-08-29T02:14:59.317 に答える