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

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

laravel5.5で、Authを使ったログイン時アクセスしたい画面にリダイレクトする方法

さっと書きます。

今回実装したいのは、
ログインが必要なページにアクセスした際ログイン画面にリダイレクト

ログイン

アクセスした元のURLにリダイレクトされる

といった簡単な内容です。

## すぐ答えです。以下です。

Laravel 5.5の場合、LoginController.phpを更新するだけで次のコードが機能しました

“`php

public function showLoginForm()
{
session([‘link’ => url()->previous()]);
return view(‘auth.login’);
}

protected function authenticated(Request $request, $user)
{
return redirect(session(‘link’));
}

“`

セッションに残して、それにリダイレクトさせる簡単なコードで実装できました。

参考文献
https://www.it-mure.jp.net/ja/php/laravel-5%E3%83%AD%E3

元記事を表示

Laravelログイン認証のリダイレクトについて

#はじめに#
 Laravelを使うと簡単にログイン機能を実装できますが、反面、完成されすぎていてカスタマイズするには結構調べないといけません。大した内容ではありませんが、今回はそんな中でもリダイレクトについて備忘録として残して行きたいと思います。

#ログインしていないユーザーをリダイレクト#
 まずは、ログインしていない状態で、あるページにアクセスしようとするとログイン画面にリダイレクトする方法をご紹介します。ログイン前に表示させたくないコントローラーに下記のように書いてください。

“`HomeController.php
public function __construct()
{
$this->middleware(‘auth’);
}
“`

 これだけでOKです。何が起きているのかは正直よく分かりませんが、とにかくこれでログイン画面へリダイレクトされるようになります。認証に関わるものはMiddlewareで定義されています。ちなみに、リダイレクト先を変更する場合もMiddlewareで変更することが出来ます。

“`App\Http\

元記事を表示

LaravelのRedisでワイルドカードのパターンに一致するキーを一括削除する

Redisではキーにワイルドカードを使って一括削除するコマンドがありません。
今回はLaravel5.8でRedisのキーをワイルドカードを使って、一括削除する方法を共有します。

## 一括削除する方法(prefixあり)

“`php
$keyPattern = ‘hogehoge_*’;
$keys = array_map(function ($key) {
return str_replace(config(‘database.redis.options.prefix’), ”, $key);
}, Redis::keys($keyPattern));
if (!empty($keys)) {
Redis::del($keys);
}
“`

複数のコネクションを使っていてそれぞれprefixが違う場合は、
`config(‘database.redis.options.prefix’)`の部分を適宜修正してください。

Laravel5.8からはデフォルトでprefixが指定されているので上記のprefixありで実行してください。

## prefixを

元記事を表示

composer installした際、メモリエラーになる場合の対応

docker環境で`composer install`した際、メモリエラーになる場合の対応。

“`
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
“`

`COMPOSER_MEMORY_LIMIT=-1`を追加して`composer install`を実行する。

“`
COMPOSER_MEMORY_LIMIT=-

元記事を表示

PHP(Laravel) 空白を含む検索

# はじめに
空白区切りで複数の検索をかけれるようにしたい。

【例】 ”Ruby PHP JavaScript” → `Ruby` `PHP` `JavaScript`

# 条件
“`bash
mac OS “11.2.3 Big Sur”
Laravel Framework “6.20.27”
PHP “8.0.7”
“`

# 最終的なコード
`Controller`と`Model`に分かれています。
Controllerで使用している関数をModelの方で定義しています。

“`php:Controllers/SearchController.php
class SearchController extends Controller
{

public function __construct(Search $search)
{
$this->search = $search;
}

public function index(Request $request)
{
$query = Recipe

元記事を表示

Laravel 8でテキストを改行させ、埋め込まれたJSを実行させない方法。

“`

{!! nl2br(e($post->body)) !!}

“`
e()で文字実態参照に変換。
nl2br()で改行コードを改行タグに変換。
{!! !!}でbrタグで改行させるようにする。(文字実体参照への変換を無効にする)

元記事を表示

PHP で定数を使ってみる

##PHPで定数を使ってみた

ちなみに定数とは

>const キーワードか、 define() 関数を使うことで、定数を宣言することが出来ます。 define() を使えば任意の式を使って定数を定義できますが、 const キーワードを使う場合には、 次の段落で説明する制約があります。 定数が一度定義されると、 変更または未定義とすることはできません。
>>https://www.php.net/manual/ja/language.constants.syntax.php

みなさんPHPで定数って使ってますか??
私は古いシステムを修正することが多いのですが、定数を使っているプログラムは非常に少ないです。(あくまで私の偏見ですが)

私は師匠に定数は積極的に使っていけと習ったので、プログラムの先頭には定数が並んでいる場合が多いです。

DBに保存される際にINT型で保存されるけれど、画面に出力される時は日本語で表示してね、といった文言は是非定数を使ってあらかじめ定義しておきたいですね。
例)曜日、旧暦、性別など

“`php

元記事を表示

S3バケットを作成してEC2と接続する【備忘録】

#はじめに
 前記事([EC2サーバー構築の概要【備忘録】](https://qiita.com/namikis/items/9e7c71a1e920bd61d09c))で作成したEC2インスタンスと、AWSストレージサービスであるS3をPHPで接続した時に調べたことの備忘録。
 AWSアカウントを作成し、EC2インスタンスのセットアップが完了していることが前提です。
 具体的な概要・用語についての記事であり、具体的な手順については割愛しています。

#目次
– 全体の流れ
– 項目別の詳細
– yumとrpm
– 参考文献

#全体の流れ
####S3セットアップ
1. S3バケット作成
1. IAMロール作成
1. EC2インスタンスにIAMロールを割り当て
1. エンドポイントの作成

####AWS SDK for PHP でS3に接続
5. PHPのバージョンアップ
6. Composerインストール
7. AWS SDK for PHPをインストール

#項目別の詳細
####S3バケット作成
 手順通りやればいいので割愛。
####IAMロール作成・IAMロールを割り当て

元記事を表示

【PHP】三項演算子の結果を文字列結合したいが上手くいかない

PHPで、三項演算子の結果を文字列結合して表示したいことがあり、次のようにコードを書いてみて『結果:Ok』を期待したけれど、実際に出力されるのは『Ok』のみ。
「結果:」の形跡はまったくなく不思議。いったいどこにいってしまったのだろうか。

“`PHP
$hoge = 3;
echo ‘結果:’. ($hoge == 3) ? ‘Ok’ : ‘Ng’;
>Ok
“`
# とりあえずググってみた
「teratail」で質問と回答を見つけた。

https://teratail.com/questions/3894

>(’答えは’.0) ? ‘正解!’ : ‘間違い!’;
>(‘答えは、0’) ? ‘正解!’ : ‘間違い!’;
>(TRUE) ? ‘ 正解!’ : ‘間違い!’;
>
>
>なので、三項演算子の部分を()で囲みましょう。

「三項演算子の部分を()で囲み」で解決なのだけれど、少し丁寧に理解しておこうと思う。

# 1つ1つ動きをみていく
読み解くには「演算子の優先順位」が分かればOKです。

https://www.php.net/manual/ja/languag

元記事を表示

Laravelを使ってチームで開発する前に決めておくべきコーディングルール

#はじめに
現在Laravel × Vueを用いてサービス開発をしており、チームとしては実装担当4名でプロジェクトを進めています。開発を進めていく中で、初めのうちに決めておけばよかった!ということがあったので当記事で共有しておきます。
コーディングルールを決めておけば、プログラムの統一性が増し可読性の向上、バグの減少、命名にかける時間の削減に繋がりますので決めておくことをおすすめします。

#決めておいたほうがいいこと
+ メソッドや変数の命名規則
+ 各ファイルの役割
+ ディレクトリ構成
+ リレーションの命名規則
+ routeの記述の仕方
+ コントローラの使い方
+ リソースコントローラでモデル結合ルート(ルートモデルバインディング)を使うかどうか

### メソッドや変数の命名規則
命名規則において以下の形式がよく用いられます。

| 命名規則 | 書き方の例 |
|:———–|————:|
| キャメルケース | userProfile |
| スネークケース | user_profile |
| パスカルケース(アッパーキャメル) | Us

元記事を表示

オブジェクト指向プログラミング入門 for PHP programmers (2)〜オブジェクト編

## この記事について

この記事は[オブジェクト指向プログラミング入門 for PHP programmers (1)〜前提と概念編](https://qiita.com/nunulk/items/c9e1088c0c911e9e4a2c)の続編です。続編といいつつ、間がかなり空いてしまったのと、続編執筆の動機が突発的だったせいであまり前後の脈略がないかもしれませんが、その点ご容赦ください。

オブジェクト指向プログラミングとはなにか、みたいな記事は世の中に溢れていて、いまさら自分が書いてもなぁ、という気持ちでいたため、続編を書かずにいたんですが、最近以下の記事を読んで、思うところがあったので続きを書くことにしました。

https://codezine.jp/article/detail/14759

> 使いこなすという点においては、オブジェクト指向のよくある説明の文脈と実装が綺麗に合致しないということもありそうだと感じています。例えば、よく目にする機会があるであろう車や鯛焼きの例えが、実際の設計・実装と乖離してはいないでしょうか。イメージを掴む分には良いのかもしれませんが、鯛焼

元記事を表示

MAMPでtimezoneの変更

デフォルトでは日本の時間で表示されないので、日本の時間で表示する変更方法を書いてみました。

大きくわけて
1.MAMPでPHP versionを確認。
2.timezoneを書き換える。
3.MAMPを再起動してtimezoneが変更されているか確認。
すれば変更できます。

1.MAMPでPHP versionを確認。
MAMPを起動する(stratを押す)。
WebStartをおして、phpinfoをクリック。
![SuperScreenshot 2021-9-12 16-2-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720571/be073581-ef73-f4d6-c880-820ec82613ae.png)

PHP versionが書いてるので確認する。
![SuperScreenshot 2021-9-12 17-38-55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1720571/83

元記事を表示

【簡単3 steps】Vue.jsサンプルをLaravelアプリに実装する方法

![Vue.jsサンプルをLaravelアプリに実装する方法.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954103/773b4b6d-b45d-c20d-18eb-7d2ed9369e8f.jpeg)

今回の記事は下記の方におすすめです!

:::note info
Laravelの基礎はOK
Vue.jsの基礎はOK
でもLaravelでVue.jsサンプルを使う方法が不明
:::

自分でゴリゴリコードを書くのもありですが、最初のうちは「Vue.js」のサンプルをLaravelのサイトに埋め込むところから始めるのはありかもしれません。

今回は、「Vue.js」のサンプルが多数紹介されている海外のサイトを紹介しつつ、サンプルを実際の自分のプロジェクトに埋め込む方法について共有いたします!

今回の記事が参考になれば幸いです:relaxed:
なお、間違いやご指摘ありましたら、コメント下さると幸いです。

# 実行環境
– PHP 7.4
– Laravel 6.2
– V

元記事を表示

PHP よく使うString関数まとめ

# 本記事の内容
本記事では、String関数、マルチバイト文字列関数である、

* explode (文字列を指定した文字列により分割する)
* substr (文字列の一部分を返す)
* nl2br (改行文字の前に HTML の改行タグを挿入する)
* str_replace (検索文字列に一致したすべての文字列を置換する)
* strpos (文字列内の部分文字列が最初に現れる場所を見つける, 文字列が存在するかの確認)
* htmlspecialchars (特殊文字を HTML エンティティに変換する)

の使い方をざっくりまとめています。
さらに詳しく知りたいという方は、記事最後に公式ドキュメントのページを一覧で記載しています。
(順次追加です)

一つの関数あたり、

* 関数の詳細(公式リファレンスに沿った具体的なもの)
* ざっくりした説明

の二部構成です。
 使い方に関しては、ざっくりした説明だけを見ていただければ理解できる程の情報量を簡潔にまとめています。
(誤解を招く表現等ありましたらコメントでお願いします)

## explode関数

<

元記事を表示

ファイルアップロードツールを作ってみた

#はじめに
PHPとJavaScriptを使ってブラウザ上で動作するシンプルなファイルアップロードツールを作りました。
Chromeブラウザで動作します。

#ツールイメージ
ツールのイメージはこんな感じになります。
![01_img.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/740996/75e52bd1-a1e0-c4d6-9725-e41cbffb55ec.png)
①テキストを保存する領域です。テキストエリアになっているので複数行保存出来ます。
②上部のテキストの内容を保存するボタンです。
③アップロードされているファイル一覧が表示される領域です。
ファイルがアップロードされている場合は、ファイル名・ダウンロードボタン・削除ボタンが表示されます。
④ファイルアップロード領域です。ここにファイルをドラッグ&ドロップするとファイルがアップロードされます。

#ファイル構成
ツールのファイル構成はこのようになっています。
![02_img.png](https://qiita-ima

元記事を表示

The PutObject operation requires non-empty parameterのエラー対応について

下記の記事を参考にs3へ画像を保存する途中でThe PutObject operation requires non-empty parameterのエラーが出たのでその対処法です。

https://qiita.com/nakasan773/items/9436e9b1c60831120aba

##参考にした記事

https://stackoverflow.com/questions/64751415/the-putobject-operation-requires-non-empty-parameter

[Laravel] .env ファイルの更新内容が反映されない場合の対処方法

##確認手順

https://qiita.com/nakasan773/items/9436e9b1c60831120aba

上記記事を参考にcomposerで必要なものを入れたりバケットを作ったり.envを書き換えます。

その後、

“`php
php artisan config:cache
もしくは
php artisan cache:clea

元記事を表示

画面遷移せずにformを送信する方法

##画面遷移せずにformを送信する方法

formを送信する際にaction属性を自身に返す場合、入力した内容はそのまま表示させておきたいですよね。

“`html




“`
上記の例はaction属性が空なので自身に遷移します。
phpのみで入力した値を保持したい場合はinputのvalue属性にPOSTで渡ってきた情報を出力してやる必要があります。

“`php
alert(‘保存しました’)“;

$name = htmlspecialchars($_POST[“name”], ENT_QUOTES);
$address = htmlspeci

元記事を表示

最近物忘れのひどい私が書いた、二重登録防止のためにMySQLでロックを使ったPHPのサンプルコード

## 結論

1. InnoDBのテーブル
2. トランザクションを開始する
3. SELECT … FOR UPDATEをする
4. 新規追加もしくは更新のクエリを実行する
5. トランザクションを終了する

## 概要
1件だけの登録、1件のだけの更新時の処理用
同時登録、同時更新によりデータの整合性が取れなくなる事を防ぐ事が目的
行ロックなのかテーブルロックになってしまうかなどは、考えていない

## サンプル用テーブル

idとnoだけのテーブル。InnoDBである事。

“`SQL
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT,
no int NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;

— 1件入れておく
INSERT INTO test (no) VALUES (1);
“`

## 新規作成

仕様はnoは重複してはならない(ユニークインデックスを貼れば済むが)とします。なので挿入するnoが存在していない事をチェックしてから挿入します。「伝票番号など

元記事を表示

Laravel8でバリデーションを日本語化

#はじめに#
 Laravelはログイン機能を簡単に作ることが出来ますが、デフォルトではバリデーションメッセージが英語になっています。日本語に変更することもできますので備忘録として残していきます。

#日本語化の手順#
 Laravelのメッセージファイルはresources/lang/enにあります。enなので英語ですね。ファイルの中身を見てみるとこんな感じです。

“`resources/lang/en/validation.php

元記事を表示

WordPress上に、PHPで簡単なウェブアプリを作成する

「WordPress上にウェブアプリを作れないかな~」と考えていたところ、PHPで簡単に作れそうだったので挑戦してみました。

##対象者

– HTML・CSS・PHPの基礎を理解している人
– WordPressがどのような仕組みで動いているのか、ざっくりと理解できている人
– WordPressで、すでにブログを運営している人
– WordPressを使って、ウェブアプリを作ってみたい人

なお、今回の記事を書くにあたり、こちらの本でPHPとWordPressの仕組みを勉強しました。

– WordPressユーザーのためのPHP入門 はじめから、ていねいに。

「PHP以外の言語でコードを書きたい!」という人もいるかもしれませんが、WordPressがPHPをベースとして作成されているため、ある程度の技術が必要になります。
(私は技術力がないので、あきらめました。)

##成果物の解説

成果物は[こちら](https://corgi-komugi.com/php-test/)になります。

|[

  • OTHERカテゴリの最新記事