- 0.1. Windows11のローカルにLaravel環境をデプロイするには
- 0.2. composer update したら Laravel-admin のログイン画面でリダイレクトのループをしてしまった件
- 0.3. ブラックジャックゲームをオブジェクト指向を使って実装(PHP)
- 0.4. Laravelのアクセサを使用してEloquent取得値をカスタマイズする
- 0.5. Composerの使い方
- 0.6. Kali Linux2022.1 でハッキングラボをつくってみる10 ウェブアプリハッキング6 LFIでPHPシェルを設置
- 0.7. ドラッグアンドドロップでリストの並び替え→DB保存
- 0.8. オリジナルアプリ作成で考えること
- 0.9. Laravel PHPStan の配列型エラー
- 0.10. PHP 関数の引数あれこれ
- 0.11. ‘Firebase for Laravel’を使ったログイン実装(middleware編)
- 0.12. PHP nullsafe演算子について
- 0.13. PHPのコア開発者が決定!
- 0.14. GETメソッドとPOSTメソッドの違い
- 0.15. ER図の書き方
- 0.16. 見えない文字が隠れているのを発見するコード
- 0.17. PG見聞録 ~PHP編 正規表現2-2~
- 1. x修飾子
Windows11のローカルにLaravel環境をデプロイするには
# Laravel でWebアプリを作るには
PHPベースのフレームワークなので、まずはPHPが何なのかを知っておく。
LAMP環境でPHPを用意するならXAMPPをインストールしておくことで軽快に用意できる。## XAMPP を chocolatey でインストール
“`
choco install xampp-80 -y
“`
インストール後にバージョンを確認。1.XAMPPのコントロールパネルを開き、Apacheの「Start」を押します。
(ボタン名が「STOP」に変わります)
Apache起動後に「Admin」をクリックします。
2.ブラウザが開き、XAMPPのバージョンが表示されます。`http://localhost/`
応答結果
`XAMPP for Windows 8.0.15`
## composer を chocolatey でインストール
choco install composer -y
インストール後にcmdでバージョンを確認。
“`
composer
“`
応答結果Composer version 2.3.5 2022-04-
composer update したら Laravel-admin のログイン画面でリダイレクトのループをしてしまった件
Laravel 5.x の環境で、composer update 後に Laravel-admin のログイン画面でリダイレクトループで死んでしまったので解決策をメモっておく。
対策 : config/admin.php に admin.auth.excepts の設定を追加
“`config/admin.php
‘auth’ => [‘controller’ => App\Admin\Controllers\AuthController::class,
‘guards’ => [
‘admin’ => [
‘driver’ => ‘session’,
‘provider’ => ‘admin’,
],
],‘providers’ => [
‘admin’ => [
‘driver’ => ‘eloquent’,
ブラックジャックゲームをオブジェクト指向を使って実装(PHP)
## 概要
独学エンジニアさんの課題である「ブラックジャックゲームを作ろう」に取り組みました。## ルール
* 実行開始時、ディーラーとプレイヤー全員に2枚ずつカードが配られる
* 最大3人までのプレイヤーでプレイすることが可能(ディーラーと合わせて合計4人)
* 増えたプレイヤーはCPUが自動的に操作
* 自分のカードの合計値が21に近づくよう、カードを追加するか、追加しないかを決める
* カードの合計値が21を超えてしまった時点で、その場で負けが確定する
* プレイヤーはカードの合計値が21を超えない限り、好きなだけカードを追加できる
* ディーラーはカードの合計値が17を超えるまでカードを追加する各カードの点数は次のように決まっています。
* 2から9までは、書かれている数の通りの点数
* 10,J,Q,Kは10点
* Aは1点あるいは11点として、手の点数が最大となる方で数える## クラス分け
レッスンで学んだ「ポーカーゲーム」のクラス分けを参考に、以下のクラス分けを行いました。
* Main.php(プログラムの実行)
* BlackJackGame.php
*
Laravelのアクセサを使用してEloquent取得値をカスタマイズする
# 前置き
とあるプロジェクトにて、DBから取得してきたあるカラム値を、全て変換してからAPIでレスポンスするという要件があった。
単純に考えると「foreachで全件回しながら処理する」になるんだけど、なんかいい感じに出来ないかなーと思った時にLaravelにはアクセサという機能がある事を知ったので、使ってみようと思います。# 環境
“`bash:ターミナル
$ php -v
PHP 7.4.29 (cli) (built: May 11 2022 14:21:44) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies$ php artisan -V
Laravel Framework 8.78.1
“`# やりたいこと
一言で言うと、”DBにdate型で格納されている値を、全てunixタイムスタンプ形式に変換して返す。”という要件。
元々unixタイムスタンプ形式で入っていれば取得するだけで良かったんだけど、今回は難しいのでバックエンド側で対応
Composerの使い方
## Composerとは
>Composerは、PHPでの依存関係管理のためのツールです。プロジェクトが依存するライブラリを宣言することができ、それらを管理(インストール/更新)します。
引用:[composer入門](https://getcomposer.org/doc/00-intro.md)(翻訳):::note warn
※注意
基本的に筆者は上記引用の[composer入門]を見ながら進めていますが、本記事によって生じたあらゆる損害について、筆者は一切の責任を負いません。
あくまでもメモとして書いているので利用する場合は自己責任でお願いいたします。
:::## ダウンロードする
ダウンロードするにはこの次のリンクから自分の環境のモノを選んでダウンロードしてください。———————————————
### Linux / Unix / macOS の場合
[Installation – Linux / Unix / macOS](https://getcomposer.org/doc/00-i
Kali Linux2022.1 でハッキングラボをつくってみる10 ウェブアプリハッキング6 LFIでPHPシェルを設置
# はじめに
「ハッキング・ラボのつくりかた」p.643-649を参考にして、KaliLinux2022.1での検証を行っている記事です。:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::# FI(File Inclusion)
ウェブアプリの入力検証の不備を突いて,本来インクルードするべきファイルとは異なる不正なファイルを読み込ませる攻撃、。ターゲット端末上のファイルを用いるLFI(Local File Inclusion)と攻撃者が用意した遠隔に位置するファイルを用いるRFI(Remote File Inclusion)に分けられる。## 挙動の検証
“http:/\/192.168.56.60/bWAPP/portal.php”にアクセスして、プルダウンメニューから、「Remote
ドラッグアンドドロップでリストの並び替え→DB保存
# はじめに
cakephpでの実装ですが、ロジックは
Laravelやphp以外の他の言語であっても応用できると思います。記事一覧画面、並び替え画面、コントローラ、この3つのファイルを編集していきます。
大まかな流れとしては
①記事一覧画面で「並び替え」ボタンを押すことで並び替え画面に遷移。
②ドラッグアンドドロップで好きな順番に並び替え
③「保存」ボタンを押すことで記事一覧画面に戻りつつ、並び替えられた状態。
です。# view
記事一覧画面“`php5:index.ctp
$article)
?>オリジナルアプリ作成で考えること
オリジナルアプリ作成も佳境に入るかなという段階になってきたので、進捗をお話します。
# 進捗
何とかseederのデータベーステストまで終わりました。
この次は、スクレイピングでデータを取得しデータベースに保存するという工程に移ります。# ここから・・・
スクールの講師の人に見てもらいながらやっていましたが、オリジナルアプリ作成に関しては、
自分で調べながらかつ分からないところを聞きながら、が基本と言うことでした。# スクレイピングに関して
今回使うのは、Guotteというサービスです。
composerで使えるようにするところは分かりますが、そのあとが分からなくなるところだと思います。# 現段階までのソースコード
https://github.com/kazunarigit/baystarsapp上が現段階までのソースコードです。複雑なコードは一切ありません。
(デザインを無視しているので、そうなっているだけです)デザインはsassなどでやったほうがいいのでしょうが、スクールの講師の人に聞いていないので抜けています。
以上が進捗です。
Laravel PHPStan の配列型エラー
# 概要
– PHP Laravelにて開発中にPHPStanにて配列型のエラーが出たので回避方法をまとめてみる。
# エラーが発生したコード
– 下記のコードはlaravel-dataというライブラリのリクエストクラスのバリデーションルール定義クラスの記載の一部である。
– 下記のコードがなんのコードであるかは今回のエラーに関係はなく、定義されているrules()関数の戻り値の型がarrayとして指定されていることに問題がある。“`php
use Illuminate\Validation\Rule;public static function rules(): array
{
return [
‘foo_inf_value’ => [
Rule::in([10, 11])
]
];
}
“`# 出力されたエラー
– PHPStanを実行したところ下記のエラーが出力された。
“`
MPHP 関数の引数あれこれ
# 概要
– 今更ながらPHPの関数の引数についてちゃんとまとめてみた。
# 関数に引数を渡す
– 関数定義時に引数の受け取り処理を記載してあげれば引数を関数の範囲内で使う事ができる。
“`php
‘Firebase for Laravel’を使ったログイン実装(middleware編)
## 本記事で利用したパッケージ
* Firebase for Laravelhttps://github.com/kreait/laravel-firebase#support
上記の設定などは、各自README通りにお願い致します。
主に、`Authentication`を利用しています。
→Authenticationの利用方法(https://firebase-php.readthedocs.io/en/stable/authentication.html)
*自分は、composerを利用しました。## 本記事の目標
* FirebaseのAuthenticationの情報をLaravelで利用できる
* Firebase x Laravel でログイン機能の実装ができる。
* FirebaseのJWTトークンをフロントのHeaderから受け取り、middleware上でデコード、認証しFirebaseのuidとemailを取得できる。
* 取得したuidとemailが、他のController上で利用できるようにする。(ログイン認証したユーザーだけが動かせるロジッPHP nullsafe演算子について
# 概要
– 実務でnullsafe演算子を使う事があったのでどういうものかまとめておく。
# nullsafe演算子
– nullsafe演算子は下記である。
“`php
?->
“`– 下記の様なコードがあったとする。
“`php
if (is_null($repository)) {
$result = null;
} else {
$user = $repository->getUser(5);
if (is_null($user)) {
$result = null;
} else {
$result = $user->name;
}
}
“`– 下記の様な処理になっている。
– `$repository`がnullのときnullを`$result`に格納する。
– `$repository`がnullではないかつ、`$repository->gPHPのコア開発者が決定!
いつのまにかPHP Foundationの[公式サイト](https://thephp.foundation/)ができていました。
# PHP Foundationとは?
PHPの開発をこれまでのようにボランティア任せにするのではなく、[きちんと給料を出して開発してもらおう](https://qiita.com/rana_kualu/items/eaf97694f25a62f93a7e#php%E8%B2%A1%E5%9B%A3%E8%A8%AD%E7%AB%8B%E3%81%AE%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B)という仕組みです。
これによって、開発者離れによるプロジェクトの停滞・衰退を防ぎ、コードの質を保ち、将来の展望を広げるわけです。
このように有償開発者を囲い込む動きは、最近では多くのプロジェクトでみられます。PHPにおけるこの試みは[Open Collective](https://opencollective.com/phpfoundation)において多大な支持を集め、ひとまずは順調な滑り出しを見せました。
日本からも[多GETメソッドとPOSTメソッドの違い
- 初めに
- 初学者として勉強を進めていく上で違いをはっきりと理解することが難しかったため、自分の理解を深める為にも記事にしたいと思います。
私と同じ初学者の方でGETとPOSTの違いがよくわからないという方の助けになれば嬉しいです。
- GETとPOSTの使い道
- GET
- 指定されたリソースを取り出す際に使う。
具体例 - ・見たい商品の詳細
- ・同様のページが何ページにも渡る場合の特定のページ番号
- →見たい商品や動画などのWebページのURLを指定することで、HTMLファイルがWebサーバーからブラウザに返されて表示ができる
- POST
- Webページで入力されたリソースをWebサーバーに送り特有の処理をさせたい際に使う。
具体例 - ・ログイン画面に入力するメールアドレスやパスワード
- ・画像
ER図の書き方
##記事の対象##
・データベースを学び始めた初学者の方
・ER図の書き方があまり理解できていない方###ER図が必要となる理由###
ER図とは「データベース設計(データモデリング)で使う設計手法」の一つででデータベース設計の基礎になる部分です。ER図がなくともデータベース設計はできますが、規模が大きくなるにつれ設計ミスや、システムの仕様が理解しずらくなります。その際にER図があれば設計ミスを未然に防ぐことができ、またシステムの仕様も理解しやすくなります。
ER図でデータベース構造などを整理することで、システム全体の構成を俯瞰することができ、手戻りを起こす可能性を減少させることができる為ER図が必要になります。##基本的な用語##
###エンティティ###
データベースを構成するデータのまとまりのことです。エンティティの中にアトリビュート(属性)があります。
###アトリビュート(属性)###
エンティティの中の属性情報のことです。アトリビュートの中で「主キー」や「外部キー」も表現します。主キーとなる項目は、エンティティ上部に書きます。外部キーとなる項目は、項目名の後ろに見えない文字が隠れているのを発見するコード
# 関数
“`php
function changeUnicode($utf8_str){
//入力をUTF-32に変換
$utf32_str=mb_convert_encoding($utf8_str,’UTF-32′,’UTF-8′);for($i=0;$i
00003053|こ
[1] => 00003093|ん
[2] => 0000306b|に
[3] => 00003061|ちPG見聞録 ~PHP編 正規表現2-2~
気分転換にgithubのプロフィールをなんかカッコイイ感じに編集してみました。
https://github.com/yukio113o
カスタマイズってつい夢中になるしワクワクしますよね。おかげで寝不足です。参考記事:GitHubプロフィールをクールにカスタマイズ
https://qiita.com/rised/items/f3385b589149dcf34a26では正規表現の修飾子xや埋め込みフラグについて書いていきます。
x修飾子
正規表現を整形してくれる修飾子です。
空白やコメントを付与できるようになり、可読性が向上します。
メールアドレスを検索する正規表現は(“/[a-z0-9.!#$%&’*+\/=?^_{|}~-]+@[a-z0-9]+(\.[a-z0-9-]+)*/”
となりますが、最後にxを付与しますと
(“/[a-z0-9.!#$%&’*+\/=?^_{|}~-]+ #local
@ #delimiter
[a-z0-9]+(\.[a-z0-9-]+)*topic : About 1 week before the release of PHP 8.2 1st. alpha version
– PHP 8.2 α版が、計画通り 2022/06/09 に行われるようです。ということで(?)これの私的な “Tracking & bookmark ::Qiita”なエントリーです。
– PHP 8.2 GAまでのタイムテーブル
– https://wiki.php.net/todo/php82
– [Christoph M. Becker](https://github.com/cmb69) 氏 による、[externals.io への告知エントリー](https://externals.io/message/117595)私(PHPド初級者)が陥った、セッション変数が消える現象の「盲点」
# 結論ファースト
先輩のコードでは大文字で書かれているものは、自分も大文字で書いたほうが良い。
セッション変数は`$_session[‘xxx’]`ではなく`$_SESSION[‘xxx’]`にすべき。# 細かいストーリー(読み飛ばしてください)
プログラミングの練習のために、簡易的なSNSを作る機会ってありますよね。
そうすると、絶対に「ログイン機能を実装したい」と思うはず。ログイン機能を実装するうえで初心者が悩むポイントといえば、やはり「セッション」。
**セッション変数を定義したはずなのに、別ページにリダイレクトした瞬間に
Chromeくんから「undefined variableですよ!!」と叱られまくり**、
しばらくドツボにハマっていました。夕方4時くらいに悩みはじめ、解決したのが夜の10時過ぎ。
~~途中、日曜劇場『マイファミリー』を見て、俳優さんってすごいなあとか感心してましたが、~~
実に6時間くらい、パソコンの前でうんうん唸っていました。### よく紹介されている「解決策」
– `session_start();`はphpファイルの先頭of先頭にWordPressの基礎
# WordPress
[WordPress Codex 日本語版](http://wpdocs.osdn.jp/Main_Page)
# 【最重要】テンプレートタグ・関数
## テンプレートタグ
– ワードプレス固有のphpタグのこと
## wp_head,wp_footer
– それぞれheadの締めタグ、bodeの締めタグの直前に記述しなけらばならない
## 必須
“`php
~~~
~~~