- 1. 最大値を探すアルゴリズム
- 2. 初心者向け!PHPを用いたWebアプリケーション作成(環境構築編)
- 3. Nextcloud に 私の顔認証モデルがテスト採用された
- 4. ChatGPTのAPIを使用して会話をする(React、PHP)
- 5. WordPressで検索結果から固定ページを除外する方法
- 6. メールヘッダーインジェクション
- 7. PHP 8.4の新機能の見通し
- 8. ディレクトリトラバーサル
- 9. 【Phalcon】期待したクエリが生成されないことがある【v4,v5】
- 10. Symfony6でのルーティングの方法
- 11. Twitter APIでフォロー対象抽出アプリを作ったら精度が良すぎてアカウントロックされた話
- 12. 【AtCoder】備忘録344-B
- 13. あなたのPHPが変わる!SAPI導入ガイド
- 14. Laravel 11がリリースされました
- 15. 【PHPフレームワークFlow】Fluidを用いてHTMLのテンプレートを作成する
- 16. クロスサイトリクエストフォージェリ
- 17. StdClassの利用例
- 18. Dockerのコンテナ内からlocalhost(別コンテナとか)にアクセスをする
- 19. New Relic PHP Agent を Docker で動かす(Laravel)
- 20. PHP ぼやき日記 2024-05-15
最大値を探すアルゴリズム
## はじめに
最大値を探すアルゴリズムについてまとめる
### 対象データ
5つの整数が格納された配列を処理対象とする。
“`php:data.php
$array = [12, 13, 11, 14, 11];
“`### フローチャート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/c1485c9f-0902-e7be-a60a-dfbadec50269.png)
### 解説
①変数`max`を用意する。
②`array[0]`のデータを変数`max`に代入し、暫定の最大値とする。
③変数`max`と`array[1]`を比較する
④`array[1]`の方が大きければこちらが新最大値となる。
⑤`array[1]`が変数`max`より大きくない場合は変数`max`に格納された`array[0]`が最大値の座をキープする。
⑥以降は同じ手順で繰り返す。
⑦変数`max`を出力する。
初心者向け!PHPを用いたWebアプリケーション作成(環境構築編)
# はじめに
こんにちは!社会人一年目の石川です。
記事をご覧いただきありがとうございます。
私は現在、PHPを用いた研修でWebアプリケーションの作成へと進もうとしています。
そこでPHPで最も人気のあるフレームワークの一つであるLaravelを使ってみたい!と思ったので記事にしました。:::note warn
注意
この記事はWindowsユーザー向けです。
:::## 目次
1. XAMPP
* [XAMPPとは?](#xamppとは)
* [XAMPPのインストール手順](#xamppのインストール手順)
* [XAMPPの動作確認](#xamppの動作確認)
2. Composer
* [Composerとは?](#composerとは)
* [Composerのインストール手順](#composerのインストール手順)
* [Composerの動作確認](#composerの動作確認)
3. Laravel
* [Laravelとは?](#laravelとは)
* [Laravelのインス
Nextcloud に 私の顔認証モデルがテスト採用された
Nextcloud の顔認証アプリケーションで使用するモデルに私の Taguchi model がテスト採用されたようです。
![nextcloud-facerecognition.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3785306/8a6e239e-8cfd-6b73-5114-7adcdd80f24d.jpeg)
## Nextcloud の概略
>Nextcloudは、オンラインストレージの作成と使用のためのクライアント・サーバ型のソフトウェアである。機能的にはDropboxに似ているが、オフプレミスのオンラインストレージサービスは提供しない。Nextcloudはフリーかつオープンソースなので、誰でも自分のプライベートサーバ(英語版)にインストールして利用することができる。
>Dropboxのようなプロプライエタリなサービスとは異なり、Nextcloudのようなオープンアーキテクチャではアプリケーションの形でサーバに機能を追加することができ、ユーザーがデータを完全に自身の制御下に置く
ChatGPTのAPIを使用して会話をする(React、PHP)
# はじめに
今回オリジナルプロダクトの機能の一つとして、ChatGPTから五つの質問をしてもらい、その回答をChatGPTが解析することで、現在の感情を数値化してもらう。
といった機能を作成したので、そのコードを見ながら、どのように実装したかを振り返ろうと思います。**注意**:
自分の復習と、これからAPIを使用したい人にわかりやすく伝えようとコードを載せましたが、このコードは実際に使用できてはいますが、まだデプロイもしていない段階なので、セキュリティの考慮などのリファクタリングがされていません。そのことを念頭に置いていただければ幸いです。
# 開発環境
– LaravelにViteを使用してフロントエンドはReact
– バックエンドはPHP
– Visual Studio Code使用# 準備
– [公式サイト](https://platform.openai.com/api-keys)を参考にしてアカウントとAPIキーを取得
– Laravelを作成して、.envファイルにAPIキーを環境変数として記述# コード
まず最初はReactのフロントエンドから説明
WordPressで検索結果から固定ページを除外する方法
WordPressで検索結果から固定ページを除外する方法について解説します。
## **functions.phpに記述するコード**
“`php
function my_posts_search($search, $wp_query) {if ($wp_query->is_search() && $wp_query->is_main_query() && !is_admin()) {
$search .= ” AND post_type = ‘post’ “;
}
return $search;
}
add_filter(‘posts_search’, ‘my_posts_search’, 10, 2);
“`## posts_searchフィルターフックについて
`posts_search`はWordPressの検索クエリのSQL WHERE句をカスタマイズするためのフィルターフックです。このフィルターを利用することで、デフォルトの検索機能を拡張し、特定の条件に基づいて検索結果を絞り込むことが可能になります。
`posts_search`フィルタ
メールヘッダーインジェクション
## はじめに
メールヘッダーインジェクションについてまとめる。
### メールヘッダーインジェクションとは
メールヘッダーに不正なヘッダー情報を混入させることで、スパムメールなどを送信させる攻撃のこと。
### 例
以下のようなコードがあったとして、
“`php:mail_send.php
mb_send_mail(‘test@example.com’, $_POST[‘subject’], $_POST[‘body’],
“From: {$_POST[‘from’]}”);
“``”From: {$_POST[‘from’]}”)`の箇所に以下のような値を渡した時、
“`
test@example.com
Bcc: injection@example.com
“`新たなBccヘッダーが認識されてしまう。
(入力値を介して、ユーザーが勝手に送付先を忍び込ませることができてしまう。)メールヘッダーインジェクションのあるサイトは、スパムメールの踏み台にされる。
### 対策
メールアドレスの妥当性を検証する。
「`/\A\w+([-+.]\w+)*
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関連のことを調べてみた