PHP関連のことを調べてみた

PHP関連のことを調べてみた
目次

【PHP】Postリクエストを受取り、Bodyの内容を取得する

## はじめに
最近PHPをはじめました。
HTTPのPostリクエストを受取り、Bodyの内容を取得する方法が分からず調べてみました。

## 結論
下記コードで実現できました!

**Version**
PHP:5.5.3
Cake:2.5.8

“`PHP:
// POSTリクエスト以外はエラー
if (!$this->request->is(‘post’)) {
echo json_encode([“is_success” => false, “error” => “POSTリクエスト不使用”]);
return;
}

// リクエストボディの内容を取得
$json = file_get_contents(‘php://input’);
$data = json_decode($json, true);

// リクエストボディからuserIDを取得
$user_id = $data[‘user_id’];
“`

## 詳細
ChatGPTに聞きながら詳細をまとめました。

元記事を表示

【PHP】PHPで3の倍数と3がつく数の時になけアホになるプログラム書いてみた(1から200まで)

# はじめに
こんにちは! 中学2年生のWardHamamatsu67です! 今回はプログラミング界で有名な、「世界のナベアツ」をPHPでやりたいと思います。本家は40までなのですが、今回は200までやります。
# コード
“`php
“;
} else {
echo $num.”
“;
}
}
?>
“`
結構短めに書くことができました。
# 解説
for文で$numという変数が1スタート200ゴールの範囲で1ずつ増えていく処理を書き、if文で$numを3で割ったときの余りが0になるか、$numに3がつけば、アホになり、それ以外は普通に$numの値を表示します。
# おわりに
意外と簡単にできました。「世界のナベアツ」は面白く、プログラミングの良い練習と

元記事を表示

【PHP】(多分)楽しい言語、PHP

# はじめに
こんにちは! 中学2年生のWardHamamatsu67です! 今回は、最近自分がはまっているプログラミング言語、PHPについて話していきたいと思います。
# PHPの良さ
– 難易度が**低め!!**
– 文法が独特で**楽しい!!**
– 将来性が**高い!!**
## 難易度が低め!!
まず、PHPは難易度が結構低めです。それはPythonやJavaScriptといった、初心者にお勧めとされる言語に匹敵します。”Hello, world!”の表示も、条件分岐も、変数も、繰り返し処理もPHPなら短く書くことが可能です。Web開発を極めたい方はPHPの学習もお勧めします!!
## 文法が独特で楽しい!!
PHPの文法は他と比べて独特です。例えば、”Hello, world!”を表示するとき、Pythonなどの言語ならもちろん、**print**を使います。しかし、PH

元記事を表示

PHP(7.1.33) 学習 備忘録1

とある案件でPHPを触れて、学んだことを書いておく。

# while-each

正式名称はわかりません。バージョンが上がると動かない場合があるので使っていたら修正したほうがよい。
(修正方法は未確認)

“`php
‘apple’,
2 => ‘banana’,
3 => ‘calotto’,
];

while(list($key, $value)=each($req)) {
var_dump($key, $value);
}
?>
“`

# コンストラクタ

phpの古い書き方です。修正してください的な注意が出てくると思います。バージョンが上がると使えないことがあります。

“`php

元記事を表示

PHPでファイルのアップロード

# インストール

“`bash
wget https://gist.githubusercontent.com/GitHub30/d6960b85c73e6e5f20386fa665873183/raw/upload.php
“`

“`php:upload.php

元記事を表示

色々な言語の Dictionary のキーの型の扱いについて調べてみた

Dictionary や object のキーに複数の型を指定した場合、どういった扱いになるのかが非常に気になったので、自分の知っている範囲の言語で試してみました!

# Python の場合

“`python:Python
a = {}
a[1] = “int”
a[1.0] = “float”
a[“1.0”] = “str”
# => {1: ‘float’, ‘1.0’: ‘str’}
“`

int と float は同一視されるようです。Python では `1 == 1.0` が成立するので、これは合理的な気もしますね。使う側は非常に安心できます。他にも、True, False, Fraction, Decimal なども同一視されるようです。

> Numeric values that compare equal have the same hash value (even if they are of different types, as is the case for 1 and 1.0).

https://docs.python.org/3.5/lib

元記事を表示

【Laravel】Swagger UIのドキュメントをLaravelのソースの外に出す

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

前回Laravelのpublicファイル下にSwagger UIのdistをおきました。
今回は、public下ではなくLaravelのソース外において違うポート番号でアクセスしてみれるようにしようと思います。

前回の記事

Dockerの設定をした記事

https://qiita.com/keitaMax/items/7bc51212a32a6418aa1c

# Docker修正

以下を`docker-compose.yml`ファイルに追加しました。

“`yml:docker-compose.yml
swagger:
build:
context: ./docker/swagger
dockerfile: Dockerfile
ports:
– 8082:81
depends_on:
– app
volumes:
– ./swagger/:/app/swagger
“`

do

元記事を表示

PHPのselfと$thisの違い

## はじめに
Swiftと違うからごっちゃになったのでメモ

## $this
$this は、インスタンス自体を指す特別な変数です。インスタンス化されたオブジェクトの中からプロパティやメソッドにアクセスするために使われます。
“`php
class MyClass {
private $prop = “property value”;

public function showProp() {
echo $this->prop;
}
}

$obj = new MyClass();
$obj->showProp(); // property value を出力します。

“`
## self
self は、静的(static)なプロパティやメソッド、または定数にアクセスするために使われます。self キーワードを使うことで、インスタンス化しなくてもクラスの静的メンバにアクセスできます。

“`php
class MyClass {
const CONSTANT = “constant value”;
privat

元記事を表示

【PHP8.4】PUTやPATCHでもリクエストボディを簡単に取得できるようになる

PHPでは、POSTでリクエストを送るとリクエストボディが自動的に[スーパーグローバル変数`$_POST`に格納されます](https://www.php.net/manual/ja/reserved.variables.post.php)。

これは非常に便利なのですが、注意点としてPOSTでないかぎり入ってきません。
たとえリクエストメソッドGETやPUTにリクエストボディを入れて送ったとしても`$_POST`は空です。

そしてPHPには何気にリクエストボディをパースする関数がなく、自力でパースするのは[たいへんに面倒で誤りも入りがち](https://stackoverflow.com/questions/5483851/manually-parse-raw-multipart-form-data-data-with-php)です。

この対応案としてスーパーグローバル変数`$_PUT`を追加したいみたいな話が出たこともあるのですが、それでは`$_PATCH`とか`$_DELETE`とかも必要なのかということになってあまり現実的ではないでしょう。

ということで、リクエストメソ

元記事を表示

PHP バリデーションの設定の学習の振り返り

# 下記の入力フォーム($pageFlag = 0)にバリデーションの設定をする

“`php:form.php
‘; var_dump($_POST); echo ‘

‘;
}

$pageFlag = 0; // 入力画面のフラグ(Topのフォーム画面)

// $_POST[‘btn_confirm’]が空でなければ $psteFlag = 1 に切り替える
if (!empty($_POST[‘btn_confirm’])) {
$pageFlag = 1;
}

// $_POST[‘btn_submit’]が空でなければ $psteFlag = 2 に切り替える
if (!empty($_POST[‘btn_submit’])) {

元記事を表示

🔰独学でサッカーの試合通知をするwebアプリ『Kickoff Reminder』を作成しました ⚽️【Laravel / Vue / AWS】

# はじめに
**この記事では、実務未経験から独学で作成したwebアプリ「*Kickoff Reminder*」について紹介しています。**
また、webアプリを作成するにあたって、工夫した点、学習プロセスなども書かせていただいております。良ければご一読ください。:bow:

# 作成者
– 1999年生まれ
– 大学までサッカー部 :soccer:
– フリーター中にwebエンジニアに興味をもつ
– 2023年から独学でwebアプリ開発を開始
– 現在バックエンドエンジニアを目指して就職活動中 :muscle_tone1:
– X(Twtter) :

# 目次
1. [作成したアプリ紹介](#1-作成したアプリ紹介)
2. [このアプリを作った理由](#2-このアプリを作った理由)
3. [使用技術](#3-使用技術)
4. [基本設計](#4-基本設計)
5. [作成から完成までをふりかえって](#5-作成から完成までをふりかえって)
6. [独学での学習プロセス :runner_tone1:](#6-独学での学習プ

元記事を表示

【Laravel】Swagger UIを使用してドキュメントをブラウザで確認する

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

https://qiita.com/wrbss/items/258394193e5ffd1b926a

この記事にあるように、Swagger UIを使用してブラウザでドキュメントをみようと思います。

前回の記事

https://qiita.com/keitaMax/items/03acb4ae30345fb50891

# `swagger.json`ファイルの作成

記事にあるように、`swagger-xxx.php`ファイルを作成してみます。

今回は、appフォルダ下に`swagger-001.php`として作成しました。

“`php:swagger-001.php

元記事を表示

LaravelとFirebaseでプッシュ通知を実装する

# はじめに
APIなどのバックエンドをLaravelで実装したアプリがあったとして、そのアプリにどうやってプッシュ通知を飛ばすのでしょうか?

調べてみたのですが全体を通して解説されている情報が意外と少なかったので、ここに備忘録として記録したいと思います。

以下の点については省略しているのでご了承を:pray:
– クライアントサイド(アプリ側)の実装
– プッシュ通知で必要なAPNs Keyの発行など
– Laravelの環境構築

https://qiita.com/kokogento/items/18f5d1642f6f915f8961

全体ぞについては👆を参考に。

# Firebase側の準備
まずはFirebase側の準備をします。と言っても、Firebaseプロジェクトを作って秘密鍵のファイルを取得するだけです。

https://firebase.google.com/docs/admin/setup?hl=ja#initialize_the_sdk_in_non-google_environments

>サービス アカウント用の秘密鍵ファイルを生成するには:

元記事を表示

【PHP】API触ったことないけどハッカソンに参加してPokeAPIをたたいてみた

# はじめに
 今回はPHPでPokeAPIをつかってポケモンの画像と名前をランダムに表示する方法を説明したいと思います。
以下がイメージしているものです。

     ![PokeApiサンプル.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554505/9936059c-1f13-b145-0002-1b0ef4284c1f.gif)
今回はページを更新するたびに全国図鑑からランダムなポケモンの画像と名前を表示するようにします。

# 触ろうと思ったきっかけ
 ハッカソンに友人と参加したときにPHPを使ったアプリを作ることになり面白要素としてPokeApiを使おうという話になり自分はAPIを触ったことがなかったので挑戦しました。

# 全体のコード
“`php:pokeapi.php

元記事を表示

フォーム入力欄と入力確認画面にホームページと性別と年齢及びお問い合わせ内容、Cautionの追加をする

# フォーム入力画面($pageFlag = 0) にホームページとホームページ(URL)と性別と年齢及びお問い合わせ内容、Cautionの追加

type属性:

– ホームページ = `url`
– 性別 = `radio`
– 年齢 = `select` , `option`
– お問い合わせ内容 = `textarea`
– caution = `checkbox`

“`php:form.php
‘; var_dump($_POST); echo ‘

‘;
}

$pageFlag = 0; // 入力画面のフラグ(Topのフォーム画面)

// $_POST[‘btn_confirm’]が空でなければ $psteFlag = 1 に切り替える
if

元記事を表示

【Laravel】Swagger-PHPを使ってSwagger(OpenAPI)仕様を作成する

# はじめに

こんにちは、プログラミングを始めて約3年のエンジニアのkeitaMaxです。

今回はSwagger-PHPを使ってみたいと思います。

https://zircote.github.io/swagger-php/guide/

# Swagger-PHPとは

>swagger-phpは、PHP ソース コード ファイルから API メタデータを抽出するライブラリです。
>
>アイデアは、アプリケーション内の関連する PHP コードの隣にswagger-php 注釈または属性を追加することです。これらには API に関する詳細が含まれており、swagger-phpそれらは機械可読なOpenAPI ドキュメントに変換されます。
(引用:https://zircote.github.io/swagger-php/guide/)

PHPでAPIを作成したら、自動的にSwagger(OpenAPI)仕様を作成してくれるライブラリのことらしいです。

# インストール

https://zircote.github.io/swagger-php/guide/installa

元記事を表示

Composer の自作パッケージの作成を通して php 開発環境を整えてみた

# はじめに

これまではノリと雰囲気で php と関わってきましたが、ついに真っ向から向き合っていかなければいけない時期が来たようです…!

というのも最近、Laravel フレームワークで作成されたアプリの本番コンテナを作成するという業務に関わったことで、アプリを弄れないとインフラ側で強引に頑張らねばならなくなり、労力の割に複雑で認知負荷が高くなってしまったり拡張性に乏しかったりと、非常に辛いことを実感しました。

そこで、PHP の基礎を理解するにあたってとりあえずは Composer の自作パッケージの作成を通して色々と学んでみましたので、得た知見や疑問・課題などを書いてゆければと思います。

ノウハウ共有というよりかは、体験談・感想文 的な要素が強いかもしれませんが、よければご覧下さい。

# ネタとして Composer パッケージ作成を選んだのはなぜ?

PHP のパッケージ管理といえば Composer であり、色々と使いこなせていない機能があることをなんとなく知っていました。
自分は SRE なので、PHP アプリの CI/CD のベストプラクティスを身につけるにあた

元記事を表示

PHPの配列で和集合,差集合,積集合

## はじめに
SQLでUNIONやEXCEPT,INTERSECTを使った際,PHPで和集合とかあるのか気になって調べたメモ

PHPでは、配列の和集合や差集合を直接扱う組み込み関数は提供されていませんが、array_mergeやarray_diff関数を使用してこれらの操作を行うことができます.

## 和集合
“`php
$array1 = [‘apple’, ‘banana’, ‘cherry’];
$array2 = [‘banana’, ‘cherry’, ‘date’];

// 和集合の計算
$union = array_merge($array1, $array2);

// 重複を削除するためにarray_uniqueを使用
$union = array_unique($union);

print_r($union);

Array
(
[0] => apple
[1] => banana
[2] => cherry
[5] => date
)

“`

## 差集合
“`php
$array1 = [‘apple’, ‘b

元記事を表示

PHP フォームセキュリティの学習振り返り FWなし

# XSS (Cross-Site-Scripting) 対策

対策方法: サニタイズをする。

phpの標準関数 `htmlspecialchars`を使用する。

下記のコードはサニタイズを施していない。

“`php:form.php




PHPでファイルのタイムスタンプをマイクロ秒精度で取得するには

Linux系OSなら素直に`stat`コマンドを使ったほうが早い。

## ファイルのマイクロ秒単位での最終修正タイムスタンプ

“`php
/**
* ファイルのマイクロ秒単位での最終修正タイムスタンプを返します。
*
* @param \SplFileInfo|string $file ファイルパス
* @return string|false ファイルのマイクロ秒単位での最終修正タイムスタンプの文字列表現 取得に失敗した場合はfalse
*/
function micro_mtime(\SplFileInfo|string $file): string|false
{
$pipes = [];

$process = \proc_open([‘stat’, ‘–format=%z’, \is_string($file) ? $file : $file->getPathname()], [
0 => [‘pipe’, ‘r’],
1 => [‘pipe’, ‘w’],

元記事を表示

OTHERカテゴリの最新記事