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

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

Websec level04 | PHP Object Injection Attack

**こんにちは、61xxxと申します**。
**記事を開いて頂き、ありがとうございます**。

**今回は、Web分野をメインに取り扱っている常設CTFである**[Websec](https://websec.fr/#)**の問題について学んだことをまとめてみました**。

https://websec.fr/#

##① 問題の概要
**[Websec level04](https://websec.fr/level04/index.php)** にアクセスすると以下のような画面が表示されます。
![SnapCrab_NoName_2022-1-3_15-45-55_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1965482/9966186b-d627-b8cb-7cfe-cdc4462ce25c.png)
***
適当な値 ( ここでは1) を入力してみて挙動を確かめてみると…。
**「Username: flag」**と表示されました。
![SnapCrab_NoName_2022-

元記事を表示

DockerでApache+PHP+MySQLの環境を構築してみる

# 概要
Dockerを使ってApache+PHP+MySQLの環境を構築してみたので手順を記載して行く。

## ディレクトリ構成

“`
ディレクトリ
|_docker-compose.yaml
|_Dockerfile
|_config
| |_mysql
| | |_my.cnf
| | |_my.conf
| |_php
| |_php.ini
|_html
|_index.php
|_connect.php
“`
# 手順
各種ファイルの作成をする。

## docker-compose.yamlの作成

“`yaml
version: ‘3.7’
services:
web:
build: .
container_name: “php74-1”
volumes:
– “./html/:/var/www/html”
privileged: true
ports:

元記事を表示

QRコードリーダ(バーコードリーダ)を使ったjukebox作り(2)

このページでは、前回のQRコードリーダの入力を標準出力するプログラムを用いて、phpで実装したJukeboxのプログラムを作りました。

構造は、以下の通りです。
![jukebox.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325563/48a15fcf-e23d-f50e-7707-578aa66c8857.jpeg)

QRコードリーダにQRコードを読ませると、Jukeboxプログラムで指定したフォルダのmp3ファイルをランダムで、再生します。
再生は、mpg321で実現します。
また、一度利用したQRコードについては、MariaDBに保存して、必要があれば、特定のmp3ファイルを再生するように結びつけを行うことができるようにします。
MariaDBでの特定のmp3ファイルの指定は、phpmyadminを用いれば簡単にできると思います。

—-
前提環境

RaspberryPiにLAMP環境を作っておきます。phpmyadminも入れておきます。
https://qiita.com/b

元記事を表示

【WordPress+Symbol】特定のトークン(モザイク)を持っている人のみ記事を閲覧できるプラグイン

WordPressと暗号通貨プラットフォームのSymbolを組み合わせて、特定のトークン(モザイク)を持っている人のみ記事を閲覧できるプラグインを作ってみました。

最初に言い訳を……
PHPのコードを書いたのも、WordPressのプラグインを作ったのも、今回が初めてです。
ついでに言うとJavaScriptもそれほど詳しくありません。
そんな人間が勉強目的で作ってみたものなので、これを本番環境で稼働させることはお控えください。
コードやアイディアの叩き台として何かの役に立てば幸いです。

準備

Symbolのモザイクを使って記事の閲覧の可否を判断するプラグインということで、WordPressの管理者側でもSymbolのアドレスとモザイクが必要になります。

ウォレットのインストールはこちらをご参照ください。
Symbol(XYM)デスクトップウォレットのインストール&設定方法!!

モザイクの発行はこちらをご参照ください。
【数分で読める】DBに情報を新規追加【サンプルコード】

##環境
PHP : 7.4.12
MAMP : 6.3
google chrome : 96.0.4664.110

##サンプルコード
機能を2つ作成します。
入力画面、登録処理画面の2つです。

###入力画面

“`php:add.php







追加


入力してください






“`

ポイント
・formタグのaction属性には、「登録処理画面」名を書く。※今回は「add_done.ph

元記事を表示

PHP 連想配列で同じキーの要素をまとめる 要素が配列の連想配列

### やりたいこと
以下のような連想配列を持つ多次元配列がある。
データベースからデータを取ってきたときによく見る形ではないだろうか。

“`input.php
$array = [
[‘key1’=>’aa’,’key2’=>’b’,’code’=>’c’],
[‘key1’=>’a’,’key2’=>’b’,’code’=>’d’],
[‘key1’=>’aa’,’key2’=>’bb’,’code’=>’e’],
[‘key1’=>’a’,’key2’=>’bb’,’code’=>’f’],
[‘key1’=>’aa’,’key2’=>’bb’,’code’=>’g’],
];
“`

この配列をkeyが同じものでまとめて、配列にしたい。

“`result.php
Array
(
[aa] => Array
(
[b] => Array
(
[0] => c
)

元記事を表示

vscode+php+xdebug3系(+typescript) [docker window10]

直近で書いたtypescriptをvscodeでデバッグする環境にphpのデバッグ環境(xdebug3系)を追加してみた。

##【ディレクトリ構造】

“`
docker
│ docker-compose.yml
├─html
│ │ xdebug.log
│ │
│ ├─.vscode
│ │ launch.json
│ │
│ └─section9-setup
│ │ index.html
│ │ index.php
│ │ tsconfig.json
│ ├─.vscode
│ │ launch.json
│ ├─dist
│ │ index.js
│ │ index.js.map
│ └─src
│ index.ts
├─php
│ Dockerfile
│ php.ini
“`

##docker-com

元記事を表示

【PHP8.1】PHP8.1はPHP7.4より20%高速化している

MLに[Automatic performance benchmarking: PHP 8.1 is ~30% faster than PHP 7.4](https://externals.io/message/116323)という投稿があったので紹介してみます。

# https://externals.io/message/116323

## kocsismate90

最近PHP用の自動ベンチマークフレームワークを作ってるんだけど、その宣伝に来たよ。
最初は[is_literal](https://wiki.php.net/rfc/is_literal)のRFCの性能評価に使ったんだけど、その後多くの問題を修正して新機能も追加したよ。

昔[インテルが行った自動ベンチマーク](https://externals.io/message/89843#89843)を覚えてる人もいるかもしれない。
私はこのプロジェクトに刺激を受け、そして今同じようなことをやっているけど、さすがに彼らほど高度なことはできなさそう。

今作っている[php-version-benchmarks](http

元記事を表示

システム設計の原則を読んだことで実装についても考えるようになった話

## 初めに
初めて保守の案件を任されたときのサービスは
5年以上続いているものでした。
LaravelとPHPで構築されています。
初めてということもありソースコードを見たときは
僕自身の理解力が足りなくて難しく見えているだけだと思っていたのですが
徐々に知識がついてきて
割とクソコードなんだなと思うようになってきた。
だけどそんなクソコードに対してどうにかしたいという気持ちはあっても
何をしたらいいのかもわからずただただ思うだけで過ごしていました。
そんな状態で過ごしているときに @MinoDriven さんとお話しする機会があり
そこから設計について改めて学びたいなと思い
[「現場で役立つシステム設計の原則」](https://amzn.to/3JyP7QL)
を読んでみて眼からうろこが出続けてしまったので
みんなにも同じように体感してほしいと思ったので纏めました。
僕自身の解釈、表現をしているので書籍が伝えたいこととは違うように
伝わるかもしれませんので正しい情報はしっかりと書籍を読むことをお勧めします。

## 「実装ができる」だけは自己中な状態
僕自身は異業種からプログラマ

元記事を表示

??【最速】フロントエンドエンジニア向けLaravel入門ガイド【API特化】

# 記事の概要
Laravelを使ったAPIの建て方を学べます。**質はともかく、**多分これが最速だと思います。(フラグ)

# 注意事項
あくまでフロントエンドエンジニアが趣味開発とかプライベートでちょっと触る場合にのみ使ってください。

# 記事の対象
フロントエンドがメインだけど、Webサービスを作る上ではバックエンドも避けて通れないのでちょっと触ってみたい。主流のRuby&RoRかPHP&Laravelを学習してみたいが、~~RoRはなんか終わりっぽいし(誹謗中傷)~~、Laravelにしとくか……という層をターゲットにしています。

# 先に知っておきたいLaravelぶっちゃけ話
## 開発方針について
フロントエンジニアの皆さんは、
**昔はバックエンドからHTMLを出力するモノリスが主流だったけど、今はフロント(SPA)とバック(API)を分離して開発しやすくするのが主流**
……という価値観を持っている方が多いかと思います。しかし残念ながら、
**LaravelはバックエンドからHTMLを吐き出すモノリス路線(密結合路線)がメインです。**
というのも、初版が[

元記事を表示

[Laravel]ログインの有効時間を個別に設定する方法

管理者と一般ユーザーなどで複数のログインフォームを持つ場合に、個別にログインの有効時間を設定する方法
意外と難しいやり方をしている記事が多かったため、メモ用に作成

## やり方
“`php:app/Providers/AppServiceProvider.php
public function boot()
{
// 以下を追加する
if (request()->is(‘admin*’)) {
// urlのpathに「admin」が含まれる場合はadmin用の設定を適応する
config([‘session.cookie’ => config(‘session.cookie_admin’)]);
config([‘session.lifetime’ => config(‘session.lifetime_admin’)]);
}
}
“`

“`php:config/session.php
‘lifetime

元記事を表示

初心者がプログラミングを100時間やったらこうなった。

はじめまして。

暇人の大学生です。大学では経営やマーケティングの勉強をしていますが、今は4年なので授業もなく、「卒論やりたくねー」と思いながらダラダラしています。

https://note.com/yuraku0927/m/m028fe480b4d1

普段はnoteの方でこんな暇つぶしをしています。

なぜプログラミングを始めようと思ったか。「起業したい」「アプリを作りたい」「エンジニアになりたい」などなど、プログラミングを始める理由はいろいろありますが、自分にはそんな大した理由はありません。

**「暇だから」**です。それだけ。

時間はあるのにお金がない...とりあえずパソコンは持っていたので、やってみることにしました。

そんなめちゃくちゃ意識の低いスタートをきったプログラミングですが、ここまでで「やっと」**100時間達成**しました。そして今回、100時間達成を記念しこのNOTEの執筆を決意。

「100時間しかやってないのかよ」そんな声が聞こえてきます。普通の人なら100時間勉強するなら1ヶ月あれば十分でしょう。しかし、僕は半年かかりました。もう1度言います。半年で

元記事を表示

今日の日付を取得する Carbon

こんにちは。ソウタです。

特定のデータの取得の仕方についてメモも兼ねて、アウトプットしていきたいと思います。

Laravelで料理注文アプリを作っていたので、アプリのコードを元に説明していきたいと思います!

まず、ユーザーが料理を注文し、注文を受けたレストランが「今日の注文履歴」をみたいので、それをフロントに表示させたい過程にいると仮定します。(ユーザーが注文する所は省略)

“`php.RestaurantController.php
use Carbon\Carbon;
“`

Carbonを使うので、use宣言をコントローラに書く。

“`RestaurantController.php
public function RestaurantAccount()
{
$restaurantId = Auth::user()->id;

// クエリ(SQL)を変数へ一旦入れておくとコードがスッキリする。
$query = Restaurant::find($restaurantId)->orders();

元記事を表示

Kotlinで地図アプリ(ゴミ拾いアプリ)作成。(11日目)完成?

Kotlinで制作している、GoogleMapを使った、自作のゴミ拾いアプリ。制作11日目。

結論から言うと、本日、完成しました。

Node.jsを使いMySQLと接続する予定でしたが、レンタルサーバでは使えないようなので、PHP+jQueryを使う方法に変更しました。

#PHPでMySQLに接続しJson形式で出力

Qiitaで紹介されているコードを参考に、若干修正を加えて、動作チェック用のシンプルなコードを作成してみました。

“`php:sql_read.php

元記事を表示

アロー演算子で動的に要素を指定する方法

※自分用のメモ

##問題
PHPを使っていると->(アロー演算子)を使うことがあります。
使い方としては連想配列の要素を指定したり、Laravelのコレクションで使うことがあり

“`php:
$fruits = [‘apple’=>’りんご’, ‘peach’=>’もも’, ‘pear’=>’なし’];
$select = $fruits->peach;
print($select); //もも
“`
↑ざっくりですが、こんな感じで連想配列の要素を指定してやると、その要素を取得してきます。
ただ、このアロー演算子、使っていると指定する要素を動的に変更してやりたいと思うときがあり、その場合は以下のように記載します。
##やり方

“`php:

$animals = [‘animal_1’ => ‘らいおん’,’animal_2′ => ‘さる’,’animal_3′ => ‘しまうま’];
for ($i = 1; $i <= 3; $i++) { $select = $animals->{‘animal_’ . $i};
print($select);
}

元記事を表示

PHPでNullバイトアタック対策

 新年初めてのコード書き始めを行っていて。とりあえず、PHPのNullチェックを作ってみた

“`php
class Secure {
// Null Byte Check.
public function sanitizer($arr) {
array_walk_recursive($arr, function($val, $key) {
if (preg_match(‘/\0/’, $val) === 1) {
// エラー処理.
}
});
}
}
“`

 良くある、array_mapのルーチンよりかはスマートかと。「Nullバイトがあるデータがあるのが変なので、そのデータは弾け」おじさんが居たので、そう実装してみました。手動で簡単なテストもしてます

 今年も、よろしくお願いします:blush:

元記事を表示

【実践】Laravel+MySQLの全文検索機能実践

# はじめに

`LIKE`検索は全ての行に対して条件に合致するかを判定するのでデータが増えるにつれ検索速度が遅くなる場合があるようです。

この記事では、MySQLの全文検索機能を導入した方法についてハンズオン形式で紹介させていただきます。

https://dev.mysql.com/doc/refman/8.0/ja/fulltext-search-ngram.html

完成系のリポジトリ
@ucan-labさんの記事を参考にLAMP環境を構築いたしました?‍♂️

https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4

https://github.com/nao-haba-dev/ngram-docker-laravel

# 事前準備
– GitHub・Dockerが利用できる準備をお願いします

https://github.com

https://qiita.com/ucan-lab/items/aadbedcacbc2ac86a2b3

– MAC

https://docs.docker.com/deskt

元記事を表示

docker-laravel の Docker 構成をちゃんと理解する【Dockerfile 編 – Nginx】

@ucan-lab さんの [docker-laravel](https://github.com/ucan-lab/docker-laravel) の環境をちゃんと理解するための記事

今回は Dockerfile の Nginx 編です。

[docker-compose 編](https://qiita.com/tkek321/items/9c0c5cec1dc349c67f5f)
[Dockerfile 編 – PHP](https://qiita.com/tkek321/items/5d7714d7170bbf379c11)

# Dockerfile

https://github.com/ucan-lab/docker-laravel/blob/main/infra/docker/nginx/Dockerfile

“`dockerfile:dockerfile
# — ① ビルドイメージの指定 —
FROM node:16-alpine as node
FROM nginx:1.20-alpine
# ——
# ② メタデータを追加
LABEL ma

元記事を表示

PHP 8.1 Enums を使ってみる

## 列挙型(Enumerations)

PHP8.1で実装されたEnumの使い方を軽くご紹介します。

## 環境

“`shell-session
$ php -v
PHP 8.1.1 (cli) (built: Dec 17 2021 23:49:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
“`

## 使い方

“`php

元記事を表示

『SQLアンチパターン』まとめその4(19〜25章)

[SQLアンチパターン](https://www.oreilly.co.jp/books/9784873115894/) をまとめました。
この本では、

1. [データベース論理設計のアンチパターン(1〜8章)](https://qiita.com/Natsumag/items/c9c91f6fa7a3af6dd1d1 “『SQLアンチパターン』まとめその1”)
1. [データベース物理設計のアンチパターン(9〜12章)](https://qiita.com/Natsumag/items/9eb3c32a3193c74abbe6 “『SQLアンチパターン』まとめその2”)
1. [クエリのアンチパターン(13〜18章)](https://qiita.com/Natsumag/items/aca26493cd071a573c4a “『SQLアンチパターン』まとめその3”)
1. アプリケーション開発のアンチパターン(19〜25章)

の4つのパートに分けてそれぞれのアンチパターンを解説しており、
この記事では「__4. アプリケーション開発のアンチパターン__」について記述します。

元記事を表示

OTHERカテゴリの最新記事