WebEngine

だらだらと綴る技術系メモ

php

PHPのforeachの罠

php

foreachの$valueは参照渡しではない $arrayに格納されている要素を、すべて空文字列に置き換えたいとします。 方法はいろいろありますが、今回はforeachの話なので、foreachを使います。 string(3) "php" [1]=> string(6) "python…

PDOのfetch系メソッド

前提 PHP 5.6 mysql Ver 14.14 Distrib 5.7.18 Google Chromeでしかテストしていません PDOのfetch系メソッドをまとめただけです テストデータを用意 ※ fetch系メソッドだけ調べたい方は下の方まで飛ばしてください ターミナルでMySQLを起動。それから以下の…

値が重複することを考えて連想配列をソート[PHP]

php

2017.5.9修正 この記事のタイトルは「キーに優先順位をつけて連想配列をソート」というものでしたが、読み返したところ誤解を招く表現であると考え、「値が重複することを考えて連想配列をソート」というものに変更させていただきました。(ソースコード内の…

ComposerでSmartyを入れて遊ぶだけ

php

Composer 最近のPHPerには必須のツール。PHP系ライブラリをインストールする際、依存関係を標準的に管理してくれる。(ある ライブラリをインストールした際、あのライブラリも要るのかあ、という状況を解決してくれる) Smarty PHPのテンプレートエンジン。…

今さらながら == と === の挙動の違いをチェック

そもそもコレなんて呼ぶ PHP、javaScriptで、いつも使っているけど、何て言うのか 覚えていますか? ネット上とかで毎回見ているけど、意外とスルーしていたりします。 正解は == 等価演算子 === 厳密等価演算子 うーん、会話で使うには長いんですよね。普段…

PHPでJSONを扱う

php

JSONってなに? JSON(JavaScript Object Notation)は、テキストフォーマットの一種です。シンプルで 開発者が理解しやすい構造をしており、コンピュータにとっては高速で処理しやすいというすぐれもの。 WebAPIなどを使って引っ張ってくる形式のファイルはCS…

パスワードをデータベースに保存するときは、一緒に塩を入れよう

セキュアに保存する -> 漏れた場合を想定する データベース(以下DB)にパスワードを保存するとき、そのまま (平文で)保存してはいけません。データが漏れた場合に、パスワードが 見た瞬間わかってしまうからです。 パスワードを保存する場合、暗号化してからD…

Vagrant + Ubuntu14.04 でLAMP環境構築

追記(2017.1.7) 久々に見直したところ、step.5の工程が必要ないことに気づきました。必要ない方は飛ばしてもらって結構です。 Step.0 前提条件 VirtualBoxインストール済み Vagrantインストール済み WindowsならばPuTTY or TeraTermインストール済み Step.1 …

PHPでクロスサイトリクエストフォージェリ対策を実装

php

クロスサイトリクエストフォージェリ(CSRF)とは? ユーザの意図しない操作を、そのユーザの権限で実行させてしまうという恐ろしい攻撃です。CSRFと略称で呼ばれること が多いです。 たとえば、情報発信系サービスであれば、AさんがログインすればAさんしか…

PHP簡易カレンダー作成

php

DateTimeクラスで簡易カレンダーを実装 date()関数で書いても良いのですが、サンプルがインターネット上に結構あったので、今回はDateTimeクラスで実装してみようと思います。DateTimeクラスは日付をオブジェクトとして扱うことのできるクラスです。個人的に…

filter_input関数を使って簡潔なコードを書こう

php

filter_input関数ってなに? (HTMLフォームのinputタグなどから)外部変数を受け取り、フィルタリングする関数。 一般的には、ユーザが入力した値などが妥当であるか調べたりするのに使います。 利点 通常フォームなどから値を受けとるとき、以下のように書く…

SQLインジェクション対策の一歩としてプレースホルダを利用する

そもそもSQLインジェクションとは? 悪意を持ったユーザが入力フォームなどにSQLを打ち込んで、不正に データベース(以下DB)にアクセスすること。XSS(クロスサイトスクリプティング)に次いで 有名な攻撃手法とも言われます。 この攻撃を受けると・・・ D…

emptyとisset

php

emptyとissetの違い ※ここに書いてあるのは、PHP5以上のバージョン話になります。 過去のバージョンでは仕様が若干違うようです。 empty -> 変数が空かチェックする isset -> 変数がセットされているかチェックする この2つ、よく使うわりにバグの温床になり…

inputタグのvalueにPHPを組み込む

php

inputタグのvalueにPHPを組み込む 初心者は意外なところでつまずいたりします。たとえば、プログラミング初心者が コード内に全角スペースを入力してしまうのは王道的なミスでしょう。この記事の 内容も若干それに近いです。熟練のPHPerの方はもっと有益なサ…