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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQL, PHP をインストール後、...
-
PHP+MySQLでの検索結果の横並び...
-
mysql_queryでDB検索をしたいが...
-
SQLエラー
-
phpからMySQLへ日本語insert
-
PHPで絞り込み検索結果の件数を...
-
cakePHPのbakeでモデルを作る
-
<VB.NET>INSERT文でDBにデータ...
-
insert1つの処理でもトランザ...
-
データベースに存在するデータ...
-
VB.NET エラーになる箇...
-
PHPの記述でSQLiteのテーブルに...
-
データの一部をコピーして別の...
-
MySQLでデータベースにデータin...
-
Accessのテーブルへ複数の主キ...
-
cron
-
出勤表の作り方
-
phpのupdate,sql文にて連番カラ...
-
DB Error: no such field
-
Yomi-search(PHP)を設置する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stringaddslashes 半角¥が消える
-
PHP+mysqlでSQL文に文字数制限...
-
ボタンのonclick時における関数...
-
phpのエラーについてです
-
mysql_query等でレコード数を変...
-
SQLの結果が返ってこない
-
phpからMySQLへ日本語insert
-
会員登録したらメールが送られ...
-
縦に長い<table>でなく横に長い...
-
sqlから多次元配列に要素を格納...
-
XAMPPで画面が真っ白になります。
-
Resource id #3 をフィールドの...
-
PHP+MYSQLで直近3件のデータ表示
-
テーブルのレコード数を取得し...
-
XAMMPが起動しません。
-
DB(MySQL)から複数行のデータを...
-
テーブルに入っているデータと...
-
配列に値が入らない
-
MySQLのデータを使ってプルダウ...
-
if文で、レコードが無い場合だ...
おすすめ情報