
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像ファイルの名前をそのままU...
-
PHP8でWarning:Undefined varia...
-
phpの問い合わせフォームを作っ...
-
BASIC認証のフォームをデザイン...
-
composerをインストールしたい...
-
HTML PHP ラジオボタンのイベント
-
PHP8を使うと、大量のWarningが...
-
ファイルアップロードに関して...
-
PHPのエラーの解消法について教...
-
$_SESSIONに渡した後はそのまま...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
下記エラーメッセージ解決について
-
文字化けするのはなぜですか
-
ループ内に任意行を差し込む処...
-
PHPでMySQLのデータを検索したい
-
Resource id #3 をフィールドの...
-
sqlから多次元配列に要素を格納...
-
テーブルにINSERTができません...
-
MySQLにデータが書き込まれない
-
リストから詳細画面に遷移する...
-
会員登録したらメールが送られ...
-
phpMyadminとPHP上からの違い?
-
データベースから,そのレコー...
-
PHP と Mysql の連携時に発生す...
-
XAMMPが起動しません。
-
DBから同じ文字があるレコード...
-
phpのデータベースを使用したsq...
-
PHP+MYSQL IF文の初歩
-
for文で表示する画像を10件づつ...
-
MySQLのエラー出力
-
次のエラーメッセージ検証 テ...
おすすめ情報