勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

PHPのセッションでログイン、ログアウトの管理。あとセッションが保存されない場合の対処。

      2014/05/22

セッションはほとんど使ったことがなく、
色々つまづいたのでメモ。

やりたかった事はログインIDとPASSを入力させて、
POSTで届いた値をMySQLにあるかどうか参照して、
OKであればセッションでのフラグを発行し、
いくつかのページでログイン情報を引き回すというもの。

■ログイン時
<?
session_start(); //セッションを使うときは最初に書くとのこと

if ($_POST['loginid'] && $_POST['loginpass']) {
$sql = '
SELECT seq
FROM table_a
WHERE
loginid = "' . mysql_real_escape_string($_POST["loginid"]) . '"
AND
loginpass = "' . mysql_real_escape_string($_POST["loginpass"]) . '"
LIMIT 1
';
$row = mysql_query($sql);
if (mysql_num_rows($row) == 0) {
$error_msg = 'ログインID又はパスワードが違います。';
} else {
$_SESSION['loginflg'] = 1;
header("Location:./aaa.php");
}
}

?>
<html>
<head>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
<input type="text" name="loginid">
<input type="text" name="loginpass">
<input type="submit" name="login!">
<? if($error_msg): ?>
<?=$error_msg;?>
<? endif; ?>
</form>
</body>
</html>

■ログイン情報を引き回したいページ
<?
session_start();
if ($_SESSION['loginflg'] != 1) {
header("Location:./login.php"); //ログイン後のフラグがたっていない場合はログインページに遷移
}
?>

■ログアウト時
$_SESSION = array();

if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

session_destroy();
header("Location:./index.php");

■つまづいた点
セッションがちゃんと保存されなかった。
エラーログを見るとパーミッションがホニャラララみたいなこと
書いててFTPから見ると確か666になっていたと思う。
FTPから変更しても変わらずでどうしたものかと探していたところ、
エラーログみたいにini_setで保存先を任意で決められるみたい。

・参考サイト
http://www.gashimax.com/wiki/index.php?PHP%2F%A5%BB%A5%C3%A5%B7%A5%E7%A5%F3%B4%C9%CD%FD

ini_set("session.save_path","aaa/bbb");
みたいな形で書く。aaa/bbb/と最後のスラッシュはいらないみたい。

 - PHP

  関連記事

PHPページングテンプレ

使いやすいのがあったのでメモ。   $page            ...

MySQLで加算しつつNULL値は0にする

いくつかのコードに対して投票を行い、 その合計値をスコアとして出したい。 ただ、 ...

mPDFで「The /e modifier is …」エラー

pdf関連のPHPライブラリ「mPDF」を使っているページがエラーログにのってお ...

DTIのVPSにCakePHPを導入する方法

他社さんと連携して仕事をする際に「フレームワーク何か使いますか?」と聞かれて「使 ...

Facebookのタイムラインを取得して表示する方法

Facebookのタイムラインを取得してきて、表示させたいという案件があった。 ...

PHPで一括出力ではなく、ひとつずつ順次に出力する方法

PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...

PHPで値が空の配列を削除

やりたかった事は配列でキーは入っていて値が入っていない ものを削除したかった。 ...

ページング処理用PHP

/* @内容 ページング処理のfunction @使い方 //******親ペー ...

preg_matchについて

PHPでのpreg_matchについて教わることがあったのでメモ。 ■参考サイト ...

imgタグで作成したグラフをjQueryでリアルタイムに動かす

このグラフをリアルタイムプレビューさせる。 ■サンプル http://sampl ...