2016年11月10日木曜日

PHP の `headers already sent` エラー


PHP の `headers already sent` エラー

(参考)
http://ja.stackoverflow.com/questions/5453/php-%E3%81%AE-headers-already-sent-%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AF%E3%81%A9%E3%81%86%E7%9B%B4%E3%81%97%E3%81%9F%E3%82%89%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B

● header()の前に、出力文字(空白他)が含まれていてはいけない。
● 例)includeするhead.php に<head>が含まれていた場合。includeの前に header()をセットする。

--エラー----------------
<?php
session_start();
$title ="duf20page:Contact";
include 'head.php';
?>

<?php
header("Content-type: text/html; charset=utf-8");
header('X-FRAME-OPTIONS: SAMEORIGIN');
?>

--エラー----------------
<?php
session_start();
$title ="duf20page:Contact";
?>

<?php
header("Content-type: text/html; charset=utf-8");
header('X-FRAME-OPTIONS: SAMEORIGIN');
include 'head.php';
?>


--エラー----------------
<?php
session_start();
$title ="duf20page:Contact";
include 'head.php';
header("Content-type: text/html; charset=utf-8");
header('X-FRAME-OPTIONS: SAMEORIGIN');
echo sha1(session_id());
?>


解決した(1)
● head.php に<head>が含まれている。includeの前に、header()をセットする。
● header()の前に、出力文字(空白他)が含まれていてはいけない。
--OK----------------
<?php
session_start();
$title ="duf20page:Contact";
header("Content-type: text/html; charset=utf-8");
header('X-FRAME-OPTIONS: SAMEORIGIN');
include 'head.php';
?>


解決した(2)
● head.phpで既にchersetしてあるので、header("Content-type: text/html; charset=utf-8");を省いた。
--OKOK----------------
<?php
session_start();
$title ="duf20page:Contact";
header('X-FRAME-OPTIONS: SAMEORIGIN');
include 'head.php';
?>
-----------------------


2016年11月8日火曜日

CSRF (Cross site request forgeries) クロス サイト リクエスト フォージェリ

CSRF対策 メモ(php)

参考)ドットインストール
http://dotinstall.com/lessons/bbs_php_v2/24508
http://dotinstall.com/lessons/bbs_php_v2/24509

1) フォームをポストするファイルにトークンを仕込む。

  1.トークンを作る
    例) $token=sha1(uniqid(mt_rand(),true))

  2.サーバ上に記録。
    (1) session_start() で、セッションを使えるようにして、
    (2) 変数 $_SESSION['token'] にトークンをセット。
  
  3.トークンをデータとともに送信する
    formからPOSTで、データとトークンを送り出す


2) データ受取りの処理をするファイルで、
  サーバ上の記録と、POSTで受け取ったトークンを比較する。

  サーバ上に記録がなかったり、値が異なっている場合は、異常。
  if ( empty($_SESSION['token'])  ||  ($_SESSION['token'] != $_POST['token']) ) 


---------------
◆ session_start エラー

 エラーメッセージがでた :
Warning: session_start() [function.session-start]: Cannot send session cookie....

session_start() は、必ず、先頭に記述すること。
http://www.phppro.jp/phpmanual/php/ref.session.html
http://www.phppro.jp/phpmanual/php/function.session-start.html

---------------
◆_CSRF対策のトークンをワンタイムにしたら意図に反して脆弱になった実装例
徳丸浩の日記 2011年01月27日
http://www.tokumaru.org/d/20110127.html

(本文より)> トークン生成は安全な乱数を用いるべきであり、安全な疑似乱数生成器がない場合は、セッションIDそのものを使う方法が妥当

(コメントより)> 時刻を種にしても安全性はたいして向上しない

---------------
◆CSRF対策の実際
2011年3月4日 23:17
http://www.phppro.jp/qa/3140
answerer:ockeghem 3月7日 09:20
・トークンの要件は、「第三者に推定されないこと」
・セッションID(session_id)は推定されない(ように対策されている)という前提をおくことができます
・トークンとして推測の困難なものを使っている場合、それに加えてハッシュ関数を通す必要はありません

---------------

2016年10月27日木曜日

bracket メモ (ライブプレビューの設定)

◆ライブプレビューの設定

 [ファイル]-[プロジェクト設定]

 例えば、http://localhost/フォルダ名/ と設定しておけば、
 PHPもそのまま、ライブプレヴューできる。

2016年10月21日金曜日

Chrome デベロパーツールのパネルの表示場所

Chrome デベロパーツールのパネルの表示場所

画面下・画面右横・フロート、と選ぶことができます。



デベロパーツールの、設定アイコン(2016年10月時点で、縦に点が3つ並んでいる形)をクリックして、選びます。



2016年10月19日水曜日

blogger 設定のリンク (随時メモ)

ブログ一覧:
https://www.blogger.com/home


ユーザー設定を編集:
https://www.blogger.com/user-settings.g
   ◆全般
        ユーザー プロフィール
             Blogger
             Google+
        Blogger Draft を使用する
    ◆メール通知
        機能のお知らせ


プロフィールを編集:
https://www.blogger.com/edit-profile.g


画像を削除:
https://picasaweb.google.com/home
  ◆picasaから。
   詳しい説明はここを参考に。
   http://www.memorou.com/2013/12/bloggerpicasa.html

2016年10月12日水曜日

イラストレータで角丸長方形

イラストレータで角丸長方形を描く


編集しやすい描き方

1. 長方形ツールを使う(角丸長方形ツールは使わない)

2. 効果-スタイライズ-角を丸くする

3. 編集するときは、アピアランスで編集(「角を丸くする」で、fxをクリック)

2016年9月28日水曜日

photoshopを使って、gifアニメを小さくする方法

photoshopを使って、gifアニメの表示サイズを小さくする方法


例えば、400*400pxを、200*200pxにしたいときの方法です。


【1】準備

  1.  gifファイルをphotoshopで開く

2016年9月2日金曜日

ロイヤリティフリー リンク集 (随時更新予定) ☆2016-10-15追記

著作権フリー(*1)素材の探し方。以下、簡単に説明。

 1)使用料金:著作権フリー素材には、有料のものと無料のものがあります。

 2)使用条件:著作権フリーとあっても、必ず使用条件を確認してください。
  ・商用(非営利目的)利用...可/不可
  ・編集(改変)...可/不可/程度によって可
  ・作者やサイトを明記すれば、使用可、など

  ※ 一番安全なのは、Creative Commons のゼロ (CC0)
   ・商用(非営利目的)利用...可
   ・編集(改変)...可
   のものです。

 3) ネット上での見つけ方

2016年5月29日日曜日

MS-officeのマニュアルを英語で読みたい時

MS-officeのマニュアルを英語で読みたい時 ほとんど日本語で問題ないのですが、時々英語にしたくなるので。 メモ。 https://msdn.microsoft.com/ja-jp/library/office/ee861523.aspx 「ja-jp」を、「en-us」 に書き換える 逆もまたOK。翻訳がある場合に有効。

2016年5月4日水曜日

エクセルにフォームをつける Part II (01)- vbaプログラミング:[次行][前行]をつける、変数を使う

フォームの機能を増やす(その1) [次行][前行]をつける、変数を使う。

※前回の内容は→ Part I (04)です。
前回終了時点のサンプルファイルはここにあります→ 右クリックでここからダウンロードできます(ファイル名sample04.xlms)

PartIの、VBAの規則(文法)は2つでした。
◆ プログラムは、Subで始まりEnd Subで終わるプロシージャの中にまとめて書く。
◆ セルやフォーム上のオブジェクトの書き方は
・シート上のセルは、WorkSheet("シート名").Cells(行,列)で表す。
・フォーム上のオブジェクトは、オブジェクト名をつけて使う。

PartIIでは、プログラム特有の『変数』『ループ構文』『コメント』などを使って、作りこんでいきます。


今回(Part2の第1回)は、「次へ」「前へ」ボタンをつけて、行を移動できるようにします。

このときに『変数』という考え方を使います。

2016年4月20日水曜日

Excel VBA : 数値をゼロ埋めして文字列にする

Excel VBA : 数値をゼロ埋めして文字列にする

超★手抜きの方法です。

例)数値 12 を、3桁の文字列 012 にする

 


 dim i as integer
 dim s as string
 
 i = 12
 s = Mid( LTrim(Str(1000 + i)), 2, 3)

 1. 数字を 「12」
 2. 数字を4桁にするために、1000を加える → 「1012」
 3. str関数で文字列にする → 文字列「 1012」 になる
 4. str関数は一番左に符号用のスペースが入るので、LTrimでとる → 文字列「1012」
 5. Mid関数で、2文字目から3桁切り出す → 文字列「012」

5桁の0埋めにしたければ、100000を加えて、2文字目から5桁切り出せばOKです。



BloomというAI

オープンソースのAI「BLOOM」が出ました。 日本語も使えるというので、早速サンプルページで遊びました。 白い文字が私。ピンクの文字がAI。 ↑AIとやりとり できたのが、これ。AIとの合作超短編童話😆 『 傘をさして公園を歩いていたら、小さなリスが足...