PHP関連のことを調べてみた2020年08月08日

PHP関連のことを調べてみた2020年08月08日

phpでランダムな英数字の文字列を作成

https://off.tokyo/blog/php-randam/

できた

元記事を表示

PHPで他サイトのスクレイピング

[PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法](https://blog.s-giken.net/441.html)

[PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方](https://blog.s-giken.net/442.html)

[スクレイピングをしてみよう 認証・リダイレクト回避編](http://www.lesson5.info/?p=203)

元記事を表示

【PHP入門】ログイン機能

## はじめに
今回は、PHPとMySQLを使ってログイン機能を実装していきます。
**※当ページは、[【PHP入門】CRUD機能](https://qiita.com/taqmi/items/932a44b94b3a8c644370)で作られたものを前提にしています。**

### バージョン
PHP:7.4.5
phpMyAdmin:5.0.2
MySQL:5.7.30

### 今回作成するファイル
**html**
– login.php
– login_process.php
– signup.php
– signup_process.php
– logout.php

**model**
– users.php

**view**
– login_view.php
– signup_view.php

## テーブルの作成

“`php:bbs_user.sql
CREATE TABLE `bbs_users` (
`user_id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
`password` varch

元記事を表示

AWSでLAMP環境を構築して、Laravelアプリをデプロイする

今回はAWSのEC2、RDSを用いてLAMP環境を構築して、Laravelアプリをデプロイする手順を紹介します。

##今回の流れ
1.RDSを用いてDBサーバー作成
2.EC2を用いてWEBサーバーを作成
3.サーバー間の連携
4.アプリのデプロイ
##前提条件
・Macを使用
・AWSアカウントを作成済みであること
・GitHubのリモートリポジトリに、開発済みのLaravelアプリが置いてあること

##1.RDSを用いてDBサーバー作成
コンソールにサインインした後、AmazonRDSに移動します。
スクリーンショット 2020-08-07 9.22.21.png
続いてオレンジ色のCreate databaseボタンをクリックします。
スクリーンショット </p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>PHP</div>
<div class='tag-cloud-link'>AWS</div>
<div class='tag-cloud-link'>Laravel</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/sakashin10291029/items/07aaa55747017adb9f5f'>元記事を表示</a></div>
<h3 id=Laravelの基礎学習 with XAMPP

**この記事の解説は独自の解釈が多いため間違っている可能性もあります。そのような箇所があれば指摘して頂けると幸いです。**

## 目標

**Laravelで簡易的なサイトが作れる程度の基礎を習得する**

## 環境
– Windows 10 home
– XAMPP
– Laravel

## Laravelの勉強
まずは[初心者のためのLaravel入門 – libro](http://libro.tuyano.com/index2?id=3766003)を軸に勉強を進めていく。
学習の手順としては入れ替えた方が良い箇所もあるかもしれないが、自分にとって親しみやすい順で進めていく。

### Laravelのインストール

#### Composerのインストール
`Laravel`のインストールには`Composer`というパッケージ管理ツールを使う。
`PHP`で使用するソフトウェアやアプリケーションをインストールしたい時に、そのソフトウェアなどが動くのに必要な依存関係のある他のソフトウェアなども一緒にインストールしてくれる便利なツール。
[Composer 公式](ht

元記事を表示

FuelPHPでSQLの最新のレコードを取得する

SQLにあるレコードの、`created_at`が最も新しいものを取得したいといったとき、
SELECTに`MAX(created_at)`とするだけでやってくれます。

FuelPHPの場合は

“`example.php
$query = \DB::select(‘id’, \DB::expr(‘MAX(created_at)’))
->from(‘table_name’)
->execute();
“`

とするだけでできます。
これに加えて
`group_by(‘id’)`
などを使うときにすごく役立ちます。

配列で取得したあとに頑張って新しい配列に入れるみたいなことをせずに済みます。(自戒)

元記事を表示

使用してきた関数(メソッド)を忘れないように記載していくよ(PHP版 随時更新)

#はじめに
今まで使用してきたメソッド
これから使用してみるメソッド
忘れないように、随時更新していきます。

時間の都合上、
コードは載せる場合と、
載せない場合があります。

例)
▶︎ メソッド

意味:

参考コード

“`php

雛形
“`

一つ一つ書くのが手間なので、
雛形を書かせていただきました!

#書いていきます٩( ᐛ )و
▶︎ is_null

意味:nullであればtrue,それ以外であればfalseを返す

参考コード

“`php


“`

▶︎ asset

意味:「publicディレクトリ」のパスを返すヘルパ関数
    ヘルパとはviewファイルで使えるメソッドのことです。
    現在のURLのスキーマ(httpかhttps)を使い、
    アセットへのURLを生成するメソッド

参考コード

“`ph

元記事を表示

Laravelの学習備忘録 その3

プログラマー初心者です。
Laravelを触って頑張っています。
Laravelでアプリを作りながら学んだことを雑多に記していきます。
記事の正確性は低めです。なので、各項目ごとの参考を参照したほうが良いと思います。
それでは!

### バリデーション
参考:[ドキュメント「バリデーション」](https://readouble.com/laravel/7.x/ja/validation)
Laravelではバリデーションの方法がいくつかあるようだ。
– validate()メソッドを使う
– FormRequestを使う←おすすめとのこと。

FormRequestを使う方法は、学習済み。

validateメソッドの方法でも試してみよう。
やりかたは、コントローラの中で、$requestを受けるときに、
`$validated_date = $request->validate([バリデーションルールを記述]);`
でオッケー。簡単。

でも、FormRequestを使おう。なぜなら、コントローラーをすっきりさせて、見通しを良くしたいから。
また、より複雑なロジックを組める。

元記事を表示

[個人メモ][PHP]ドメインのSSL証明書の有効期限の取得(subjectAltNameまで見る)

個人メモとして記事っぽくまとめ。

PHPでドメインのSSL証明書の有効期限を取得するコードは先人たちの英知に学ぶとして大幅に前段を省略しますが、最後はopenssl_x509_parseで返ってきた値の[subject][CN]と対象ドメインを比較して有効期限の取得判断をしています。
この時面倒なのが、例えばwww.yahoo.co.jpでこれを調べてみると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687945/d355e573-197d-e0aa-b5a2-13432bb6bfe1.png)

のように*付きでくるので単純比較では不一致になってしまうことですね。
まぁこれは正規表現でも使ってあげればいいので、脳死コーディングするなら

“`php
if( strpos($parsed[‘subject’][‘CN’], $domain_name) !== false ||
preg_match(sprintf(‘/^.%s$/’,$parsed[‘subject’][‘

元記事を表示

MediaWikiのAPIを使ってページを自動作成する

筆者は、MediaWikiを自分のための情報収集と整理に使っています。いわば、個人のナレッジマネジメントですが、そのときに重宝しているのが、MediaWikiのRESTfulなAPIを使用するクライアントアプリケーションです。タイトルとページコンテンツを与えて新規ページを作成するという至って簡単なものですが、その割には役にたっています。記述言語はPHPです。

最近ではAPIを使ったCMS管理が必須になっていますが、APIを使ったクライアントアプリケーションの作成は簡単だよ、という例です。

ソースは[GitHub](https://github.com/cnloni/mwtools)にあげています。MediaWikiシステムをプライベートに利用している方は(あまり多くないとは思いますが)、カスタマイズしてそれぞれの用途で利用してください。

#### 週別のテンプレートとは
筆者が最も利用しているのが、図1ようなテンプレートです。これは2020年29週の分ですが、週毎の月日と曜日、リンクをつけただけの簡単なものです。

“`html:リスト1「2020年29週」
[[週報:202

元記事を表示

Laravelのタスクスケジュールが動かない(24時設定)

昨日まで動いていたのに、今日は動かない・・・
昨日のリリースが悪いのかしら。。でも何も悪いことしていないのに・・・

# スケジュール定義を見直そう
スケジュールタスクは全部“`App\Console\Kernel“`クラスの“`schedule“`メソッドの中に定義します。
この定義でミスしていました。
毎日24時に実行したいからって

“`php
$schedule->command(‘cms:update-article-point’)->dailyAt(’24:00′);
“`

と書くと落ちます。こんなログを吐いて死にます。

“`
In CronExpression.php line 155:
Invalid CRON field value 24 at position 1
“`

このように書きましょう。

“`php
$schedule->command(‘cms:update-article-point’)->dailyAt(’00:00′);
“`

元記事を表示

[PHP] 簡易ログイン機能を実装してみた

### はじめに
phpを使用して、簡易的なログイン認証を実装してみました。(技術力低いのでやばいかもしれないが…)

**基本的な流れ**
1. idとpasswordを入力する。
2. 入力したidとpasswordがデータベースに紐づけされて登録されているかをチェック。
3. 登録されていたらログインし、以外はエラーを表示する。

まぁ簡易的なのでそんなかんじです笑笑

### 該当ソースコード
#### 1. login.php
ログインするために、ID、パスワードを入力する画面です。

“`php:ログイン画面(login.php)



<

元記事を表示

連想配列のデフォルト値を省略すると実行速度は速くなる

#気になったこと

以下のように引数の連想配列に不足しているキーを自動で補ってくれる関数がある。

“`f.php
function f($option = []) {
$option += [
‘text1’ => ‘1’,
‘text2’ => ‘2’,
‘separator’ => ‘/’,
];
return implode($option[‘separator’], [$option[‘text1’], $option[‘text2’]]);
}
“`

関数の呼び出し時に(a)オプション配列にすべてのキーを指定する場合、(b)デフォルト値を省略した場合、どちらの実行速度が速いか?

#時間計測スクリプト

“`benchmark.php
$t1 = microtime(true);
for($i=0;$i<500000;$i++) { f([ 'text1' => ‘abc’,
‘text2’ => ‘def’,
‘separator

元記事を表示

【PHP】標準エラー出力する4つの方法

PHP で標準エラー出力にメッセージを出力する方法(各種)

[Qiita 記事に絞って「php 標準エラー出力」でググって](https://www.google.com/search?q=site:qiita.com+php+%E6%A8%99%E6%BA%96%E3%82%A8%E3%83%A9%E3%83%BC%E5%87%BA%E5%8A%9B&tbs=qdr:y)も、ピンポイントのタイトルの記事がなかったので、自分のググラビリティとして。

## TL; DR

“`php:シンプルで確実な標準エラー出力
fputs(STDERR, ‘my error message’);
“`
“`shell-session:標準出力を潰して標準エラー出力だけ確認してみる
$ # 標準出力へ出力(1>/dev/nullで標準出力を潰している)
$ php -r ‘fputs(STDOUT, “hoge”. PHP_EOL);’ 1>/dev/null
$
$ # 標準エラー出力へ出力
$ php -r ‘fputs(STDERR, “hoge”. PHP_EOL)

元記事を表示

タイムゾーンはちゃんと設定しよう

サービスを開発する際、最初にタイムゾーンをしっかり設定していないと、MySQLのcreated_at や updated_at などをうまく使えないというようなことになります。

MySQLでは、カラムにcreated_at や updated_atなどを加えると、それぞれSQLのinsertやupdateが実行されたときに自動でtimestampを入れてくれたりします。

始めにしっかり設定しておかないと、あとから必要になったときに、自力でそれらの値を取得して挿入するはめになってしまいます。(実体験)

元記事を表示

【PHP入門】CRUD機能

## はじめに
今回は、PHPとMySQLを使ってMVCモデルでCRUD機能を実装していきます。

### CRUD機能とは?
ほぼ全てのソフトウェアが有する4つの永続的な基本機能の頭文字をそれぞれ並べた用語のこと。
その4つの機能とは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)を指す。

### バージョン
PHP:7.4.5
phpMyAdmin:5.0.2
MySQL:5.7.30

### 今回作成するファイル
conf / html / model / view の4つのディレクトリを作って進めます。

**conf(繰り返し使用するもの定義)**
– const.php

**html(controller)**
– bbs.php
– bbs_insert.php
– bbs_update.php
– bbs_delete.php

**model**
– db.php
– functions.php
– bbs.php

**view**
– bbs_view.php

## テーブルの作成

“`sql:bbs.sql
C

元記事を表示

PHPでGoogle Geocoding APIを呼び出す

GCPの[Geocoding API](https://developers.google.com/maps/documentation/geocoding/overview?hl=ja)をPHP(Guzzle)を使って呼び出してみます。

# APIキーを用意する
https://console.cloud.google.com/apis/library/geocoding-backend.googleapis.com
GCPでGeocoding APIを有効化し、APIキーを発行します。

# PHPからAPIを呼び出す

## Guzzleをインストール
HTTPクライアントのGuzzleをインストールします。

“`
composer require guzzlehttp/guzzle
“`

## APIを呼び出す
`$api_key` には発行したAPIキーの文字列を設定します。

“`php:geocode.php

元記事を表示

PHPでOption型を利用してnullチェックや例外ハンドラを消す

ScalaやRustを普段使ってる方には当たり前にあるOption型ですが、残念ながらPHPには組み込みされていません。
しかし、[php-option](https://github.com/schmittjoh/php-option)を利用することで同様の体験を得ることが出来ます。
https://github.com/schmittjoh/php-option

# こんなコード書いてませんか?

## 例外を投げる

例えばRepositoryからEntityを取得する処理でこんなコードを書いてませんか?

“`php:Repository
public function findById(Id $id): Entity
{
$result = $this->queryBuilder->…
if ($result === null) {
throw New NotFoundException(‘message’);
}
return Entity::create($result);
}
“`

データベースからデータを取得して、データがなければ例

元記事を表示

Laravel+AWS-SDK-PHPによるDynamoDBのデータ取得

# 背景
LaravelでDynamoDB使うにあたり、ORMのlaravel-dynamodbなどもあるが、DynamoDBでORM利用するのが少し違和感あった為にSDK使ってやってみた際のメモ(そもそもPHPのWEBフレームワークでやるなという話ではあるが、せっかくSDKが提供されているので一度使ってみようという感じ)

# 環境
・Windows 10
・HomeStead 9.5
・PHP 7.4
・Laravel 6.0

# 1.準備
## AWS-SDK-PHPのインストール

“`cmd
composer require aws/aws-sdk-php
“`

## DynamoDBの環境作成
AWS提供のローカルDynamoDBを利用。Vagrantを使っていたので、Dockerと共存が面倒なことになるのでローカルに直接インストールしました。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.html

※GUIツール(結構便利)
https:

元記事を表示

Adapterパターンを使うメリットとPHP実装例

※この投稿は[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9/dp/4797327030)を読んだ感想と復習を兼ねたまとめです

### Adapterパターンとは

Adapterパターンはデザインパターンのひとつで、既存のクラスを修正することなく、インタフェースを変更するための手法です。

[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88Java%E8%A8%80%E8%AA%9E%E

元記事を表示

OTHERカテゴリの最新記事