忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

応用(28) intra mail(6) Ajax通信

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

応用(28) intra mail(6) Ajax通信

Ajax通信部分の続き
 
第一ブロックのdataについては
1つでもオブジェクトとして記述する
 
4つのプロパティと値を記述
値の後は必ずカンマで区切る
オブジェクトなので(配列じゃないので)最終項目にもカンマを付けて大丈夫
 
mail.jsのon ('click'の中
 
  //Ajax通信
  $.ajax({
   url:'api/get_mail_data.php',
   type:'get',
   data:{'i':obj.id},
   dataType:'json',
  })
  .done(function(d){
   console.log(d);
  })
  .fail(function(){
  
  });
 

データをjsonにする
jsonエンコードしたものをエコーする
このページ(get_mail_data.php)は表示されないが、バックグラウンドで見に行っている
表現された文字列をコンソールに書き出してみましょう
 
 

書き出すべき場所にtextメソッドで書き出す
 
get_mail_data.phpのセレクト文がちょっとまずかったので書き換え
$sql = "SELECT subject,m_name,sendtime,content FROM mails,members WHERE mails.id=:id AND m_from=members.id";
 
mail.jsの.doneの部分はこうなる
 
  .done(function(d){
   //console.log(d);
   $('#subject').text("件名:"+d.subject);
   $('#m_name').text("送信者:"+d.m_name);
   $('#sendtime').text("送信日時:"+d.sendtime);
   $('#content').text(d.content);
  })
 

自分あてのメールじゃなくてもidが分かれば見れてしまうらしい。現状だと。
 
get_mail_data.phpを修正
 
<?php
session_start();
if(empty($_GET["i"]) || empty($_SESSION["login"])){
 exit();//なにもしません
} 
 
これでログインしていないユーザは排除できた
 
自分あてのメールしか読んじゃいけなくする
m_toと自分のログインのidが一致してないといけなくする
 
これはauth.phpで発行されてたからね
 $_SESSION["id"]=$row["id"];
ここですね
 
get_mail_data.phpを修正
$sql = "SELECT subject,m_name,sendtime,content FROM mails,members WHERE mails.id=:id AND m_from=members.id AND m_to=:m_to";
 
bindValueにも追加
$stmt->bindValue(":m_to",$_SESSION["id"],PDO::PARAM_INT);
 
確認 
 
 
外からの攻撃はみなさん気を付けるけど、
ログインしたユーザ間の防御も忘れずに
 

メールの本文の改行の対応
 
名前や件名や日時には改行はないが、本文はあり得る
 
<br>を入れれば改行するはず
改行コードはデータに入っているので、それを<br>に変換する必要がある
 
そういう関数がある
 
get_mail_data.phpでフェッチしてるけど
contentだけはhtmlにしておいて吐き出させたい
 
$row["content"] = nl2br($row["content"]);
 
これでhtml化される
nl2br:
nl to brの意味
エヌエルツーブレイクと読む
 
ここも変える必要がある
 
ここをhtmlタグにすると。
今度はサニタイズの必要が出てきた
 
get_mail_data.phpにもどって
「サニタイズしたやつ」を、nl2brにかける
$row["content"] = nl2br(htmlspecialchars($row["content"]));
 
内側から実行されるから、改行コードはのこってサニタイズ
→ラインブレークこみの本文がhtmlメソッドで吐きだされる 
 
改行が反映された
 
 
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R