PHPやります!PHPでスクリプト/CGI作ります! -6ページ目

【コーディング】ブログを簡単に見るヤツ5

ログアウトの処理です。

まず、必要なパラメータ。
なし。

処理の流れ

1.PHPの設定ファイル(php.ini)から設定値(session.use_cookies)を取得する。

2.取得した設定値が1だったら、クッキーを削除する。

3.セッション情報を破棄する。

4.「/」にリダイレクト。 → /にアクセスすると、ログイン情報が無いのでサイトのTOPが表示される。

コードは前の記事に、書いてます。大体同じです。
セッションの扱い

---------出来た---------
・ログイン
・ログインチェック
・RSS登録
・RSS解除
・ログアウト

---------まだ---------
・アカウント登録
・アカウント削除
・メール送信フラグ設定
・メール送信時間設定
・メールアドレス変更/登録
・オレ専用RSS作成
・メール送信(※sendmailの設定が必要)

ブログを簡単に見るヤツの予定

ちょっと整理してみま~す。

出来た昨日が、
・ログイン
・ログインチェック
・RSS登録
・RSS解除

まだの処理
・ログアウト
・アカウント登録
・アカウント削除
・メール送信フラグ設定
・メール送信時間設定
・メールアドレス変更/登録
・オレ専用RSS作成
・メール送信(※sendmailの設定が必要

まだ、やってないの結構あるね・・・実は、書いてないだけで、それなりに出来てはいるんだけどね。

全部出来たらドメイン取得して公開します。

ドメイン 熊川哲也120日間のバトル

【コーディング】ブログを簡単に見るヤツ4

登録したRSSを解除する処理です。

まず、必要なパラメータ。
ID アカウントのID
RSSID RSSのID

RSSのテーブル構成
mysql> desc tbl_rss;
+--------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+----------------+
| RSSID | int(11) | NO | PRI | NULL | auto_increment |
| ID | int(11) | NO | | NULL | |
| RSSURL | text | NO | | NULL | |
+--------+---------+------+-----+---------+----------------+

処理の流れ
1.ログインチェック → ログインしていなかったら、セッションクリアしてTOPにリダイレクト

2.パラメータチェック → エラーがあったら、X-StatにERR_ID_INVALID(502)を設定してレスポンス。
・ID 数値であること。
・RSSID 数値であること。

3.削除対象のRSSIDが存在すること。 → 存在しない場合は、X-StatにERR_NOTFOUND(402)を設定してレスポンス。
使うSQL
select count(id) from tbl_rss where ID = ? and RSSID = ?
$stmt->bind_param("ii", $id, $rssid);

4.RSSIDをtbl_rssから削除する。 → 削除成功したら、X-StatにSUCCESS(200)を設定してレスポンス。
使うSQL
delete from tbl_rss where ID = ? and RSSID = ?
$stmt->bind_param("ii", $id, $rssid);

これで、RSSの削除処理は出来上がり~。

そういえば、ログアウト処理書いてなかったな。

次ログアウトについてです。

PHPのログ

PHPをデバッグする為にログを出力します。

syslogという関数です。linuxの場合(管理者の環境の場合)は、/var/log/messageに出力されます。

bool syslog ( int $priority , string $message )

priorityは、
LOG_EMERG システムは使用不可
LOG_ALERT アクションを直ちにおこす必要がある
LOG_CRIT 致命的な条件
LOG_ERR エラーを発生する条件
LOG_WARNING 警告を発生する条件
LOG_NOTICE 通常の動作だが、特徴的な条件
LOG_INFO 情報を与えるメッセージ
LOG_DEBUG デバッグ用のメッセージ

ということです。
使い方。

syslog(LOG_NOTICE, "debug変数の値: $debug");
いつもこんなカンジで使ってます。

使うたびに、syslog(LOG_NOTICE~~~~

なんて書くのが面倒なのと、もう少し便利に使いたいのでclassにしました。

class class_log
{
public static function notice($log)
{
syslog(LOG_NOTICE, $_SERVER['PHP_SELF'] . ": $log");
}
}

まぁ、これだけです。毎回ログレベルを書かなくていいのと、どのスクリプトから出力したログなのかが分かるようになりました。
これだけのクラスですが便利だと思います。

使い方は、

require_once("class_log.php");
で、classを読み込んで、

class_log::notice("デバッグしてます");


なんて使いかたをします。

【設計】ブログを簡単に見るヤツ5

DBの構成なんですけど、ちょっと作っててマズーってのがあったので変更します。

いままでの構成
<アカウント用のテーブル>
ID(主キー)
名前
パスワード(※要暗号化)
オレ専用RSSのURL
メールアドレス(※要暗号化)
メールを送るかどうかのフラグ
メールを送る時間帯



メールアドレスを暗号化って書いてますけど、md5使うので復号出来ないんですね(笑)
復号出来ないと、メールの送信出来ません。

ということで、メールアドレスの暗号化をやめます。


適当な設計してるとこんなことになります。