PHP関連のことを調べてみた2020年04月26日

PHP関連のことを調べてみた2020年04月26日
目次

学習日記 #5

#クロスサイトスクリプティング
エンドユーザーからの入力などによって生成されるページで、不備によって不正な(悪意のある)スクリプトが混入/実行されてしまう脆弱性のことをクロスサイトスクリプティング(XSS:Cross Site Scripting)脆弱性という。

#SQLインジェクション
SQLインジェクションとは、SQL命令に不正なパラメータを引き渡すことで、本来、開発者が意図していなかったSQLが生成/実行されてしまう脆弱性のことである。その結果、公開されるはずではなかった機密情報が漏洩していたり、重要なデータが削除されてしまったりする可能性がある。

#OSコマンドインジェクション
OSコマンドに対して、不正な命令を注入する脆弱性である。

#クロスサイトリクエストフォージェリ
クロスサイトリクエストフォージェリ(CSRF:Cross-Site Request Forgeries)とは、サイトに攻撃用のスクリプトを仕込んでおくことで、アクセスしてきたユーザに意図しない操作を強制することである。CSRF攻撃を受けることで、あるサービスに勝手に登録させられてしまったりしてしまう。

元記事を表示

Laravelの初心に還る旅【サービスコンテナ&サービスプロバイダ】

# 1. サービスコンテナの概要

## サービスコンテナとは

オブジェクトのインスタンス化を管理するもの。
(〜が要求されれば〜のインスタンスを提供するといったようなイメージ)

公式(Laravel7.x)
>Laravelサービスコンテナは、クラスの依存関係を管理し、依存関係の注入を実行するための強力なツールです。依存性注入は、本質的にこれを意味する派手なフレーズです。クラスの依存関係は、コンストラクタまたは場合によっては「セッター」メソッドを介してクラスに「注入」されます。

## 依存性注入(Dependency injection、略称DI)とは
あるオブジェクトが他のサービスオブジェクトに依存している際、そのサービスオブジェクトの生成は自身で担わず、外部から生成されたオブジェクトを受け取り、使用する仕組み。
生成されたオブジェクトに対しての、「使用」と「構築」の責務を分離する。
クライアント側はオブジェクトの生成方法は知る必要がなく、使用するのみ。
これにより、コードの可読性と再利用のしやすさが向上する。

### 例)

#### 依存性注入を行わない場合のコンストラ

元記事を表示

Mac LaravelでBootstrapを使おう!

# 目的

– LaravelでBootstrapを使う方法をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |

# 実施方法

元記事を表示

ページネーション(該当ページの最初と最後のデータは全データの中で何番目か実装する)

##はじめに
下記画像のようにページネーションをしたときに該当ページの最初と最後のデータは全データの中で何番目か(N〜NN件/NNN件中のように)出したい時はありませんか。
スクリーンショット 2020-04-25 18.54.06.png
ControllerやModelなどで値をわざわざ取得しなくてもLaravelのフレームワークを用いて値を取得することができます。

##フレームワークを覗いて実装してみる
Laravelのフレームワークにはページネーションに必要な要素が元々実装されています。

※全体は[こちら](https://github.com/illuminate/pagination/blob/master/Paginator.php#L136)から確認してください。

“`php:Illumin

元記事を表示

Column not found: 1054 Unknown column ‘_token’ in ‘field list’,Column not found: 1054 Unknown column ‘_method’ in ‘field list’

Column not found: 1054 Unknown column ‘_token’ in ‘field list’,
Column not found: 1054 Unknown column ‘_method’ in ‘field list’の解決方法

####Column not found: 1054 Unknown column ‘_token’ in ‘field list
#####原因箇所
“`
->update($request->all());
“`
#####解決策
“`
->update($request->except([‘_token’]));
“`

####Column not found: 1054 Unknown column ‘_method’ in ‘field list’
上記の解決策を試したところ、私の場合PUTメソッドを使用しており、Laravelが自動的に非表示の_methodフィールドを追加していたため、新たなエラーが起きたようです。
#####原因箇所
“`
->update($request->except([

元記事を表示

【Laravel+Docker】 0から!PHP(Laravel) + Docker+nginx+mysqlの環境構築方法(完全版)

# 記事の目的
MAMPを使わない、初期設定状態からPHP(Laravel)の環境構築を終えるために必要な手順を備忘録の意味も兼ねて記述します(macのCatarina向けです)

#手順
##homebrewをインストール

“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`

##homebrewを使い必要なソフトウェアをインストール

“`
brew install automake autoconf curl pcre bison re2c mhash libtool icu4c gettext jpeg openssl libxml2 gmp libevent
“`

##VScodeをホームページ(`https://azure.microsoft.com/ja-jp/products/visual-studio-code/`)からダウンロード

vscodeのおすすめ拡張機能
Japanese Language

元記事を表示

VSCode+PHP5.4+Apache24+MySQL5.6(+XDebug)で開発環境を作る

#目次
– 前書き
– MySQLのインストール
– PHP5.4のインストール
– Apache24のインストール
– 後書き

#前書き
仕事で[xoops](https://ja.wikipedia.org/wiki/XOOPS)という古代によく使われていたコンテンツ管理システムを触る必要があり、
xoopsに依存した環境をローカルに構築しなくてはなりませんでした。
せっかくMarkDownで環境構築手順書を書いたので、少し手直ししたものを共有させていただきます。:bow_tone1:

※VSCodeのインストールについては省略させていただきます。

# MySQLのインストール
– 下記ダウンロードページからインストーラをダウンロード。サイズの小さいインストーラはインターネットに接続されていないと機能が制限されてしまうバージョンのようなのでデータサイズの大きい物をダウンロードする。

[ダウンロードページ](https://dev.mysql.com/downloads/windows/installer/5.6.html)
– インストーラを起動し画面に従ってインストール

元記事を表示

Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!その8「migrate コマンドの実行」

### INDEX
Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない!

– [その1「マイグレーションファイルを見てみよう」](https://qiita.com/xioncc/items/1dcec2fbe3485b7e769a)
– [その2「$app[‘db’]って何者?」](https://qiita.com/xioncc/items/cd4a46e5aca16b13174d)
– [その3「Repositoryクラス」](https://qiita.com/xioncc/items/1ce2132594c4596a73ae)
– [その4「Larabelアプリケーションの初期化の流れ」](https://qiita.com/xioncc/items/a17d7f905d4a5abf8103)
– [その5「リポジトリの読込」](https://qiita.com/xioncc/items/dc7df63c2487b02052f3)
– [その6「データベース接続」](https://qiita.com/xion

元記事を表示

Laravelでvalidation

前回作成した[「LaravelでCRUD」](https://qiita.com/apricotcomic/items/07f172a957c1f342fd91)にvalidationを追加する。
ついでにメッセージの日本語化もしていくよ。Go my way!

#validateを追加する
##新規登録の時は必ずチェック!
validationはチェックしたい内容を列挙するだけでやってくれる。便利になったものだね。
試しに追加してみると、こんな感じ。

“`php:AdminController.php
public function store(Request $request)
{
if($request->action === ‘back’) {
return redirect()->route(‘admin.index’);
}
// validation ここから追加
$rules = [
‘admin_code’ => [‘required’, ‘integer’, ‘unique:admin’],

元記事を表示

vagrantで管理しているアプリをGItHubに連携をさせる。

# vagrantとGitHubの連携方法
###1. GitHubの準備

スクリーンショット 2020-04-25 16.29.20.png

スクリーンショット 2020-04-25 16.32.15.png

スクリーンショット 2020-04-25 16.33.21.pngUbuntu 20.04にPHP 7.4をインストール(OS標準)

# はじめに

Ubuntu20.04にPHPを標準インストール
親記事:[PHP, PHP-FPMの各種インストール方法とEOLまとめ](https://qiita.com/witchcraze/items/dfe3823554b7caba6f6a)

## LOG

### インストール

“`shell-session
# cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04 LTS (Focal Fossa)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 20.04 LTS”
VERSION_ID=”20.04″
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/”
BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/”
PRIVACY_POLICY_URL=”https://www.ubuntu.com/legal/terms-and-polic

元記事を表示

Nextcloud18.0.4 を CentOS8 にインストールしてお手軽に体験してみる

# はじめに
[Nextcloud](https://nextcloud.com/)は、自前のサーバを使って手軽にセキュアなファイル共有環境を実現できるオンラインストレージです。
ここでは、CentOS8 の環境で最低限に動く環境を構築する手順をまとめてみました。

# 今回構築する環境
## 構成イメージ
こんな感じで、いたってシンプルです。インターネットに出ない環境で試してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/316764/8e108099-52b2-1b72-4602-169ad77ebd6f.png)
## 利用するOS、ミドルウェア
### サーバOS(CentOS)
今回はCentOS8を利用します。VirtualBoxやVagrantなどで準備いただいても問題ありません。
ここで展開している手順の環境は以下のとおりです。

“`
$ cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
$ uname -a
Li

元記事を表示

Cloudinaryの画像アクセス制御を使ってみる

#はじめに
今までのCloudinaryのサンプルでは、画像を登録したらすぐにインターネットに公開される状態で登録していました。自分が登録して自分で使う分には困ることはないですが、ユーザが画像を登録できるようなサービスに活用する場合は、公序良俗に反するような画像をアップロードされて、自分ドメイン経由で配信されるようなリスクもあるわけです。

ということで、今回はCloudinaryに用意されているアクセス制御機能を使ってみます。

##書いてあること

– delivery typeでのアクセスのコントロール
– sined urlの使い方
– access_modeとaccess contorolでのアクセス制御

サンプルコードはPHPで書いてあります。
Cloudinaryのフリーアカウント、API/SDKの環境が必要です。

#アクセス制御とは
まずは、アクセス制御の基本を抑えましょう。
今まで何気なくアップロードしてきた画像は、暗黙のうちにtype=upload, access_mode=publicとして登録されています。この辺を分解していきます。

## type パラメ

元記事を表示

PHPの標準入力について

// 標準入力からの入力値を変数に代入します
$single_line_input = fgets(STDIN);

// 取得した入力値を半角スペースで分解します
$array = explode(” “, $input_line);
ex)入力12 13 14 15
  →[12,13,14,15]

// 単一行の入力の場合はこれだけで各入力値が配列の要素として使えます

・標準入力が複数行の場合

// 標準入力を一行ずつ配列に代入します
//trimは入力された文字列の前後の空白をなくす
while ($line = fgets(STDIN)) {
$tmp[] = trim($line);
}

// 配列の各要素をさらに分解します
foreach ($tmp as $key => $value) {
$array[] = explode(” “, $value);}

元記事を表示

Nextcloud18.0.4 を CentOS7 にインストールしてお手軽に体験してみる

# はじめに
[Nextcloud](https://nextcloud.com/)は、自前のサーバを使って手軽にセキュアなファイル共有環境を実現できるオンラインストレージです。
まずは多くの方にこれを知っていただきたく、最低限に動く環境を構築する手順をまとめてみました。

# 今回構築する環境
## 構成イメージ
こんな感じで、いたってシンプルです。まずはインターネットに出ない環境で試してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/316764/8e108099-52b2-1b72-4602-169ad77ebd6f.png)
## 利用するOS、ミドルウェア
### サーバOS(CentOS)
今回はCentOS7を利用します。VirtualBoxやVagrantなどで準備いただいても問題ありません。
ここで展開している手順の環境は以下のとおりです。

“`
$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
$ uname

元記事を表示

SimpleSAMLphpを呼び出すとセッションが切り替わる!?

#はじめに
PHPでSimpleSAMLphpを使ってSAML認証を実装するときに、セッションでどはまりしちゃったので、
同じ犠牲者が出ないようにメモを残しておきます。

##SimpleSAMLphpのセッションに切り替わる
自身でPHPのセッションを開始させ使っていても、
SimpleSAMLphpの処理を呼び出すと、
それ以降SimpleSAMLphpのセッションに勝手に切り替わります。

ここで厄介なのが、切り替わった後は自身で開始させたセッションが使えなくなってしまうってこと。

そこで、再度自身のセッションに切り替えるためのおまじないが
**SimpleSAML_Session::getSessionFromRequest()->cleanup();**
です!

“`Sample.php
session_start(); //自身でセッションを開始させる

$auth = new \SimpleSAML\Auth\Simple(‘default-sp’); //Simpleをインスタンス化
$auth->requireAuth(); //認証処理呼び出す → ここでSi

元記事を表示

PHPでblob型でデータベースに保存した画像を出力する

# 概要
blob型でデータベースに保存したpng画像のバイナリデータを、PHP + Symfony + twigで画像として出力する方法について、調査に半日くらいかかったので、記事にまとめました。

今回は外部に画像ファイルを置けないという特殊な都合によりこの方法を行いました。データベースに画像を保存したり、[data URI scheme](http://ja.wikipedia.org/wiki/Data_URI_scheme)を使用することはよく考えて選ぶ必要があります。

# 動作環境
[EC-CUBE4 独自プラグイン開発 ①Dockerで環境構築 + xdebug導入](https://qiita.com/haruna-nagayoshi/items/948b196cf4f5186641e9)
この記事と同じ。もうLaravelのこと、なにも思い出せない・・・。

“`
EC-CUBE 4.0.3
Symfony 3.4
PHP 7.3
MySQL 5.7
“`

# 結論
結論からいうと、
①バイナリデータを`stream_get_contents()`と`base

元記事を表示

wordpressの設定パラメータの一覧を表示する「options.php」

# 概要
タイトルのままなのですがwordpressで設定パラメータの一覧を表示させるページがあります。
普段そんなに使うことはないので自分のための備忘録です。

# 表示方法

表示させるには下記のURLへアクセスします。

http://ドメイン/wp-admin/options.php

スクリーンショット 2020-04-25 11.26.11.png

上記のページにアクセスすると各種パラメーターの一覧が表示されます。
例えば、「upload_path」を変更すれば、通常 /wp-content/uploads/ 配下に画像が置かれますが、これを別のディレクトリに変更することもできるのです。
そのほかにもパラメーターを一覧表示させているので一気に変更したいときなど重宝するかなと思います。

# 終わり

元記事を表示

【自分用メモ】あれこれ

“`
$db->lastInsertId();
// 直前にinsertされたデータのIDを取得

inarray(count($〇〇), array(1, 2));
“`
画像をポップアップ表示:light box

画像をポップアップ風に拡大表示できるライトボックスのJavaScriptライブラリ

元記事を表示

【自分用メモ】住所検索api

api→[郵便番号データ配信サービス](http://zipcloud.ibsnet.co.jp/doc/api)

“`
$baseurl = “https://zipcloud.ibsnet.co.jp/api/search”;
$zipcode = “○○○-○○○”;

$ch = curl_init(); #初期化
curl = setop(
“`

参考
https://qiita.com/tom_ato/items/38617e75ee61b29bb100

元記事を表示

OTHERカテゴリの最新記事