【コーディング】ブログを簡単に見るヤツ11
アカウント削除処理です。
必要な必要なパラメータ
・ID
※今は、リクエストのパラメータにIDのっけてるんですがせっかくセッションにMAILID持ってるので
セッションから取得するように変更したい。・・・予定。
処理の流れ
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック → エラーがあったら、エラー画面を表示。
・ID 数値であること。
3.退会する・退会しないの選択を表示。
------退会するを選択した場合の処理------
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック
・ID 数値であること。
3.退会対象のユーザー情報を取得する。
SQL
select ID, NAME, MYRSS, MAIL, MAILFLAG, MAILTIME from tbl_user where MAIL = ?
$stmt->bind_param("s", $idmail);
4.【オレ専用RSS】が存在する場合、削除する。
5.アカウント用のテーブルから対象ユーザーを削除する。
6.削除完了画面を表示する。
------退会しないを選択した場合の処理------
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック → エラーがあったら、エラー画面を表示。
・ID 数値であること。
3.TOPにリダイレクトする。
---------出来た---------
・ログイン
・ログインチェック
・RSS登録
・RSS解除
・ログアウト
・メール送信フラグ設定
・メールアドレス変更
・メール送信時間設定
・オレ専用RSS作成
・メール送信(※sendmailの設定が必要)
・アカウント削除
---------まだ---------
・アカウント登録
明日には、出来そうですね。コードの見直しして、いろいろ動かしてみます。
・・・しかし、つまんねーブログだな。
ちょっと考えます。
必要な必要なパラメータ
・ID
※今は、リクエストのパラメータにIDのっけてるんですがせっかくセッションにMAILID持ってるので
セッションから取得するように変更したい。・・・予定。
処理の流れ
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック → エラーがあったら、エラー画面を表示。
・ID 数値であること。
3.退会する・退会しないの選択を表示。
------退会するを選択した場合の処理------
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック
・ID 数値であること。
3.退会対象のユーザー情報を取得する。
SQL
select ID, NAME, MYRSS, MAIL, MAILFLAG, MAILTIME from tbl_user where MAIL = ?
$stmt->bind_param("s", $idmail);
4.【オレ専用RSS】が存在する場合、削除する。
5.アカウント用のテーブルから対象ユーザーを削除する。
6.削除完了画面を表示する。
------退会しないを選択した場合の処理------
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック → エラーがあったら、エラー画面を表示。
・ID 数値であること。
3.TOPにリダイレクトする。
---------出来た---------
・ログイン
・ログインチェック
・RSS登録
・RSS解除
・ログアウト
・メール送信フラグ設定
・メールアドレス変更
・メール送信時間設定
・オレ専用RSS作成
・メール送信(※sendmailの設定が必要)
・アカウント削除
---------まだ---------
・アカウント登録
明日には、出来そうですね。コードの見直しして、いろいろ動かしてみます。
・・・しかし、つまんねーブログだな。
ちょっと考えます。
【訂正】ブログを簡単に見るヤツ7(つづき)
前回の続き
メールアドレス変更しますか?で「はい」が選択された場合の処理。
必要なパラメータ。
ID アカウントのID
TOKEN トークン
1.パラメータチェック → エラーがあった場合は、エラー画面。
・ID 数値であること。
・TOKEN 設定されていること。
2.メールアドレス変更テーブルに、IDが登録されているか確認。 → 登録されていない場合は、エラー画面。
3.メールアドレス変更テーブルから「変更前アドレス・変更後アドレス・日時」を取得
SQL
select MAILNEW, MAILOLD, UNIX_TIMESTAMP(DATE) from tbl_mailtemp where ID = ? and TOKEN = ?
$stmt->bind_param("is", $id, $token);
4.アカウント用のテーブルに、更新対象のユーザーが存在するか確認。
→存在しない場合は、エラー画面。
4.アカウント用のテーブルに、新しいメールアドレスを設定
SQL
update tbl_user set MAIL = ? where ID = ?
$stmt->bind_param("si", $mail, $id);
5.メールアドレス変更テーブルから、レコードを削除。
6.セッションをクリアする。
7.メールアドレス変更完了画面を表示
メールアドレス変更しますか?で「いいえ」が選択された場合の処理。
必要なパラメータ。
ID アカウントのID
TOKEN トークン
1.パラメータチェック → エラーがあった場合は、エラー画面。
・ID 数値であること。
・TOKEN 設定されていること。
2.メールアドレス変更テーブルに、IDが登録されているか確認。 → 登録されていない場合は、エラー画面。
3.メールアドレス変更テーブルから「変更前アドレス・変更後アドレス・日時」を取得
SQL
select MAILNEW, MAILOLD, UNIX_TIMESTAMP(DATE) from tbl_mailtemp where ID = ? and TOKEN = ?
$stmt->bind_param("is", $id, $token);
4.メールアドレス変更テーブルから、レコードを削除。
5.TOPにリダイレクト
やっと出来た・・・
---------出来た---------
・ログイン
・ログインチェック
・RSS登録
・RSS解除
・ログアウト
・メール送信フラグ設定
・メールアドレス変更
・メール送信時間設定
・オレ専用RSS作成
・メール送信(※sendmailの設定が必要)
---------まだ---------
・アカウント登録
・アカウント削除
メールアドレス変更しますか?で「はい」が選択された場合の処理。
必要なパラメータ。
ID アカウントのID
TOKEN トークン
1.パラメータチェック → エラーがあった場合は、エラー画面。
・ID 数値であること。
・TOKEN 設定されていること。
2.メールアドレス変更テーブルに、IDが登録されているか確認。 → 登録されていない場合は、エラー画面。
3.メールアドレス変更テーブルから「変更前アドレス・変更後アドレス・日時」を取得
SQL
select MAILNEW, MAILOLD, UNIX_TIMESTAMP(DATE) from tbl_mailtemp where ID = ? and TOKEN = ?
$stmt->bind_param("is", $id, $token);
4.アカウント用のテーブルに、更新対象のユーザーが存在するか確認。
→存在しない場合は、エラー画面。
4.アカウント用のテーブルに、新しいメールアドレスを設定
SQL
update tbl_user set MAIL = ? where ID = ?
$stmt->bind_param("si", $mail, $id);
5.メールアドレス変更テーブルから、レコードを削除。
6.セッションをクリアする。
7.メールアドレス変更完了画面を表示
メールアドレス変更しますか?で「いいえ」が選択された場合の処理。
必要なパラメータ。
ID アカウントのID
TOKEN トークン
1.パラメータチェック → エラーがあった場合は、エラー画面。
・ID 数値であること。
・TOKEN 設定されていること。
2.メールアドレス変更テーブルに、IDが登録されているか確認。 → 登録されていない場合は、エラー画面。
3.メールアドレス変更テーブルから「変更前アドレス・変更後アドレス・日時」を取得
SQL
select MAILNEW, MAILOLD, UNIX_TIMESTAMP(DATE) from tbl_mailtemp where ID = ? and TOKEN = ?
$stmt->bind_param("is", $id, $token);
4.メールアドレス変更テーブルから、レコードを削除。
5.TOPにリダイレクト
やっと出来た・・・
---------出来た---------
・ログイン
・ログインチェック
・RSS登録
・RSS解除
・ログアウト
・メール送信フラグ設定
・メールアドレス変更
・メール送信時間設定
・オレ専用RSS作成
・メール送信(※sendmailの設定が必要)
---------まだ---------
・アカウント登録
・アカウント削除
時間の経過を調べる方法
指定時刻が、現在の時刻から何日経過しているか調べる。
//現在時刻のDateTime作成
$d1 = new DateTime(date("Y-m-d H:i:s"));
//指定時刻のDateTime作成
$d2 = new DateTime('2011-07-11 09:08:51');
echo $d1->getTimestamp();
echo "\n";
echo "\n";
echo $d2->getTimestamp();
echo "\n";
echo "\n";
//1日(24時間)足す
$d2->add(new DateInterval("P1D"));
echo $d2->getTimestamp();
echo "\n";
echo "\n";
//引き算してプラスだったら、24時間以上経っている。
echo $d1->getTimestamp() - $d2->getTimestamp();
echo "\n";
**************実行結果**************
1310429436
1310342931
1310429331
105
************************************
DateTime使えば、簡単に出来ると思ったのにDateIntervalのパラメータが使いにくい。
それに、なんかイヤだな・・・
↓普通に演算することにした・・・
$d1 = time();
$d2 = strtotime('2011-07-11 09:38:51');
echo $d1;
echo "\n";
echo "\n";
echo $d2;
echo "\n";
echo "\n";
echo $d1 - ($d2+60*60*24);
echo "\n";
echo "\n";
なんか、もっと良い方法ってないのかなぁ・・・
//現在時刻のDateTime作成
$d1 = new DateTime(date("Y-m-d H:i:s"));
//指定時刻のDateTime作成
$d2 = new DateTime('2011-07-11 09:08:51');
echo $d1->getTimestamp();
echo "\n";
echo "\n";
echo $d2->getTimestamp();
echo "\n";
echo "\n";
//1日(24時間)足す
$d2->add(new DateInterval("P1D"));
echo $d2->getTimestamp();
echo "\n";
echo "\n";
//引き算してプラスだったら、24時間以上経っている。
echo $d1->getTimestamp() - $d2->getTimestamp();
echo "\n";
**************実行結果**************
1310429436
1310342931
1310429331
105
************************************
DateTime使えば、簡単に出来ると思ったのにDateIntervalのパラメータが使いにくい。
それに、なんかイヤだな・・・
↓普通に演算することにした・・・
$d1 = time();
$d2 = strtotime('2011-07-11 09:38:51');
echo $d1;
echo "\n";
echo "\n";
echo $d2;
echo "\n";
echo "\n";
echo $d1 - ($d2+60*60*24);
echo "\n";
echo "\n";
なんか、もっと良い方法ってないのかなぁ・・・
【設計】ブログを簡単に見るヤツ9
メールアドレスの変更をする処理で、トークン保存用のテーブルを使います。
<メールアドレス変更テーブル>
ID ユーザーID
MAILNEW 新しいメールアドレス
MAILOLD 現在のメールアドレス
TOKEN トークン
DATE 更新日付
mysql> create table tbl_mailtemp(
ID int not null,
MAILNEW text not null,
MAILOLD text not null,
TOKEN text not null,
DATE timestamp);
こんなカンジです。
やはり、適当な設定をしているので変更になる可能性もあります。
<メールアドレス変更テーブル>
ID ユーザーID
MAILNEW 新しいメールアドレス
MAILOLD 現在のメールアドレス
TOKEN トークン
DATE 更新日付
mysql> create table tbl_mailtemp(
ID int not null,
MAILNEW text not null,
MAILOLD text not null,
TOKEN text not null,
DATE timestamp);
こんなカンジです。
やはり、適当な設定をしているので変更になる可能性もあります。
【訂正】ブログを簡単に見るヤツ7
メールアドレスを変更する処理の修正版です。
メールアドレスを変更する場合は、メールアドレス変更確認メールを送信するようにします。
確認メールから、メールアドレス変更URLにアクセスすることで変更完了とする。
まず、必要なパラメータ。
ID アカウントのID
MAIL設定する値変更するメールアドレス
処理の流れ
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック → エラーがあったら、X-StatにERR_PARAMETER(401)を設定してレスポンス。
・ID 数値であること。
・MAIL 正しいメールアドレス形式であること。
3.設定対象のIDが存在すること。 → 存在しない場合は、X-StatにERR_NOTFOUND(402)を設定してレスポンス。
存在するか確認する方法
4.変更するメールアドレスが既に登録されていないか確認。 → 既に登録されている場合は、X-StatにERR_MAIL_ALREADY(304)を設定してレスポンス。
5.メールアドレスを取得。
使用するSQL
select MAIL from tbl_user where ID = ?
$stmt->bind_param("i", $id);
6.トークン作成
メールアドレスとタイムスタンプをくっつけた物をmd5+base64したヤツ。
7.メールアドレス変更テーブルに「ID・変更前アドレス・変更後アドレス・トークン・日時」を登録。IDが存在する場合は、上書き。
使用するSQL
(存在する場合) update tbl_mailtemp set MAILNEW = ?, MAILOLD = ?, TOKEN = ? where ID = ?
$stmt->bind_param("ssi", $mailnew, $mailold, $token, $id);
(存在しない場合)insert into tbl_mailtemp (ID, MAILNEW, MAILOLD, TOKEN) values (?, ?, ?, ?)
$stmt->bind_param("iss", $id, $mailnew, $mailold, $token);
8.変更後メールアドレスに、メールアドレス変更確認メールを送信する。送信に失敗した場合は、X-StatにERR_MAIL(504)を設定してレスポンス。
9.X-StatにSUCCESS(200)を設定してレスポンス。
メールアドレス変更URLにアクセスしてからの処理。
1.パラメータチェック → エラーがあった場合は、エラー画面。
・ID 数値であること。
・TOKEN 設定されていること。
2.メールアドレス変更テーブルに、IDが登録されているか確認。 → 登録されていない場合は、エラー画面。
3.メールアドレス変更テーブルから「変更前アドレス・変更後アドレス・日時」を取得
SQL
select MAILNEW, MAILOLD, UNIX_TIMESTAMP(DATE) from tbl_mailtemp where ID = ? and TOKEN = ?
$stmt->bind_param("is", $id, $token);
4.メールアドレス変更テーブルの、更新対象レコードの更新日時から24時間以上経っていないか確認。
→24時間以上経っている場合は、無効なアクセスとする。メールアドレス変更テーブルからレコードを削除する。
メールアドレスを変更する場合は、メールアドレス変更確認メールを送信するようにします。
確認メールから、メールアドレス変更URLにアクセスすることで変更完了とする。
まず、必要なパラメータ。
ID アカウントのID
処理の流れ
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト
2.パラメータチェック → エラーがあったら、X-StatにERR_PARAMETER(401)を設定してレスポンス。
・ID 数値であること。
・MAIL 正しいメールアドレス形式であること。
3.設定対象のIDが存在すること。 → 存在しない場合は、X-StatにERR_NOTFOUND(402)を設定してレスポンス。
存在するか確認する方法
4.変更するメールアドレスが既に登録されていないか確認。 → 既に登録されている場合は、X-StatにERR_MAIL_ALREADY(304)を設定してレスポンス。
5.メールアドレスを取得。
使用するSQL
select MAIL from tbl_user where ID = ?
$stmt->bind_param("i", $id);
6.トークン作成
メールアドレスとタイムスタンプをくっつけた物をmd5+base64したヤツ。
7.メールアドレス変更テーブルに「ID・変更前アドレス・変更後アドレス・トークン・日時」を登録。IDが存在する場合は、上書き。
使用するSQL
(存在する場合) update tbl_mailtemp set MAILNEW = ?, MAILOLD = ?, TOKEN = ? where ID = ?
$stmt->bind_param("ssi", $mailnew, $mailold, $token, $id);
(存在しない場合)insert into tbl_mailtemp (ID, MAILNEW, MAILOLD, TOKEN) values (?, ?, ?, ?)
$stmt->bind_param("iss", $id, $mailnew, $mailold, $token);
8.変更後メールアドレスに、メールアドレス変更確認メールを送信する。送信に失敗した場合は、X-StatにERR_MAIL(504)を設定してレスポンス。
9.X-StatにSUCCESS(200)を設定してレスポンス。
メールアドレス変更URLにアクセスしてからの処理。
1.パラメータチェック → エラーがあった場合は、エラー画面。
・ID 数値であること。
・TOKEN 設定されていること。
2.メールアドレス変更テーブルに、IDが登録されているか確認。 → 登録されていない場合は、エラー画面。
3.メールアドレス変更テーブルから「変更前アドレス・変更後アドレス・日時」を取得
SQL
select MAILNEW, MAILOLD, UNIX_TIMESTAMP(DATE) from tbl_mailtemp where ID = ? and TOKEN = ?
$stmt->bind_param("is", $id, $token);
4.メールアドレス変更テーブルの、更新対象レコードの更新日時から24時間以上経っていないか確認。
→24時間以上経っている場合は、無効なアクセスとする。メールアドレス変更テーブルからレコードを削除する。