sendmail.php
<?php
session_start();
if(empty($_SESSION["login"])){
header("Location: login.php");
exit();
}
if(empty($_POST["m_to"]) || empty($_POST["subject"]) || empty($_POST["content"])){
header("Location:mailform.php");
exit();
}
require_once("config.php");
$sql="INSERT INTO mails(subject,m_to,m_from,content)";
$sql .=" VALUES(:subject,:m_to,:m_from,:content)";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(":subject", $_POST["subject"], PDO::PARAM_STR);
$stmt->bindValue(":m_to",$_POST["m_to"],PDO::PARAM_INT);
$stmt->bindValue(":m_from",$_SESSION["id"],PDO::PARAM_INT);
$stmt->bindValue(":content",$_POST["content"],PDO::PARAM_STR);
$stmt->execute();
header("Location: mypage.php");
?>
またエラーがでたが解決できた
Parse error: syntax error, unexpected '"', expecting ')' in C:\xampp\htdocs\php\makino\intra_mail\sendmail.php on line 17
ぜったいこの前の行のどこかでの閉じ忘れと踏んだが、ほんとうにその行で"がおかしかったというめずらしいケース↓
$stmt->bindValue(":subject", $_POST["subject"], PDO::PARAM_STR");
このPARAM_STRの後の"が不要
自分で突き止められるようになってきた。よかった
自分あて(どらえもん→どらえもん)に送るとこの通り増えた
自分でcssで
hr{
margin: 1rem 0 1rem 0;
}
を加えたらキャッシュがきつかった。ctrl+f5連打で反映
cssのキャッシュは強いようだ
h1{
border-left:15px solid #368dff;
border-radius:3rem;
}
こんなにして遊んでたら
こんな風になって面白い
ログアウト処理
え?mypageにlogoutつけた?
1限目でやったのかな
login.phpを修正
現状実際にloginの処理はここではされていないので冒頭部分を作り直す
phpを追加
ここでやること:
セッション開始
$SESSIONをリセット
手元のクッキーを消す
サーバ側のクッキーをデストロイ
setcookie
第1引数 クッキーの名前
2 クッキーの名前
3 有効期限
このあたりまでコントロールできたらよろしい
オプションがたくさんあるが3つ出来たらよろしいらしい
セッションネームというずばりな関数をつかうとよい(環境によって名前が違うのでこれを第1にいれるとクッキーの名前にまちがいがない)
セッションに使われているクッキーの名前を取得できる便利な関数
消したいときには第1引数のかっこの中はから、第2"",
第3は今すぐ消したいので「過去」を指定
time()というのを使うと現在時刻が取得できる
time()-360
とかしてマイナスな数(過去)にする
↓
session_start();
$_SESSION=[];//セッションデータを破棄
setcookie(session_name(),"",time()-360);//クライアントのクッキー削除
session_destroy();//サーバー側のクッキー削除
ログインページとログアウトページをわけると「ログアウトしました」みたいのが表示できるメリットはある
物理的に分けたほうがシンプルはシンプルかもしれないとのこと
mypageに追加
<div>
<a href="mailform.php">新規メール作成</a> | <a href="login.php">logout</a>
</div>
sessionのデータにjsからアクセスできるというのはセキュアじゃない考え方らしい