- 1. PHP 8.4の新機能の見通し
- 2. ディレクトリトラバーサル
- 3. 【Phalcon】期待したクエリが生成されないことがある【v4,v5】
- 4. Symfony6でのルーティングの方法
- 5. Twitter APIでフォロー対象抽出アプリを作ったら精度が良すぎてアカウントロックされた話
- 6. 【AtCoder】備忘録344-B
- 7. あなたのPHPが変わる!SAPI導入ガイド
- 8. Laravel 11がリリースされました
- 9. 【PHPフレームワークFlow】Fluidを用いてHTMLのテンプレートを作成する
- 10. クロスサイトリクエストフォージェリ
- 11. StdClassの利用例
- 12. Dockerのコンテナ内からlocalhost(別コンテナとか)にアクセスをする
- 13. New Relic PHP Agent を Docker で動かす(Laravel)
- 14. PHP ぼやき日記 2024-05-15
- 15. SQLインジェクション
- 16. 【AtCoder】備忘録345-B
- 17. ancel タイトルを入力してください
- 18. 【PHP】西暦から世紀を求める方法
- 19. Fatal Error Insufficient shared memory!(PHP)
- 20. LaravelのCollectionのuniqueメソッドの挙動で気になったのでコードを追ってみた
PHP 8.4の新機能の見通し
## PHP 8.4の新機能
PHP 8.4は2024年11月21日にリリースされる予定です。プロパティフック、JITの改善、追加の括弧なしでのメソッドチェーンが含まれます。これは大きな変更です!
### プロパティフックRFC
現代のPHPの歴史の中で最大の変更の一つ:プロパティフックを定義する機能。
“`php
class BookViewModel
{
public function __construct(
private array $authors,
) {}public string $credits {
get {
return implode(‘, ‘, array_map(
fn (Author $author) => $author->name,
$this->authors,
));
}
}public Author $mainAuthor {
ディレクトリトラバーサル
## はじめに
ディレクトリバーサルについてまとめる
### ディレクトリトラバーサルとは
本来想定していたパスを遡って自由にファイルを読み書きされてしまう脆弱性のこと。
### 例
クエリ情報経由でパスを受け取る以下のコードがあったとき、
“`php:download.php
$fl = $_GET[‘path’] ?? “default.jpg”;
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename= “‘ . $fl . ‘”‘);
print file_get_contents(“./doc/{$fl}”);
“`
ユーザーが
`http://localhost/download.php?path=../../../../apache2/conf/httpd.conf`
のようなアドレスを指定するとhttpd.confを入手できてしまう。
(`file_get_contents()`が相対パスも受け入れ可能なため)
【Phalcon】期待したクエリが生成されないことがある【v4,v5】
# はじめに
普段自社のtoCサービスを開発をしているのですが、担当プロジェクトではちょっとマイナーなPhalconというフレームワークを使用しています。
癖があるのと、日本語の技術記事があまりないので実装に苦労することもしばしば。
ただ、公式ドキュメントは充実している…気はします。
最近サービスの諸々をアップデートする案件に携わっており、Phalconもアップデートすることになりました。
3系→5系へのアップデートで、破壊的な変更もあったりと大変ですが、リリースできるよう頑張り中です。# 概要
Phalconにはphqlという独自のsqlのようなものがあり、ベタ書きしたのをPhalconで用意されているparserで変換してクエリ実行している箇所で、そんなカラムないよ!と怒られるエラーが発生していました。
parserにカラム名先頭で「not」が来ると削除されてしまうバグがあり、そのためエラーが発生していたようです。例えば元のSQLが以下だったとします。(Modelにnoteがある前提)
“`
Select m.note From Model m.
“`
これをcre
Symfony6でのルーティングの方法
# 従来のやり方
“`php
/**
*@Route(‘/hello’, name=’hello’)
*/
public function helloControler() {
return $this->render(‘/hello/hello.html.twig’,[
message => ‘Hello!’
]);
}
“`# Symfony6でのやり方
“`diff_php
-/**
-*@Route(‘/hello’, name=’hello’)
-*/
+#[Route(‘/hello’, name:’hello’)]
public function helloControler() {
return $this->render(‘/hello/hello.html.twig’,[
message => ‘Hello!’
]);
}
“`
Twitter APIでフォロー対象抽出アプリを作ったら精度が良すぎてアカウントロックされた話
昨日URLのドメインが完全にx.comになったX(旧Twitter)について、APIの有料化&厳しい制限になってしまっているので時効ということでフォロー対象を抽出するアプリを作った時のことを書こうと思います。
※まだまだ「Twitter」という名称が頭から抜けない人が多いと思いますので、この記事ではXのことをTwitterと書いています。
## フォロー対象をリストアップするアプリを作った
TwitterのAPIがまだ無料で使えた頃、フォロワーを増やすためにフォロー対象をリストアップするアプリを作りました。
やってることは単純で、ツイートについているいいねや特定のアカウントのフォロワーをうまいこと抜き出してきて画面に表示するというシンプルなアプリです。
自分からフォローするというのはTwitterに限らずSNS全般で有効なやり方で、自分のアカウントと相性がいいアカウントというのもあります。
またフォローとフォロワーの比率やフォロワー数などの特徴から「フォローが高確率で返ってくるアカウント」というのも存在します。
それらを踏まえてアプリを作りました。
### 作った機能
【AtCoder】備忘録344-B
## 問題
https://atcoder.jp/contests/abc344/tasks/abc344_b
PHPで解いています。
## 解答
“`php
私は**0も含めて逆順にする**構文を書いていました。
しかし要件には**0を最初に出力し、残りを逆順に出力する**と書いてあります。
これらは一見結果が同じように見える場合もあり
あなたのPHPが変わる!SAPI導入ガイド
# コード分析システム – Zend・Engine
## 概要
– Zend EngineはPHPのインタプリタ(レジスタマシンベースの仮想機械)である。
– PHP Licenseに類似した**Zend Engine License**が適用される自由なソフトウェア。
– **The PHP Group**によって開発・公開されている。https://spdx.org/licenses/Zend-2.0.html
## 歴史
– PHPは**ラスマス・ラードフ**が開発し、PHP **2(PHP/FI)**までほぼ1人で開発を行っていた。
– PHP 3を作るにあたり、**アンディ・ガトマンズ**と**ゼーブ・スラスキー**が構文解析部の開発に参加。
– PHP 4でパーサが完全に作り直され、**Zend Engine**と名付けられた。
– ゼンド・テクノロジーズを創業し、PHPをベースとしたWebアプリケーションの開発を行っている。## 機能
– PHP 3以前: 実行のたびにソースコードを翻訳し実行。
– Zend Engine: ファイル単位で中間表現へ翻訳し実行
Laravel 11がリリースされました
# Laravel 11がリリースされました。
Laravel 11は、Laravel 10.xでの改善を続け、アプリケーション構造を合理化し、秒単位のレートリミット, ヘルスルーティング、暗号化キーのローテーション,キューテストの改善、プロンプトバリデータの統合、新しいArtisanコマンドなどを導入しました。さらに、リアルタイム機能をアプリケーションに提供するために、ファーストパーティーのスケーラブルなwebsocketサーバーであるLaravel Reverbが導入されました。
## PHP 8.2
Laravel 11.xは、最低限PHPバージョン8.2が必要です。## 合理化したアプリケーション構造
Laravel 11は、既存のアプリケーションに変更を加えることなく、新しいLaravelアプリケーションのためにシンプル化されたアプリケーション構造を導入しました。この新しい構造は、より現代的でスリムな体験を提供することを目的としていますが、Laravel開発者がすでに慣れ親しんでいる多くのコンセプトを維持しています。## Laravel Reverb
Larav
【PHPフレームワークFlow】Fluidを用いてHTMLのテンプレートを作成する
# 初めに
Webアプリケーションを作成する際、ヘッダーやフッターなどは共通的な部品にしたいですよね。今回は、FlowのテンプレートエンジンであるFluidを用いた、HTMLのテンプレート作成方法を解説します。# テンプレート作成してみる
プロジェクト構成は以下です。
“`
Project
└ Packages/
└ Application/
├ Neos.Welcome/
| └ Classes/
| └ Controller/
| └ LayoutTestController.php(★)
|
└ Resources/
├ Private/
| ├ Layouts/
| | └ Default.html
| └ Templates/
クロスサイトリクエストフォージェリ
## はじめに
クロスサイトリクエストフォージェリについてまとめる。
### クロスサイトリクエストフォージェリとは
サイトに攻撃用のスクリプトを仕込むことでアクセスしてきたユーザーに意図しない操作を強制すること。
具体的な被害例として、「あるサービスに勝手に登録させられてしまう」、「掲示板やブログに勝手に書き込みされてしまう」「ショッピングサイトで自動的に物品を購入されてしまう」のような被害を受ける可能性がある。
### 例
以下のようなコードで書かれたサイトを運営していたとして、
“`php:insert_form.php
データの登録
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた