web制作 | 夜間飛行 備忘録

web制作講座で教わったあれこれを書き留めていきます

71日目 | web制作

本日は…

php復習


php.iniファイル
※Dateのところ、timezoneをAsia/Tokyoに変えて、上のBerlinのところを先頭に;を入れておく
※default_charsetの先頭のセミコロンを取る

ini=initialization=初期設定


XSS対策
echo htmlspecialcharset($name,ENT_QUOTES,'utf-8');


■issetの使い方
<issetによるphpファイルを直に開いたときのエラーが出ないようにする設定の仕方>
ifを使って場合わけしてやる

<?php
if(!isset($_POST['name'])||!isset($_POST['age'])){
  header('Location:./post.html');
}
exit;
?>

 ※issetは変数の中に値があるか否かを判別する関数
 ※!は、trueを反転させる…つまりtrueじゃないとき、という条件に変更する

 ○headerは色々できるが、今回はLocationによって、そこへ飛ばす。
 ○Location:./post.htmlでpostに飛ばせる。
  ※./ はついてもつかなくても意味は同じ。混在させてはいけないが、どっち使うも可。

 ⇒なぜnameとage両方必要か。。。
  htmlのほうをDLされたとき、そこからデータをオンラインのphpファイルに飛ばすことができるが、そこで、項目を減らすなど改ざんされたhtmlからphpに飛ばされたときに、項目が全部設定してないと抜けてしまうことがある。セキュリティ的な問題。


■var_dumpの使い方
echoやprintでは配列変数は表示できない77が、var_dumpは可能。
array(n){['name']=>string(8)"お名前"['age']=>・・・・・}
と表示。

※print_r($_POST)でも似たような結果は出せる


■空文字問題
空欄で送っても値的には""になるので、中に文字があるものと判別される。
つまりissetでは判別できない。


PHPの癖

<?php

$hensu1 = 2;
$hensu2 = '2s';
if($hensu1==$hensu2){
  print 'おなじだよ';
}
//phpの場合、文字列でも一番最初に半角数字が入っていると、数値としてみなすという癖がある

例えば

<?PHP
$hensu1 = 2;
$hensu2 = '2s';
$hensu3 = $hensu1 + $hensu2;
echo $hensu3;//4が出てきてしまう

ので、===で同型同値比較をしてやる。
頭が文字列だと0になる。
間に文字列があるとその後ろはシカト。
'33s7'なら、33になる。
'aa'なら0になる。


■メールを作成