#005
no tagsシンプルな感じで。これはロゴ部分テキストなので編集なしで使えるかと。
マイコミジャーナルにこんな記事が。
[原則1] HTML 4.01を採用する場合でもXHTML 1.0を採用する場合でもStrict指定のDOCTYPEを使う
[原則2] 文字コードの指定はhead要素で一番最初に記述する。&は&のように表記する
[原則3] 適切にインデントする
[原則4] CSSとJavaScriptは外部ファイルに分離する
[原則5] タグは適切にネストする。a要素にh1要素を入れるというのはインライン要素にブロック要素を含めているという典型的な例。h1要素の中でa要素を指定する必要がある
[原則6] 不要なdiv要素を使わない
[原則7] class属性には何を意味するかを適切に記載し、将来変更するかもしれないスタイル情報などを含めない
[原則8] 書体はCSSで指定する。たとえば全部大文字で書くといったことはしないで、そういった場合にはCSSでtext-transform: uppercaseを使う
[原則9] divのid属性やclass属性に不要な情報を書かないで、代わりにbody要素のclassにコンテンツの内容を意味する言葉を指定する
[原則10] バリデーションを通してタグの閉じ忘れなどがないようにする。W3Cのバリデータが便利
[原則11] 論理的な順序で記述する。たとえばフッターは先頭ではなく末尾になるべき
[原則12] できることからする。既存のHTMLを書き換えるのは面倒だしCMSを使っている場合はおかしな記述を強要される。重要なのはHTMLをクリーンに保つ原則を知ったということにあり、次にHTMLを記述するときにできるところからはじめればいい
コーディングに気を使う人には常識的な感じ。僕は1ファイルをムダに巨大化させるのは嫌なので、[原則9]みたいにbodyにclassふるんじゃなくてcss分けてるけどね。
てか、そんな細かいことはどうでもよくてですね、HTMLを綺麗に保つために最も重要な項目が足りてない!
「糞なデザインを採用しない」
これ超重要。
とあるサイトにて、アクセス数が増加してくると
Can’t create a new thread (errno 12); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug
というエラーが連発し、ページが表示されなくなる現象に悩まされ中。コンソールでプロセスをみてみると、httpdが山のように・・・溢れています。。CPUの使用率も凄いことになってるし、Load Averageも高い。
スタンダードな企業サイト的な。めんどかったので、横並びのナビゲーション部分はロールオーバー処理させてません。一応pngもzipに入れてますんで、適当にいじってください。 あ、あとどうもLocalNavigation部分がIE6でおかしくなるっぽい。
泣ける。普通の人からしたらありえねーっていう笑い話かもしれんけど。
まぁ正確には僕はプログラマーじゃないけど、結局IT系の制作・開発ってのはどれもこんな感じなんだと思う。前は何とかもう少しマシにならんかなとか思ってたけど、最近はもうこういう職業なんだと思うようになってきたわ。同じような職業の人間からは同じような話しか聞かんし、結局嫌なら転職ではなく職業自体を変えるかフリーになるしかないんだろな。まぁフリーになったって食えない確率の方が高いだろうけど。
もし転職するとしたら、定時で帰ることを「逃げる」と呼ばない職業がいいですね。
今思いついたけどこういうプログラマーとかweb屋とかのブックマーク集みたいなの欲しいなー。心の支え。結構需要ありそうじゃね。ジャンル(職種別)にRSS登録できるようにして随時新着記事を取得してですね。…あーだめだ、そんな負の固まりのようなサイト誰が見るねん。
前回の続きです。
結構途中経過をすっとばしちゃったけど、だいぶ形にはなりました。
一昔前のWeb日記です。本当にありがとうございました。
さすがにこのままではヘボすぎなんで、あとはコメントとユーザ登録ですかね、とりえあず。
はい、ということで前回の続きです。
チェックボックスで、Cookieを使った自動ログインできるようにしたのと、ログアウトの処理を加えました。
<?php
require('../common/define.php');
require('../common/function.php');
require('../Connections/DB.php');
//セッションの開始(セッション名:memolog)
session_name('memolog');
session_start();
//cookie用のkeyがDBに入っていてそれが一致したら自動ログイン
if(isset($_COOKIE['mini_auto_login'])){
$sql="
SELECT name FROM mini_users
WHERE
auto='".myesc($_COOKIE['mini_auto_login'])."' ";
$rs = mysql_query($sql,$DB) or die(mysql_error());
$flg = mysql_num_rows($rs);
login_update_info();
}
//postされたときに実行
if($_SERVER['REQUEST_METHOD'] == "POST"){
//nameとpwdがmini_usersに格納されているかチェック
$sql="
SELECT name FROM mini_users
WHERE
name='".myesc($_POST['name'])."' AND
pwd='".sha1(myesc($_POST['pwd']))."'
";
$rs = mysql_query($sql,$DB) or die(mysql_error());
$flg = mysql_num_rows($rs);
login_update_info();
}
//ログインページに移動+情報書き込みの関数
function login_update_info(){
global $DB;
global $flg;
//存在したら
if(isset($flg) && $flg!=""){
//自動ログインにチェックがあったらsession_nameをクッキーに書き込む
if(isset($_POST['auto']) && $_POST['auto']=="1"){
$key=sha1(uniqid(rand(),true));
setcookie('mini_auto_login',$key,time()+3600*24*7);
//update文用
$sql_auto=",auto='".$key."'";
}
//IPとログイン時間を記憶
$sql="
UPDATE mini_users
SET
last_ip='".myesc($_SERVER['REMOTE_ADDR'])."',
last_login='".myesc(date('Y-m-d H:i:s'))."'
".$sql_auto."
";
$rs = mysql_query($sql,$DB) or die(mysql_error());
//セッションIDを変更
session_regenerate_id();
//login.phpに飛ばす
header("location:login.php");
}
}
?>
一部関数化したけど、だいぶ長くなってしまって見づらいな。。あとCookieの中身の文字列がDBに格納してあったら即ログインするようにしてるんだけどこれってやっぱまずいんかな…。でもCookieにユーザ名とかパスワードとか持たせたくないからなぁ。
<?php
require('../common/define.php');
require('../common/function.php');
require('../Connections/DB.php');
session_name("memolog");
session_start();
//自動ログインクッキーを削除
if (isset($_COOKIE['mini_auto_login'])) {
//DBからも情報を削除
$sql="
UPDATE mini_users
SET
auto=''
";
$rs = mysql_query($sql,$DB) or die(mysql_error());
setcookie('mini_auto_login', '', time()-42000, '/users/');
}
//セッション変数を全て解除する
$_SESSION = array();
//セッションクッキーを削除
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
//最終的に、セッションを破壊する
session_destroy();
header("Location: ./index.php");
?>
前回の記事で独自サービス作りたいと書きましたので、まずはログイン処理から作っていきましょうと。URLはhttp://mini.2inc.org/users/。