No.2ベストアンサー
- 回答日時:
こんな感じになると思います。
但し、以下の例はわかりやすさを優先するため、エラー処理やサニタイズ処理などを全く行っていませんので注意してください。
また、実際に動かしてみていないコードなので、エラーがあるかもしれません(笑) 適当に修正しながら使ってください。
以下の仮登録用テーブルを作成しておく。
| CREATE TABLE interim_registration (
| username varchar(32) NOT NULL,
| password varchar(32) NOT NULL,
| mailadr varchar(64) NOT NULL,
| reg_key varchar(64) NOT NULL
| );
----
<html><!-- register.html -->
<body>
<form action="http://www.example.com/path/to/register.php" method="post">
希望ID:<input type="text" name="username"><br>
パスワード:<input type="password" name="password"><br>
メアド:<input type="text" name="mailadr"><br>
<input type="subimit" value="仮登録">
</form>
</body>
</html>
----
<?php // http://www.example.com/path/to/register.php
mysql_connect($host, $user, $password);
mysql_select_db($database);
$reg_username = $_POST['username'];
$reg_password = $_POST['password'];
$reg_mailadr = $_POST['mailadr'];
$reg_key = sha1(uniqid(rand(),1)); // ランダム文字列の生成
$sql = 'INSERT INTO interim_registration '.
'(username, password, mailadr, reg_key) '.
"VALUES ('$reg_username', '$reg_password', '$reg_mailadr', '$reg_key');";
mysql_query($sql);
$to = $reg_mailadr;
$subject = 'e-mail confirm';
$message = "http://www.example.com/path/to/confirm.php?usern …
$headers = 'From: webmaster@example.com';
mail($to, $subject, $message, $headers);
echo "$mailadr宛に確認メールを送信しました。";
?>
----
<?php // http://www.example.com/path/to/confirm.php
mysql_connect($host, $user, $password);
mysql_select_db($database);
$username = $_GET['username'];
$reg_key = $_GET['reg_key'];
$sql = 'SELECT * FROM interim_registration '.
"WHERE username = '$username' AND reg_key = '$reg_key';";
$sql_result = mysql_query($sql);
if(($userdata = mysql_fetch_assoc($sql_result) == NULL)
{
echo "キーが一致しません。";
}
else
{
// $userdata['username'], $userdata['password'], $userdata['mailadr'] を使って、正規ユーザー登録処理を行う
}
----
あと、interim_registrationテーブルに、仮登録日時を記録して、本登録時に古すぎる仮登録を除外し、また、本登録が済んだら仮登録のデータを消して無効にする、等の処理があれば良いと思います。
No.1
- 回答日時:
めんどくさがりの私が作るなら、
1:仮登録でもDBにとりあえず入れちゃう。でも仮登録の状態がわかるように、touroku とかのカラム作って、仮登録の時入れたら0
2:メールの本文に登録解除するアプリに"ユーザID+現在時刻"を暗号化したパラメータ値を送るリンクを書く
3:アプリで復号して30分以内のアクセスならユーザIDからDBのtouroku を1にする
みたいな
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ハッキング・フィッシング詐欺 OKWAVEのログインと会員登録と新規登録 1 2023/04/10 17:09
- 迷惑メール・スパム ヘルスケア テクノロジーズ 1 2023/02/13 08:23
- 病院・検査 木下グループ新型コロナPCR検査キットを購入して月曜日にポスト投函しました ですが、その際に会員登録 1 2023/01/20 21:36
- その他(ネットショッピング・通販・ECサイト) URLの有効期限について 1 2022/09/10 16:41
- ハッキング・フィッシング詐欺 別のサイトでごめんなさい OKWAVE 認証されたのに 5 2023/04/06 12:31
- Android(アンドロイド) コスモ石油のアプリの機種変後の再登録ができません。 利用しているスタンドからお知らせは来るのでメアド 1 2023/02/02 19:48
- 迷惑メール・スパム 企業の広告メールに法的規制は無いのでしょうか? 1 2022/04/27 13:52
- ポイントサービス・マイル ポンタポイントの登録の仕方を教えてください 1 2023/01/19 22:56
- 迷惑メール・スパム アマゾン迷惑メール 2 2022/04/26 23:41
- 求人情報・採用情報 今日、ホテルのアルバイトに、タウンワークから応募しました。 すると、会社からGメールが届き、事前登録 1 2022/03/31 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文2つ実行
-
sqlから多次元配列に要素を格納...
-
MySQLのUPDATE実行結果を受け取...
-
テーブルに入っているデータと...
-
SQLの結果が返ってこない
-
会員登録したらメールが送られ...
-
Resource id #3 をフィールドの...
-
XAMPPで画面が真っ白になります。
-
変数内のデータをmysqlのデータ...
-
PHP+mysqlでSQL文に文字数制限...
-
postした値のデータ型
-
MySQLでデータベースにデータin...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
ResultSetインターフェイスでの...
-
insert1つの処理でもトランザ...
-
PHPで[]の使い方について
-
csvをDBへ読み込んだら、NULLが...
-
JAVA SQLServerException 列名 ...
-
VB.NET
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sqlから多次元配列に要素を格納...
-
PHP+mysqlでSQL文に文字数制限...
-
phpのエラーについてです
-
PHPで絞り込み検索結果の件数を...
-
PDOを使いたい
-
CSVをダウンロードさせた際、CS...
-
stringaddslashes 半角¥が消える
-
MySQLのデータを使ってプルダウ...
-
mariadbでのエラー
-
php+mysql sql文実行について
-
XAMMPが起動しません。
-
SQL文2つ実行
-
会員登録したらメールが送られ...
-
「mysqlclient」の事が分からな...
-
if文で、レコードが無い場合だ...
-
mysql_real_escape_string
-
XAMPPで画面が真っ白になります。
-
配列に値が入らない
-
SQLの結果が返ってこない
-
ボタンのonclick時における関数...
おすすめ情報