- 0.0.1. PHP初心者によるマジックメソッドの理解
- 0.0.2. Dockerでメールフォーム開発用コンテナを3分クッキング
- 0.0.3. 【Laravel】ファサードとは?何が便利か?どういう仕組みか?
- 0.0.4. openshift4.3でlaravelする②:Add Storageする
- 0.0.5. LaravelでCORS(オリジン間リソース共有)を実装する時に躓いたこと
- 0.0.6. React+Laravelでpublicフォルダ内の画像を表示する
- 0.0.7. Macにxdebugをインストールせずに、VSCode+Remote ContainerでPHP+Laravelのデバッグ環境を構築する
- 0.0.8. phpで簡易電卓を作る①
- 1. 電卓(簡易版)
- 1.0.1. DVWA(SQLインジェクション)全レベルの脆弱性について
- 1.0.2. ノーガードのWordpressがクラックされたけど、いいサンプルが手に入ったので晒し上げ
- 1.0.3. LaravelのFactoryが便利な件(Fakerの使い方&日本語訳付き)
- 1.0.4. apache + php-fpm な環境での504 Gateway Timeout Errorの対応
- 1.0.5. phpbbのtemplateについて
- 1.0.6. 渾身の丁寧さで「PHPの変数」を解説する
- 1.0.7. XServerにWordPress5.3でも動くようにWP-CLIをインストールする
- 1.0.8. 【PHP】DBテーブルから文字化けせずにCSV出力する方法
- 1.0.9. bladeファイル内で画像リンクに変数を使いたい
- 1.0.10. サーバ環境構築
- 1.0.11. PHP 生年月日のselectタグ 値保持
- 1.0.12. PHPとは? [初心者向けに]
PHP初心者によるマジックメソッドの理解
#マジックメソッドとは
コンストラクタ「__construct()」等のアンダースコア2つから始まるメソッドで、
基本的には、ある状況において実行されるメソッド。#主なマジックメソッド
##constructとdestruct
####__construct()
**インスタンスの生成時**に実行される####__destruct()
**プロセスの終了時や、unset()で明示的にインスタンスを破棄した場合に**実行される##getとset
####__get()
**アクセスできないプロパティにアクセスした場合に**実行される####__set()
**アクセスできないプロパティに対して値をセットした場合に**実行される##issetとunset
####__isset()
**アクセスできないプロパティに対してisset()を行った場合に**実行される####__unset()
**アクセスできないプロパティに対してunset()を行った場合に**実行される####isset()
変数が宣言されていて、NULLでなければ、true
Dockerでメールフォーム開発用コンテナを3分クッキング
## TL;DR
コードだけ読んでいただければよろしいかと。
## 前置き
実はメールフォーム設置だけの案件を意外と多く請けます。なお現在のところPHP率100%です。
今まではローカルの環境構築に `php -S` でローカルサーバー建てて [mailcatcher](https://mailcatcher.me/) に投げてテストしていて、正直これで十分だと思っていますしこれからもこれで行く気がします。軽いし。
しかしながらメイン業務であるフロントエンド開発では、基本としてDocker環境を活用した作業になることが多く、ローカル環境はこれからはDockerだな!というわけでミニマムなメールフォーム開発用コンテナを試し書きしてみたところです。
前置きおわり。
## やってみた
### ディレクトリ構成
“`
/
├ php/
│ ├ php.ini
│ └ Dockerfile
├ html/
└ docker-compose.yml
“`想定するディレクトリ構成はこんな感じにしました。登場人物も少ないので割と自由に置いて良いと思います。
### dock
【Laravel】ファサードとは?何が便利か?どういう仕組みか?
# はじめに
Laravelを使っていると
「ファサード」という言葉がちょこちょこ出てきたりします。ファサードとな何なのか、
何のためにあるのか、
どういう仕組みで動いているのか、
など調べてみたので簡単に解説していきます。※
本記事内ではサービスコンテナを利用したコードが多数登場しますが
サービスコンテナ自体の仕組みは解説しません。
サービスコンテナについてはこちらの記事で解説しています。
[【Laravel】サービスコンテナとは?2つの強力な武器を持ったインスタンス化マシーン。簡単に解説。](https://qiita.com/minato-naka/items/afa4b930a2afac23261b)# 概要
ファサードとは、
クラスをインスタンス化しなくてもstaticメソッドのように
メソッドを実行できるようにしてくれる機能のこと。こんな風にできる。
“`php
// 通常
$classA = new ClassA();
$classA->methodA();// ファサード利用
FacadeClassA::methodA();
“`このイン
openshift4.3でlaravelする②:Add Storageする
# はじめに
前回まででopenshift4.3上で基本的なlaravel環境は整いましたが
例えばユーザがアップロードしたファイルを保存するなどする場合
laravelの場合、一般的に「`./storage/app/public`」にファイルを格納し
「`./public/storage`」としてシンボリックリンクを張り公開します。つまりPodのDeployからファイルに変更がある可能性があるわけで
現状だとPodが再Deployされると揮発性なので消し飛んでしまいます。そこで、このpublicにstorageを追加したいと思います。
前回までの記事
– [openshift4.3でlaravelする](https://qiita.com/imp555sti/items/ad530f671015b64b0af0)
– [openshift4.3でlaravel+MariaDBする](https://qiita.com/imp555sti/items/c3f36e2710fe9bc6c76b)# ストレージの追加
最終的にはYAMLですべての環境を準備したいところです
LaravelでCORS(オリジン間リソース共有)を実装する時に躓いたこと
LaravelでCookie認証を実装したかった。
CORS(オリジン間リソース共有)の実装で躓く。
# 参考記事
https://www.hypertextcandy.com/cookie-auth-and-cors-on-universal-nuxt-app-with-web-api# コマンド、エラー内容
“`
php artisan vendor:publish –provider=”Barryvdh\Cors\ServiceProvider”Unable to locate publishable resources.
“`
configファイルが生成されなくて困った。# 解決方法
リポジトリを調べてみたら見つかる。“`
php artisan vendor:publish –tag=cors
“`
configファイルが生成された。
解決
React+Laravelでpublicフォルダ内の画像を表示する
#はじめに
React+Laravelでwebサイトを書くぞー!っとなってとりあえずコンポーネントを作ることにしたのですが、そもそもReact初体験で、Reactで画像ってどうやって表示するのかわからなかったのでメモ。#環境
– docker
– Laravel Framework 6.16.0
– npm 6.12.1### ディレクトリ構成
“`
├── docker
│ ├── nginx/
│ └── php/
├── docker-compose.yml
└── laravel
├──app/
├──artisan
├──bootstrap/
├──composer.json
├──composer.lock
├──config/
├──database/
├──node_modules/
├──package.json
├──phpunit.xml
├──public/
│ ├──img/
│ ├──h
Macにxdebugをインストールせずに、VSCode+Remote ContainerでPHP+Laravelのデバッグ環境を構築する
# はじめに
PHPのデバッグを行うには、[xdebug](https://xdebug.org/)が必要です。
しかし、Mac OSのバージョン(Catalina/Mojave)によっては、これをインストールするのが困難です。Macにxdebugをインストールせずに、PHPのデバッグを実現するために、VSCode+Remote Containerによって環境を構築を行いました。
その手順について説明しています。# 発生した問題
xdebugインストールを行おうとして・・・下記のように、エラーとなってしまい途方にくれました。
“`shell:install-xdebug
$ pecl install xdebug
WARNING: channel “pecl.php.net” has updated its protocols, use “pecl channel-update pecl.php.net” to update
downloading xdebug-2.9.2.tgz …
Starting to download xdebug-2.9.2.tgz (2
phpで簡易電卓を作る①
## まずは基本的な機能のみ
2つの数値と四則演算を入力すると計算した値が表示される。“`index.php
Caluculator
電卓(簡易版)
DVWA(SQLインジェクション)全レベルの脆弱性について
## 前提
– kali linux環境がある
– [DVWAのセットアップ済み](https://qiita.com/KPenguin/items/7e4f1c428c3dadf8591c)
– [初級レベル理解済み](https://qiita.com/KPenguin/items/0ef2fdc5a35f16f20fdb)## 目標
– 脆弱性の理解を深める。## 手順概要
– 大まかな挙動を把握する
– コードを見て脆弱性をみつける
– コードの脆弱性を攻撃する## 内容
###挙動の把握
### low
– 入力値がクエリに乗っかりGETを投げる
– sqlの結果が全て下部に転写される![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/f6443af0-8a8b-04a8-c824-9f8808292e52.png)
### medium
– selectBoxのoption値をPOST
– sqlの結果が全て下部に転写される![image.pn
ノーガードのWordpressがクラックされたけど、いいサンプルが手に入ったので晒し上げ
WPがクラックされて
“wp-include/init.php“としてこんなコードが置かれてた“`php
extra[$name]=$data;
return true;
}/**
* initializ
LaravelのFactoryが便利な件(Fakerの使い方&日本語訳付き)
## 概要
Factoryを使用すると、単体テストに必要なランダムデータを自動生成できます。参考:[Laravel5.5でほぼ完成されたModelFactoryの使い方](https://qiita.com/fagai/items/7f63d651cbed3664b758)
## 環境
PHP 7.3.14
Laravel 6.11.0## Factoryの定義方法
定義ファイルの単位は、基本的にモデルごとになると思います。
定義時、使用時に、モデルのクラス名を指定するためです。“`database/factories/UserDetailModelFactory.php
define(UserDe
apache + php-fpm な環境での504 Gateway Timeout Errorの対応
# はじめに
CentOS8でphp-fpmがデフォルトとなりデーモンとして動きます。
先日、構築したサーバでアプリケーションのテストをしていると、504 Gateway Timeout Errorが発生したため、一部設定変更した際の備忘録です。
## 環境
CentOS8
apache2.4系
php7.2系## apache
apacheのタイムアウトはデフォルトで60秒なので、ここを180秒に変更。
httpd.confに追記します。“`httpd.conf
Timeout 180
“`https://httpd.apache.org/docs/2.4/ja/mod/core.html#timeout
## php
PHPでもスクリプトがパーサに強制終了される時間の設定箇所があり、デフォルトでは30秒となっているのでここを180秒に変更。
“`php.ini
max_execution_time = 180
“`
https://www.php.net/manual/ja/info.configuration.php#i
phpbbのtemplateについて
##phpbbのtemplateの構造
phpbb3.2を使っています。
phpbbをカスタマイズして掲示板サイトを作ったのですが、開発当初は構造を把握するのが大変だったししばらく触っていないと忘れそうなので、ここに残しておこうと思います。##どのテンプレートファイルを使っているのか
以下のようにテンプレートファイル名を指定してるところがあると思います。
“`index.php
$template->set_filenames(array(
‘body’ => ‘index_body.html’)
);
“``index_body.html`はどこかというと、`./styles/prosilver/template/index_body.html`ここにあります。
※`prosilver`はデフォルトのスタイルです。“`index_body.html
“`
いきなりこういうのがあるのですが、こういう系の記述は他にもあって簡単にまとめるとこんな感じです。|記述
渾身の丁寧さで「PHPの変数」を解説する
# 変数
## 目標
“`
ルールを守ったわかりやすい変数の名前を付けることができ、それに値を入れて使うことができること
“`
## 学習キーワード
“`
変数
$(ドル)
エラーメッセージ
“`## 1:変数とは
変数とは、扱うデータを記憶しておくためのものです。
下記のように $(変数名) と書きます。“`
$fruits
“`## 2:変数を使う理由
文字や数字などの値は、それ自体では、読み手に意味が伝わりにくいです。
変数を使うことで、読み手にわかりやすく、自分でも扱いやすくなります。“`php
// 意図がよくわからない
echo 75 / (1.7 * 1.7);
“`“`php
// 体重と身長を用いて、 BMIを計算し表示したことがわかる
$weight = 75;
$height = 1.7;
$bmi = $weight / ($height * $height);
echo $bmi;
“`## 3:変数に値を代入する
変数には、文字列や数字などの様々な値を入れることができます。“`php
$king_of_bea
XServerにWordPress5.3でも動くようにWP-CLIをインストールする
# すること
XServerにWP-CLIをインストールします。
“`console
$ mkdir ~/bin
$ curl -o bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x bin/wp
$ echo ‘alias wp=”php7.4 ~/bin/wp”‘ >> ~/.bashrc
$ source ~/.bashrc
“`[Gistにコードを書いたので、下記での実行も可能です。](https://gist.github.com/yousan/721bed85c7040d22cfa73cef47bbf8ed)
“`console
$ curl https://gist.githubusercontent.com/yousan/721bed85c7040d22cfa73cef47bbf8ed/raw/0d4b49ed260bd563c169886ae18d7e749c927905/install_wpcli_for_xserv
【PHP】DBテーブルから文字化けせずにCSV出力する方法
DBから取得したデータをCSV出力してみたいなと思いました。
しかし、表示している文字化けやら、出力されなかったりと振り回されたのでここにまとめてみます。#方法
“`php:csv.php
bladeファイル内で画像リンクに変数を使いたい
bladeファイル内の画像リンクにassetを使用した時のデータベースからテキストを引用する書き方
“`ruby:index.blade.php
サーバ環境構築この記事はcentos7+nginx+php7向けに書いています。
OSを入れたあと、必ず最初にする設定をメモしています。()#環境
OS確認
`$ cat /etc/redhat-release`日本語化(ロケールの変更)
`$ localectl set-locale LANG=ja_JP.UTF-8`
確認
`$ localectl status`ホスト名の変更
`$ hostnamectl set-hostname ***.com`
`$ vi /etc/hosts`SELinuxを切る
`$ setenforce 0`
Disabledを確認
`$ getenforce`
SELINUX=disabledを確認
`$ less /etc/selinux/config`systemctlでbashの補完をきかせる
`$ yum install -y bash-completion`
ネット関係のコマンド(ifconfig,nslookupなど)を入れる
`$ yum install -y net-tools bind-utils`#yum
EPELリポジ
PHP 生年月日のselectタグ 値保持
##生年月日の入力フォームの作り方メモ
selectタグでプルダウンの形で作りました。その際、バリデーションエラー等で元の画面に戻ったときに入力値が保持される様に処理しました。簡単ですがメモしておきます。
#####まず関数を作ります。
引数に始まりと終わりの年月日を指定し、プルダウンに一覧表示するようにします。第3匹数は保持したい値を指定します。
?演算子はとっても便利で、issetで値を確認するときなども良く使います。“`php:function.php
function birthdayLoop($start, $end, $selection=”){
echo ‘‘;
for($i=$start; $i<=$end; $i++){ $i = sprintf('%02d', $i); $selected = $i==$selection?'selected':''; echo "
PHPとは? [初心者向けに]
# PHPとは何か:beginner:
動的なWebページを作成することができるサーバーサイドのプログラム言語のこと。#### 動的とは?:runner_tone5::runner_tone4::runner_tone3::runner_tone2:
通常のHTMLは静的なWebページで、
制作者が内容を書き換えない限りはいつアクセスしても同じものが表示される。
そのページにプログラムを記述し、ユーザーがボタンを押したりアクセスした際に
表示内容を変えることができるのが**動的**なページ。
#### サーバーサイドとは?:gear:
サーバー側(サービスを提供する側のコンピュータ)でプログラムを動かすこと。
##PHPを使うと出来ること例
– **ECサイトの構築** :computer::high_heel:
– ショッピングカート
(商品をいくつ入れたのか、その商品の金額はいくらなのか、
自動的にカウント・計算することもPHPで実装可能)
– 検索エンジン
(人気順や、新着順、条件によって表示する項目を変えることも可能)
– オンライン上での決済処理