- 0.1. アンケート
- 0.1.1. wordpress関数をjsファイルで扱えるようにする
- 0.1.2. 【Laravel】イミュータブルにCollectionのN番目の要素を取り出す
- 0.1.3. public function の public ってなに!?【アクセス修飾子】
- 0.1.4. Laravel Fortify メールアドレス以外でログインする
- 0.1.5. Laravelを基本からまとめてみた【入門】
- 0.1.6. スペース区切りの文字を配列に格納する
- 0.1.7. MAMPについての概要&インストール方法(Mac)
- 0.1.8. Array Shapes/ジェネリクス記法とPHPStanを使って配列要素の型をチェックする
- 0.1.9. エンジニアインターン7日目
- 0.1.10. laravelでエイリアスのついたカラムをorderByするのに詰まった
- 0.1.11. PHP初心者に向けてPHPの仕様や便利な関数の使い方など
- 0.1.12. Laravelでアプリを作成してみた【ミニ受注入力システム】
- 0.1.13. [CTF] OvertheWire Natas 0 to17 Writeup
- 1. natas0
- 2. natas1
MysqlのデータをHTML, PHPで表示する
最近フリマアプリを使用して物を売ることが多くなってきたので、
Mysqlを使って在庫管理をしてみようと思いました。
(普段は中国語を使っていて文章をピンインでベタ打ちするのが習慣になってしまっているので、初見の人は画像の意味が分からないと思います。)以下の画像中の上側のテーブルのテキストエリアに入れたデータが、Denglu(登録)ボタンを押すと、Mysqlに追加されて、下側に表で表示するものを作成してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120035/83de5690-393f-04ad-5602-f3456e893f90.png)
Mysqlのカラムは、
“`
ID: ID
CSSJ: 出售时间(出品日)
SPM: 商品名(商品名)
KC: 库存量(在庫量)
DG: 定价(定価)
CSJ: 出售价(売値)
FSFS: 发送方式(発送方式)
BZFS: 包装方式(包装)
BZF: 包装费(包装費)
YF: 运费(送料)
SXF: 手续费(手数料)
HJ: 合
【2023年版】Dockerを使ったLaravelの環境構築
## はじめに
最近は現場でも、Docker環境下でLaravleを触ることが増えて少しは知見も溜まってきたので、得た知見を忘れないように忘備録として残しておきます.
ここでは、`docker`や`docker-compose`のインストールに関しては触れませんので、まだの方は[こちらの記事](https://qiita.com/zembutsu/items/dd2209a663cae37dfa81)がわかりやすかったので参考にしてみてください.
## 構成
任意のディレクトリに`SampleProject`を作成して下記のディテクトり構成で環境を構築します.“`
SampleProject
├── docker-compose.yml
├── docker
│ ├── php
│ │ ├── Dockerfile
│ │ └── php.ini
│ └── nginx
│ └── default.conf
└── src
└── Laravelのプロジェクトファイル
“`## d
input type=”file”の未選択時はnullではなく空文字列””になる!
# input type=”file”未選択時は…
## 例
“` html
“`
上記で画像ファイルを選択しなかった場合は、PHP側で既存の画像をS3に保存しようとしました。
ですのでPHP側の該当箇所記述は下記かなと思って…
“` PHP
// リクエストに画像が存在しない場合
if(is_null($request->hoge_imagefile))
{
$request->hoge_imagefile = $fuga->image;
}
// S3、DBへの保存アクションが以降で実装される
“`
つまり、リクエスト画像が存在しない場合はすでに保存されている画像のパスをそのまま使用する、という形になっています。
(実装方法があまりよろしくないとは思いますが、本記事の趣旨とは異なるので無視)
いずれにせよリクエストが無くても従来画像が保存されると思ったのですが、思い込みとは恐ろしいもので…## どうなったのか?
“` PHP
// $image_pathは上記の$request
WordPressで独自テーブルにフォームデータを格納する。バリデーションや非同期通信もやってみる。
## ■背景
仕事のため、必要だったため。
あまり記事もなく、調査が面倒だった。
自分共有用として。mysqlのテーブル作成は記載していない。
## ■概略
処理の流れは以下
1. フォームの送信ボタンをクリック時に、javascript起動(バリデーション、送信前の確認メッセージ、非同期で自身の固定ページにpost送信)
2. 自身の固定ページにpost送信するので、配置しているショートコードがキック
3. 使用しているテーマのメソッドがキック
## ■固定ページ
### html
“`html
アンケート
wordpress関数をjsファイルで扱えるようにする
ワードプレスである便利な関数をjsでも扱えるようにする方法のメモです。
今回は`home_url()`関数を使えるようにしてみます
~~~ php
function custom_enqueue() {
$tmp_path_arr = array(
‘home_url’ => home_url(),
);
wp_enqueue_script(‘my_js’, get_stylesheet_directory_uri() . ‘/js/script.js’, array(), date(“ymdHis”, filemtime(get_stylesheet_directory() . ‘/js/script.js’)));
// home_url()関数をjsで使えるようにする
wp_localize_script(‘my_js’, ‘tmp_path’, $tmp_path_arr);
}
add_action(‘wp_enqueue_scripts’, ‘custom_enqueue’);
~~~
`functions.php`に上のコードを記述します。
【Laravel】イミュータブルにCollectionのN番目の要素を取り出す
# ゴール
– 元のCollectionの値を変えずにCollectionのN番目の要素を取得する
– `Undifined Index`, `Undifined Offset`を発生させない以下5番目の値を取得する場合の方法を記載する
# 方法1
“`php:OK1
$item = $collection->values()->get(4);
“``get()`の引数はindexで指定する。
https://stackoverflow.com/questions/24443949/how-to-access-the-nth-object-in-a-laravel-collection-object
https://gist.github.com/vielhuber/cf35a39fcbd7115c1e94a25e0d9fc491
https://readouble.com/laravel/8.x/ja/collections.html#method-values
# 方法2
“`php:OK2
$item = $collection->skip(4)
public function の public ってなに!?【アクセス修飾子】
public function の public とはアクセス修飾子と呼ばれるもので、アクセス修飾子とは、プロパティ(クラス内で定義された変数)やメソッド(クラス内で定義された関数)を使用する時にどのクラスからでも呼び出せるようにしたり、特定のクラスからしか呼び出せないようにしたりするものです。
今回は public function の public や、そのお仲間たちについて紹介していきたいと思います。
https://beyondjapan.com/blog/2023/01/what_public
***
■ 株式会社ビヨンド
・コーポレートサイト:https://beyondjapan.com
・採用サイト:https://recruit.beyondjapan.com
・Youtube(びよまるチャンネル):https://www.youtube.com/@beyomaruch
・Twitter:https://twitter.com/beyondjapaninfo
・Instagram:https://www.instagram.com/bey
Laravel Fortify メールアドレス以外でログインする
Laravel Fortify でログイン方法をメールアドレスから別のカラムに変更したい人向け。
簡単2ステップで、終わりです。### ①FortifyServiceProviderに追記する
FortifyServiceProviderのbootメソッドに下記の通り、追加“`FortifyServiceProvider.php
public function boot()
{
Fortify::authenticateUsing(function (Request $request) {
$user = User::whereLoginId($request->login_id)->first();if ($user &&
Hash::check($request->password, $staffMember->password)) {
return $user;
}
});
}
Laravelを基本からまとめてみた【入門】
## Migration(PHPファイルでDBを管理)
– DBのテーブル定義は必ず『migration』で定義する!
– テーブル定義は後戻りができない
– 一度作ると後が超ラク## Laravel/UI(シンプルデザインを生成)
– CSSとJSのテンプレート
– 誰でもデザインができ、初心者はベースに作ると良い
– 後から入れるとデザインが崩れる## 固定データの取得先は『.env』から取る
– 『.env』は環境情報
– 開発用PCと本番サーバーなど、データの出し分け
– 直接PHPファイルに値を書くと後で大変になる##### 環境に依存する情報・機密情報は『.env』で管理
## 初心者が気にしなくて良い機能と設定3選
## Seeder
– PHPファイルでデータを生成
– 初心者は手入力でOK
– 意外と躓くクラス問題を回避## テスト駆動開発
– 初心者は辛いだけ
– まずはLaravelを楽しむ事が大切
– サービスの規模が大きくなってからでも間に合う## DI(依存性注入)
– Laravelのメリットではあるが、初心者の手に負えな
スペース区切りの文字を配列に格納する
スペースで区切られた文字を配列に格納して出力するプログラムを実装しました。
explode関数を簡易的に実装しています。“`html
スペースで区切られた文字を配列に分ける
MAMPについての概要&インストール方法(Mac)
# 背景
PHPを使った開発をするため、macでの環境構築が楽そうな**MAMP**を使ってみた。
今回は**MAMP**の概要とセットアップの方法について記す。
# MAMPとは
Macintosh、Apache、MySQL、PHPの各頭文字を取った略称。
Web開発に必要な上記のソフトウェアを一括でインストールし、ローカルにサーバー環境を構築することができるソフトウェアである。
# インストール方法
## ①MAMPをダウンロード
[MAMP公式サイト](https://www.mamp.info/en/mac/)から「Free Download」をクリック。
![image01.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453680/a2d9a7b8-fb62-0a55-d5bc-c584d3d03f48.jpeg)
Macに搭載されているCPUによってダウンロードするパッケージが異なる。
– Intelの場合:MAMP & MAMP PRO(Intel)
– M1/M2チップの場合:MAM
Array Shapes/ジェネリクス記法とPHPStanを使って配列要素の型をチェックする
## PHPの配列要素の型がチェックできない問題
この、PHPの配列要素の型をチェックできない問題ですが、みなさん一度は思われたことがあるのではないでしょうか?関数やメソッドの引数や返り値、オブジェクトのプロパティにについては型はつけやすくなりましたが、配列の内部構造はまだまだです例えば関数の戻り値に`array`を指定している場合、配列以外の型を持った値を返そうとするとエラーになりますが、配列の要素に関しては何が入ってこようとエラーは出ません。そのため、思わぬバグに繋がってしまうことがあるのです
そこで本記事ではその解決策となるテクニックをご紹介していきます
## 結論:Array Shapes/旧PSR-5形式のジェネリクス記法で記載し、PHPStanを使用して解析する
早速結論ですが、**PHPDocのArray Shapes記法とPHPStanを組み合わせて配列要素の型をチェック**しますざっくりと言うと、Array Shapes/旧PSR-5形式のジェネリクス記法でDocコメントを記載し実装を進め、その後に静的解析(PHPstan)を実行することで、型チェックをす
エンジニアインターン7日目
今日はやっと自分が作ったLPページのテンプレートを本番環境に適用させた。自分がエンジニアとして初めて開発したものになる。先輩エンジニアだったらすぐに終わっていたタスクだが自分にとって初めての成果ということで達成感を感じた。wordpressにひとつひとつ設定した。同じ作業の繰り返しだったため、これもプログラミングを利用してエンジニアらしくできるのではないだろうかという発想になった。そのために引用やすいコードを書くことが大切であると思った。今日帰りにエンジニア部長にインターンはどう?と質問された。自分は実務経験を積めて自分が成長できる最高の環境だと伝えた。自分はとても運が良いと思った。自分はまだまだ足りないことだらけだが、社内のエンジニアのみなさんがとてもやさしく指導していただき、自分が成長できるために努力してくれている。自分は実務経験からどのスキルが求めれれるか、自分が今やるべき課題は何かがはっきりしていて努力するだけである。独学でプログラミングを勉強しているならインターンをやるべきだと思う。自分はスキルではとても劣っているが、将来性を考えて採用してくれる企業もたくさんある。自分がやっ
laravelでエイリアスのついたカラムをorderByするのに詰まった
# はじめに
クエリビルダで、サブクエリを使い取得していたデータをorderByしようとしたところ下記エラーが発生。:::note alert
SQLSTATE[42S22]: Column not found: 1054 Unknown column
:::カラムがないと怒られてしまったので解決方法忘れないように記載。
laravelのVerは8.8# 成功したやぁつ
“`hogeModel.php
public function getHoge($request)
{
$sort = $request->sort;
$direction = $request->direction;
$page = $request->page ?? 1;$join = Table2::select(‘table2.table1_id’, ‘table2.created_at’)
->whereNotIn(‘table2s.status’, [“aaa”, “bbb”]);
$sql =
DB::
PHP初心者に向けてPHPの仕様や便利な関数の使い方など
# はじめに
これはPHP歴2年目の私がPHPを触る上で知っておくとよいだろうと思う仕様や便利な関数の使い方を紹介する記事です。(間違い等あれば指摘してください!)## 前提
PHPのバージョンについて 8.2 を前提としています。## isset、empty、is_nullの違い
「値が存在するかどうか」を判定するには基本的に以下の3つを使用します。– isset
– empty
– is_null取りうる値の違いについては以下の表がわかりやすいです。
|値|if($var)|isset|empty|is_null|
|:–|:–:|:–:|:–:|:–:|
|$var=1|true|true|false|false|
|$var=””;|false|true|true|false|
|$var=”0″;|false|true|true|false|
|$var=0;|false|true|true|false|
|$var=NULL;|false|false|true|true|
|$var|false|false|true|true|
|$var=ar
Laravelでアプリを作成してみた【ミニ受注入力システム】
## 環境
① project の表すデータベースを『phpMyAdmin』で作成する。
② コマンドプロントでlaravelプロジェクト project を作成する
※ project をc:¥xampp¥laravel デレクトリ下に作成するものとする。
“`
composer create-project laravel/laravel–prefer-dist
<プロジェクト名>
cd <プロジェクト名>//バージョンを確認する
php artisan -v
//開発用のサーバーを立ち上げる
php artisan serve
“`③.envファイルを編集する
“`.env
DB_DATABASE=bunbougu_db
“`
④ bunbougus の情報を保存する bunbougus テーブルを作成する“`
php artisan make:migration create_bunbougus_table
“`
⑤ コードを加えて編集する“`databese/migrations/table.php
{
[CTF] OvertheWire Natas 0 to17 Writeup
ウェブセキュリティを扱った[OvertheWire Natas](https://overthewire.org/wargames/natas/)のLevel 0 ~ 17までの解法
## natas0
開発者ツールでソースを確認するだけ
“`html:index.html
natas0
You can find the password for the next level on this page.
“`## natas1
右クリックが禁止されているが、F12キーで開発者ツールを開ける
“`html:index.html
natas1
AWSのEC2でとりあえずPHP Laravelを動かす
今回はこのEC2インスタンスにPHPとnignxをインストールしてLaravelを動かすまで持っていく。
環境
PHP 7.3
Laravel 5.8
Amazon Linux 2
PHP, nginx, php-fpm のインストール
AWSでLaravelを動かすには当然PHPをインストールする必要がある。また、HTTPリクエストを受け付けるために nginx をインストールし、nginx から PHP を起動するための php-fpm というモジュールをインストールする必要があるので、まずこれらをインストールする。これらものジュールをインストールする方法はいくつかある
(1) ansibleなどの構成管理ツールを利用する (2) サーバー構築後に直接コマンドを叩いてインストールする (3) CloudFormation の UserData を利用してインストールする
一番理想なのは (1) のansibleなどを利用する方法だが、ちょっと試すには重すぎるので、今回は (2) の直接コマンドを叩いてインストールする。最後に CloudFormation を利用する方法も
【Laravel】初心者向けプロジェクト作成
composerから以下コマンドで「sample-project」というLaravelプロジェクトを作成しようとすると、
エラーが出た。
“`terminal:プロジェクト作成コマンド
composer create-project laravel/laravel sample-project –prefer-dist
“`
“`terminal:エラー内容
The zip extension and unzip/7z commands are both missing, skipping
“`
#### 対応方法
php.iniファイルを開いて、「;extension=zip」となっているところを「extension=zip」に変更する。
【自分用】ミドルウェアとは? / APサーバーとは? / PHPはなぜAP鯖が不要?
# ミドルウェアって何だっけ?
– OSとアプリケーション(WordPress / 業務アプリとか)の間で動き、
アプリケーションの土台となっている。– OSとアプリケーションの橋渡し的な役割を担うソフトウェアである。
– アプリケーションへのリクエストを処理する。(AP)
\- プログラミング言語で構築されたアプリを実行する。(AP)
Ex. ミドルWeb鯖(動的コンテンツくれ) -> ミドルAP鯖(了解) -> アプリ実行(プログラム)
Ex. クライアント/ブラウザ(静的コンテンツくれ) -> ミドルWeb鯖(了解:静的コンテンツ)– 特定の機能に特化してOSとアプリケーションを補助している。
– アプリケーションがよく利用する高度で専門性が高い機能をパッケージ化し、
別のソフトウェアとしてまとめたもの。
\- アプリケーションがよく利用する機能とは:
アクセス管理、トランザクション管理、セキュリティ管理、ユーザー認証、DB接続など– ミドルがあることによって、アプリは開発の手間を削減できる。
ミドルの機能を呼出して使うことができるから。無かった