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

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

【PHP基礎】foreachで注文票を作ってみましょう!

# foreachで配列の中身を取り出すとの復習
まずは以下のコードを通して、foreachの基礎を復習します。
もし、もうforeachのことは理解だったら、「配列とforeachを通して、注文票を作ってみましょう!」との部分へ飛んでください。

## コード

“`php
1 100,
6 ‘ビックマック’ => 490,
7 ‘ポテナゲ大’ => 500,
8 ‘サイドサラダ’ => 290,
9 ];
10
11 // 2. foreachで、配列のキーと値を一つずつ取り出す
12 foreach ($prices as $key => $price) {
13 echo $key.’ – ‘.$price.’円’.PHP_EOL;
14 }
“`

## コードを実行した結果
“`
コーラ – 100円
ビックマック – 490円
ポテナゲ大 – 500円
サイドサラダ – 290円
“`

## コードの説明
* __pri

元記事を表示

WordPressで少し高度な検索をする

## 投稿タグ名のあいまい検索 or タイトル or カスタムフィールド
“`php:functions.php
function post_content_to_meta_queries($where, $wp_query){
global $wpdb;

$meta_queries = $wp_query->get( ‘meta_query’ );
if( !$meta_queries || $meta_queries == ” ) return $where;

$where = str_replace($wpdb->postmeta . “.meta_key = ‘post_title’ AND ” . $wpdb->postmeta . “.meta_value”, $wpdb->posts . “.post_title”, $where);
$where = str_replace($wpdb->postmeta . “.meta_key = ‘post_content’ AND ” . $wpdb->postmeta . “.m

元記事を表示

「ログってなによ」Laravel

# ログとは

人間さん「ログを出力するとかロガーとか聞くけど」
人間さん「そもそもログってなんなのよ」

いぬ先生「急に来たね」
いぬ先生「storage/logs/laravel.log に出力されてるよ」

人間さん「ファイル見にいったけど」
人間さん「なにかずらずら書かれてることはわかった」
人間さん「でなんなの?」

いぬ先生「ここに書かれてるから読んでね」

https://readouble.com/laravel/8.x/ja/logging.html

人間さん「初っ端から何言ってるかわかりません!」

いぬ先生「うん!ごめんね!」
いぬ先生「ログは、アプリケーションの動作検証やユーザーのアクセス状況など」
いぬ先生「ある時点の事実を記録するものなんだ」

人間さん「なるほどなるほど」
人間さん「で、どういうことができるの?」

いぬ先生「例えば、アプリケーション運用での障害検知や障害の原因究明」
いぬ先生「データ分析での活用などがある」
いぬ先生「ログにはさまざまな利用用途があるから」
いぬ先生「正しいログ生成は重要なことなんだ」

人間さん「ログって大事なのね~」

元記事を表示

pickle install redisでシリアライザとしてigbinaryを有効にする方法

# 先に結論から

“`
# 先にigbinaryを入れる
pickle install igbinary -n

# オプションをテキストファイルに出力
echo “–enable-redis-igbinary” > redis-options.txt

# –with-configure-optionsでオプション指定のテキストを指定
pickle install redis -n –with-configure-options=redis-options.txt
“`

# 経緯

– php環境にredisクライアントを入れたい
– peclではなくpickleを使いたい
– 単に `pickle install redis` としてもigbinaryが有効にならない
– インタラクティブモードで実行され、プロンプトに対してyes/noで回答していくと有効になる
– Dockerfileでプロンプトに都度入力するのは困難
– pickleをバッチモードで実行しつつ、 `–enable-redis-igbinary` したい

元記事を表示

【 #ゆめみからの挑戦状 ★第5弾】解答の紹介と総括

ツイート貼りすぎてページロード重いですがご容赦ください

# 問題

@Yametaro さんメインで定期開催していた [#ゆめみからの挑戦状](https://twitter.com/hashtag/%E3%82%86%E3%82%81%E3%81%BF%E3%81%8B%E3%82%89%E3%81%AE%E6%8C%91%E6%88%A6%E7%8A%B6) ですが,今回は私から PHP に関連する問題として出題させていただきました。

“`php
‘two’, ‘four’ => ‘4th’],
‘three’ => ‘3rd’,
[‘one’ => ‘1st’],
’10th’ => ‘ten’,
[‘6th’ => ‘six’],
‘5th’ => ‘five’,
‘seven’ => ‘7th’,
[‘fourteen’ => ’14th’,

元記事を表示

Wikiレンタルサービスをつくってみた

# はじめに
こんにちは、ぴたんです。
Wikiを無料で作成できるサービス、「WikiChree.COM」を数ヶ月前に作りました。

https://wikichree.com/

# サービスについて
WikiChree.COM以前はWikiCというサービスでした。
ソフトウェアにはPukiWikiを利用しており、PukiWikiはPHPで書かれた和製のCMSであり、Wikiを簡単に立てることができる便利なWebソフトウェアです。それをベースとしてWikiChreeのシステムを作りました。つまり、WikiChreeはほぼPukiWikiのレンタルサービスです。
コントロールパネルで設定を変更したりユーザーを追加できたりプラグイン導入できたりと割とカスタマイズできるようにしています。
サーバーにはCore Serverを使っています。

# お試しとサンプル
https://wikichree.com/TrialWiki/

https://wikichree.com/SampleWiki/

お試しとサンプルを載せています。

# 使い方
https://wikichree.com/

元記事を表示

Docker上でLaravelのプロジェクトを作成するまで 後半

前回の記事では、`Dockerfile`と各種コンテナの設定ファイルを記述しました。

今回の記事では、`docker-compose`について学んでいきます。
意外と難しくはないので頑張っていきましょう。

前回作成したディレクトリと、その中に入っているファイルは以下の通りでした。
“`
practice
docker
app
Dockerfile
php.ini
db
Dockerfile
my.cnf
web
Dockerfile
default.conf
“`
`app`,`db`,`web`それぞれのdockerイメージである`Dockerfile`を作成しました。
ちなみに、ディレクトリを3つに分けているのは、web3層アーキテクチャの構造をわかりやすくしているからです。
web3層アーキテクチャについては、以下の記事に詳しく書かれているので、ご覧ください

https:/

元記事を表示

世にも奇妙なPHPセッションの話

PHPでWEBサイトを構築していれば
当たり前のように使うのがセッション管理の仕組みです。
PHPセッションを管理する方法としては、3種類あります。

1. ファイル(デフォルト)
2. データベース
3. KVS

昔は1か2が主流でしたが、
最近では、KVS(Redisなど)が当たり前に使われるようになってきましたよね。
AWSでRedisが標準サポートされたのが大きいですね。

大規模サイトの場合、サーバを冗長化するのが一般的です。
その場合、どのサーバからアクセスしてもセッションの一意性を担保したり、
DBかKVSでセッションを共有するのが最もシンプルです。

2016年くらいに私が構築に関わった
とある大規模サイトがあります。
そのサイトは、年間売上100億級なので
パフォーマンス命です。

インフラ環境はAWSだったのですが、
当時のシステム制約上、KVSが気軽に利用できる状況ではありませんでした。

とはいえ、セッション管理がDBだと過剰負荷となり、
パフォーマンス的によろしくないです。
ということで、選択したのはファイル管理です。

前置きが長くてすみません(><);

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの四則演算の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの四則演算の比較

# Python

https://qiita.com/hiroyuki_mrp/items/d7e4c2d75e947ab99caf

# Ruby

https://qiita.com/mat827/items/ee569f6549b83bb954e2

# PHP

https://qiita.com/koala_56/items/7ed631f62cf0f225f5a6

# Java

https://qiita.com/takahirocook/items/748990882f2de7a630a1

# JavaScript

https://qiita.com/_haya_/items/dbe80010a0a8ac9d70b1

# Perl

https://perlzemi.com/blog/

元記事を表示

PHPの基本とCRUDとmysqlについて

▼CRUDとは、永続的なデータを取り扱うソフトウェアに要求される4つの基本機能である、
1.データの作成(Create)
2.読み出し(Read)
3.更新(Update)
4削除(Delete)
の頭文字を繋げた語

▼PHPMyAdminを使う中でデータベースの作り方で注意すること
  ・テーブルでcreate_at , update_atは入れる。更新日として使用する。

 ・idは数字のため「タイプはintを使用する」 「属性はunsigned」は「0」と「整数」しか受付ができなくなる
   また、AI 部分をチェックしてオートインクリメントをチェックする

 ・タイプの「VARCHAR」とは可変長の文字列を意味するデータ型 長さを一般的には「255」としている

 ・create_at , update_atの時間を表現するものは「TIMESTAMP(その時間、その瞬間をとるための時間)」
   デフォルト値を「CURRENT_TIME」でその瞬間の時間を表す

▼UsernameとPasswardを確認する方法
  MANP → webstart → MYSQL 

元記事を表示

【Livewire】queryStringのクエリにランダムな英数字を入れるとごく稀にINFになる

https://qiita.com/ast_and_kaya/items/c3bc931bca2b725bd1eb

↑の関連

## 前提
LivewireのComponentでは`$queryString`という変数をオーバーライドすることでURLにクエリを付与したり書き換えたり出来ます。
https://laravel-livewire.com/docs/2.x/query-string

例えば、web.phpで↓のようにコンポーネントへのルーティングを行い、
“`php

元記事を表示

Laravel CSVダウンロード

共通関数にでもしておき引数渡してダウンロード

“`php
$csv = [
[‘id’,’user’],
[1,’a’],
[2,’b’]
];

$file_name = ‘CSV’ . date(‘YmdHis’);
$response = Csv::csv_download($csv, $file_name);
return $response;
“`

“`php

元記事を表示

phpでパスワードの単純な暗号化とハッシュ化をしてみた

 phpで、パスワードの単純な暗号化とハッシュ化をしてみた

“`php
public function passwordHash($password)
{
$pass = ‘password’;
$iv = ‘1234567890123456’; //16桁

// 暗号化
$password = openssl_encrypt(
$password,
‘aes-256-cbc’,
$pass,
OPENSSL_RAW_DATA,
$iv
);

// Hash.
return hash_hmac(‘sha256’, $password, ‘secret’, false);
}

“`

 $passwordで設定したパスワードを復号化可能な暗号で変身させハッシュ化している

 復号化出来る暗号は、パスワードと対になるランダムなデータに見えるデータで、理論上、データ単位での衝突は無いと思うので暗号化でパスワードを「変身」させ、それをハッシュ化して

元記事を表示

セッション関連のphp.iniの設定について

## はじめに
今回変更したphp.iniの設定です。

## session.use_strict_mode
偽装されたセッションIDの可能性があるので「1」に変更すると良い。

## session.cookie_httponly
セッションクッキーをHTTP経由でのみ読み書き可能とするかの真偽値。
falseだとJavaScript経由でも読み書きできるようになってしまうので、「1」に変更した方が良い。

参照: PHP本格入門(上)

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのデバッガ(デバッグ)の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのデバッガ(デバッグ)の比較

# Python

https://qiita.com/kaitolucifer/items/dc58efebd72d72a8feb2

# Ruby

https://qiita.com/port-development/items/5ea6448eb2b45c70ef65

https://qiita.com/suketa/items/52c60d79332c9a24f973

# PHP

https://qiita.com/ryouya3948/items/0055c1935b7bd62ba3b9

# Java

https://qiita.com/gatchan03/items/3c43b674e2b7c4b5c5cb

# JavaScript

https://qiita.com/a_

元記事を表示

【php】複数の連想配列を一つにまとめる自作関数 バルクインサート等に便利

## 概要

例えば下のような入力フォームがあり、【姓の全リクエスト】【名の全リクエスト】【年齢の全リクエスト】とそれぞれの項目でまとまった配列でリクエストが送られていたとします。その配列を【1ユーザーごとの配列(姓・名・年齢)】に変換する自作関数を作りました。

自分が思い出せるように残してあります。改善点等あればアドバイス頂けますと嬉しいです。

![yoyaku.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2713225/93e8ee1a-d010-d4e3-fad6-a357cfb4f454.jpeg)

## リクエストで送られた配列(姓・名・年齢)でまとまって渡されている
“`ruby:php
$request = [
‘last_name’ => [
0 => ‘山田’,
1 => ‘田中’,
2 => ‘佐藤’,
3 => ‘鈴木’,
],
‘first_name’ => [
0

元記事を表示

windows PHPパス通す方法

https://techacademy.jp/magazine/11489

元記事を表示

Ubuntu22.04でphpenv使おうと思ったらopensslのバージョン違いでbuildできない件

macの対策はたくさん記事が引っかかるけどubuntuの情報はあまり無いので同様の現象で詰まった方のために残しておきます。
掲題ですが、phpenvとphp-buildをインストールしたubuntu22.04で、php7.4.30や8.0.23をインストールしようとした所、下記のエラーが出ました。下のログは8.0.23をインストールしようとした場合のログですが、7.4.30でも同様のエラーが出ていた筈です。私の環境では7.4.30でも同様の対処でbuild通る様になりました。

“`bash
—————————————–
/tmp/php-build/source/8.0.23/ext/openssl/xp_ssl.c:1240:9: warning: ‘DH_free’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
1240 | DH_free(dh);
| ^~~~~~~
In file included

元記事を表示

Cloud9でphpを実行できるようにする

# はじめに
この記事では、Cloud9でphpを実行するための手順を示しています。(Cloud9にプロジェクトをまだ作成していない方は[こちらの記事](https://qiita.com/webkobe24/items/0dca39bb72879a09923f)から作成してみてください)

# パッケージの最新化
あらかじめインストールされているパッケージが存在していることがありますが、こちらは最新バージョンではない可能性があるので、最新バージョンにアップデートしておきましょう。最新バージョンにアップデートしておくことで、機能追加や性能向上だけでなく、脆弱性対応も含まれていることがあります。
“`
$ sudo yum update -y
“`
問題なく実行できていれば大丈夫です。

# タイムゾーンの設定
タイムゾーンとは標準時が同じ地域ごとに区切った時間帯のことです。この時間帯は日本標準時にしていた方が都合が良いので、日本標準時に変更します。
“`
$ sudo timedatectl set-timezone Asia/Tokyo
→問題なく実行できれば大丈夫
$ tim

元記事を表示

AWS cloud9に新たなプロジェクトを作成する

# はじめに
この記事は、初めてwebアプリを開発するために開発環境を整えたい方に向けた記事になっております。実際に、投稿者の私もwebアプリを開発するのは初めてでしたので、そのような方には参考になるかと思います。

# cloud9に新しいプロジェクトを作成する
AWSからcloud9の画面に移ると右上の方に`cleate environment`というボタンをクリックすると以下のような画面が出てきます。
![スクリーンショット 2022-09-13 11.52.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821384/c1e5a980-730f-117a-5bb5-09948473935b.png)
この画面ではプロジェクトの名前と説明を入力する欄になっています。上の名前の部分だけ埋めれば大丈夫です。

続いて、以下のような画面が出てきます。今回は、特に何も変更せずにこのままの設定でプロジェクトを作成してみました。(Environment typeで一番上の欄を選んでいるとAWSの方に料金

元記事を表示

OTHERカテゴリの最新記事