PHP関連のことを調べてみた2019年11月18日

PHP関連のことを調べてみた2019年11月18日

Laravelのパスワードリセットを日本語化したい

# はじめに
LaravelのPasswordResetをAuthを使って作成したのですが、
このままでは英語のメールとなってしまうので、
日本語化したいと思います。

Auth周りの動きなどあまり把握できていなかった部分もついでにざっと流れを追っておこうと思います。
ちなみにLaravelは初心者です。

LaravelのVersion

“`bash

$ php artisan –version
Laravel Framework 5.5.48
“`

## 処理の流れを追っていこう

### /password/resetで入力フォームを表示するまで

まず、パスワード リセット画面は“`/password/reset“`となります。
“`routes/web.php“`内に記載がある“`Auth::routes();“`でルーティングされてます。

その“`Auth::routes();“`ですが、これによって
“`vendor/laravel/framework/src/Illuminate/Routing/Router.php“`が呼ばれます。

元記事を表示

【サルが書く】CakeFest2019に行ってきた話

## CakeFestに参加してきたぞ!

わきゃ!

CakePHPの国際カンファレンスが今年TOKYOで開かれるということで、これは行くしかないと思い行ってきました。
メモを取っていないスピーカー等もありますし、雑なメモになっているのをご了承ください。

やはり日本のカンファレンスとは違い、様々な国籍の方が会場にはいて、受付も英語だったのでかなり戸惑ってしまいましたがなんとか受付をすませ着席しました。

来場者特典として、ノートといわゆるぺちぞーがみんなに配られました。
![iOS の画像 (5).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177293/6834fdaf-7d91-6d49-5775-1266e1d3af20.jpeg)

途中のbreak timeはなぜかむき出しのバナナが無造作に置かれておりました。

![iOS の画像 (4).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177293/8

元記事を表示

cronを使ってバッチ処理を実行

# バッチ処理とは
どこかのタイミングで処理をまとめて行う

# cronとは
> ジョブを自動実行するためのデーモンプロセス(バックグラウンドプロセス)

cronを設定するのが`cronコマンド`

>[初心者向けcronの使い方](https://qiita.com/tossh/items/e135bd063a50087c3d6a)

# 【実例】ある時間に定期的にメールを送る

`mb_send_mail`関数
日本語などのマルチバイト文字を扱ってメールの送信が可能
>mb_send_mail(string $受信者, string $タイトル, string $本文[, string $追加ヘッダ[, string $追加パラメータ ]])

“`cron.php

元記事を表示

テスト

# SQL文

##CREATE文
CREATE TABLE user(
user_id INT,
name VARCHAR(100),
tel VARCHAR(100)
)
##INSERT文
INSERT INTO item (
item_name, item_price, item_flag)
VALUES
(‘リンゴ’, ‘120’, 1),
(‘オレンジ’, ‘200’,1),
(‘バナナ’, ’80’, 1)

元記事を表示

Laravel Backpack with Bouncer for Access Control

Recently I was in a project that uses laravel bouncer with backpack 4. Here is how it was done after you have installed laravel backpack and bouncer in your project

Step 1: Create a `Role` model that extends `\Silber\Bouncer\Database\Role`
This need to be done as Laravel Backpack requires the model to use `Backpack\CRUD\app\Models\Traits\CrudTrait`.

You may create an `Ability` model that extends `\Silber\Bouncer\Database\Ability` as well for the same reasons. Although I am not doing it for rea

元記事を表示

配列に要素を追加

#配列に要素を追加

“`php:index.php
$text = [];
$array = [“hoge”, “piyo”];
“`

`$text`に`$array`の要素を追加するという処理を書いていきます。

私が当初考えていた処理が次の処理です。

“`php:index.php
$text = [];
$array = [“hoge”, “piyo”];
foreach ($array as $str) {
$text[] = array_push($text, $str);
}
“`

こちらを実行し`$text`を`var_dump()`すると

“`php:index.php
array(4) {
[0]=>
string(9) “hoge”
[1]=>
int(1)
[2]=>
string(9) “piyo”
[3]=>
int(3)
}
“`

このような結果が返ってきます。
`$text`の[1]と[3]に何やら謎の要素が入ってしまっています。
実はarray_pushは返り値を返すのです。
返り値の値は、

元記事を表示

Moodle 3.7 マニュアル – 設定ファイル(config.php)

[原文](https://docs.moodle.org/37/en/Configuration_file)

Moodle の設定ファイル名は、config.php です。このファイルは、moodl ディレクトリにあります。Moodle のダウンロードパッケージには含まれておらず、テンプレートファイルである config-dist.php(Moodle パッケージに含まれています)から、インストールの過程で作成されます。

Contents

[1 config-dist.php](#1-config\-distphp)
[2 $CFG->wwwroot を正しく設定する](#2-cfg\-wwwroot-を正しく設定する)
[3 password salt を有効にする](#3-password-salt-を有効にする)
[4 パスワードをバックアップに含める](#4-パスワードをバックアップに含める)
[5 新しいコースのためにデフォルトブロックレイアウトを変更する](#5-新しいコースのためにデフォルトブロックレイアウトを変更する)
[6 追加のテーマディレクトリの場所を追加す

元記事を表示

仮想サーバーの構築〜laravel導入まで(vagrant/centos7/apache/PHP/composer/laravel)

laravelプロジェクトをapacheで動かしたい仮想サーバー構築のためのフローです。

備忘録用に流れしか書いていません。

##環境

###host環境
OS:MAC OS 10.14.6
vagrant:2.2.4
virtualbox:6.0.4
###仮想環境
OS:CentOS Linux release 7.7.1908
PHP:7.3.11
apache:2.4.6
composer:1.9.1
laravel:6.5.1

###仮想サーバーをインストール

###vagrantをインストール

###virtualboxをインストール

####boxを追加する

“`
$ mkdir centos7 :仮想サーバーのファイルを作成
$ cd centos7 :仮想サーバーのファイルに移動
$ vagrant box list //インストール可能なboxリストを確認

例)
bento/centos-6.8 (virtualbox, 2.3.4)
centos/7 (virtualbox, 1905.1)

$ vagrant ini

元記事を表示

MAMPにLaravelを5分でインストールする

##MAMPにLaravelを高速構築する

qiita投稿3記事目です。

まだLaravelを触ったことのないかた、この機会に5分で導入しましょう。

###環境

OS : macOS Mojave 10.14.5
MAMP : 5.3
Laravel : 5.8.x

`MAMPがmacに入っている前提で進めます`

##ゴール

Laravelのあのトップ画面(welcome.blade.php)を表示する
![スクリーンショット 2019-11-17 14.46.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472701/61d99e7e-ea6b-d409-3660-baf690c03918.png)

##1.composerを導入

“`
$ curl -sS https://getcomposer.org/installer | php
“`
まずcurlコマンドでcomposerのインストーラーにアクセスして、ダウンロードします。

“`
$ sudo m

元記事を表示

MovableTypeやWorsPressから学んだDB構造を活かしたサイト構築

WordPressのサイト構築機能とMovableTypeのユーザー(Author管理)をPHPのPearによるログイン管理を利用してモバイルからの投稿、FacebookやInstagram更にYoutubeのリンクコピーを埋込データに変換してサイトを運用出来る様に作ってみました。
Qiitaに前回投稿した例のようにホームページに簡単にシェアー出来る様にすることを目的に開発していましたが、各SNSサイトの仕様が変わらなければとりあえず簡単に埋め込む事ができました。
各SNSサイトの投稿でシェアー可能な投稿はご存じのようにiframeで埋め込めるのですが良識で判断する必要はあると思います。
![スクリーンショット 2019-11-17 15.23.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101462/c933eb7e-df5d-0c57-0d5f-1d3194495538.png)
facebookの投稿のシェア->その他オプション->コピーでリンクがコピーされます。それを下記の様にPHPでi

元記事を表示

WordPressのプラグイン MW WP Form と kintoneを連携時に動かない時に見るところ

[cybozu developer network](https://developer.cybozu.io/hc/ja) の [WordPress連携1 MW WP Formとの連携でお問い合わせ管理](https://developer.cybozu.io/hc/ja/articles/115002637086-WordPress%E9%80%A3%E6%90%BA1-MW-WP-Form%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA%E3%81%A7%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E7%AE%A1%E7%90%86) の記事を参考に、動作しない時に見るところを記事にしてみました。

# はじめに

[WordPress連携1 MW WP Formとの連携でお問い合わせ管理]
https://developer.cybozu.io/hc/ja/articles/115002637086
の記事を参考にして試してみました。

元記事の更新が1年以上経っているので、動作検証も兼ねてい

元記事を表示

Laravelでmake:bladeでbladeを作成するコマンドの自作

Laravelではコントローラーなどはmakeコマンドでテンプレートから作成することができますが、
bladeのmakeコマンドは用意されていないため自作してみました。
「php artisan make:blade hoge」でhoge.blade.phpを作成できるようにします。
確認したLaravelのバージョンは6.5.1です。

# コマンドの作成
まずmake:blade用のコマンドを作成します。

“`
php artisan make:command MakeBladeCommand
“`

app/Console/Commands下にMakeBladeCommand.phpが作成されます。
このファイルを以下のように書き換えました。

“`app/Console/Commands/MakeBladeCommand.php

元記事を表示

学習メモ JSONの基本とjson_encode / json_decode

#JSON
JSONとはデータ形式の一つ。
JavaScript Object Notationの略。

データを扱う際、誰が書いても同じであるように、また機械が判別できるように書き方のルールが決まっている。HTMLやCSVなども1つのデータ形式であり、JSONもその一つに含まれる。

###JSON形式

“`
{
“user”: “Tom”,
“age” : 18,
“gender”: “male”
}
“`

##json_encodeとjson_decode
今、PHPについて学習中だが、PHPではデータをJSON形式に変換したり、JSON形式にデコード(変換されたものから復元)できる。

###エンコード:
ある形式のデータを一定の規則に基づいて別の形式のデータ
に変換すること。

###デコード
変換されたデータを逆に、復元すること

例:

“`
//配列
menu_array = [‘coffee’ => ‘menu1’
‘tea’ => ‘menu2’
‘juice’ => ‘menu3’

元記事を表示

怪現象?PHP7にしたらDB文字化け

PHP5から7へバージョンアップした時に発生した怪現象(?)です。

## 解決策(詳細は後述)
– mysqldumpにて文字コード:latin1でエクスポート
– エクスポートしたファイル内の”SET NAMES”の文字コードをutf8へ変更してインポート

## 前提
– Linux(CentOS7) + Apache + MariaDB + PHP
– 2015年にMinimalからインストールして構築しました

## 事象
– PHPのバージョンアップ後にDB文字化けが大発生しました、パニクりました
– Webアプリで表示されるDBデータが全て文字化け(なぜか文字化けしないテーブルもありました)
– MariaDB5から10へバージョンアップしてみましたが、ダメでした
– **PHP5に戻すと、Webの文字化けはなおりました…**
– **2017年に構築した同要件のWebサーバーは、同手順でPHPをバージョンアップしても、当事象は発生しませんでした**

## 調査
### そもそも、コンソール上でも文字化けしている
元々、コンソール上は文字化けしていた気も…ほとんどコンソ

元記事を表示

【PHP】SESSIONも危ない!セキュリティを見直そう。

## 初めに
みなさんは、

“`php
session_start();
“`

だけでセッションを利用していませんか?もし、この一行だけでsessionを使用しているのなら、直ちに変更したほうがいいでしょう。
## どこが危ないのか
セッションの仕組みをもう一度確認してみましょう。
まず、サーバーが初アクセスのプレイヤーにクッキーでIDを作成し保存します。
そのあと、セッションIDをアクセス毎に確認し、保存データからHTML等を生成します。

ここで注意する点が、***Cookieでsessionidを保存する***ということです。
Cookieとは、クライアント側で変更可能(ほとんどのブラウザで可能)なため、友人のsessionidを盗めばログインもできてしまいますし保存データもすべてアクセスできてしまいます。

つまり、ほとんどのサイトがsessionにログインデータを保存しているので、ユーザーを識別するためのsessinidが盗まれてしまえば保存されているデータも盗まれるということになりますし、メモサイトであればメモのデータを変更さえ削除さえできてしまいます。

簡単な事

元記事を表示

ディレクトリ階層深めのLaravelアプリケーションでCircleCIの設定をする

ディレクトリ構成をミスってしまったアプリケーションでCircleCIを導入するのにだいぶハマってしまったので、メモとして残します。

### 環境情報
– PHP 7.2
– Larave l5.6
– Github
– CircleCI 2.0
– mysql 5.7

### アプリケーションのディレクトリ構成
このアプリケーションを作る際に、初めてLaravelをDockerを使って環境構築をしたため、2つネストの深いディレクトリ構成で作ってしまった。この構成がおかしいと気付いた時には、時すでに遅し。気持ち悪いが、特に不便なこともなかったので、この形で進めましたた。

“`
app
|-.circleci
├─ src
├─ hogehuga
└─ app
└─ artisan
└─ vendor
└─ tests
└─ phpunit.xml
└─ composer.json
└─ composer.lock
“`

### 問題
CIでテス

元記事を表示

51歳からのプログラミング 備忘 初心者が作る移動管理アプリ ベースプログラム

android端末の移動状態を管理するシステムの、ベースとなるプログラムを作ってみました。セキュリティなど問題は多いと思うんだけれど、今の僕に作れる(初心者が作る)簡単シンプルなプログラムを目標に作ってみました。車両管理や営業管理など、事業場外活動の状況を確認する目的で作成してます。個人利用なのでこれをカスタマイズして必要な機能を盛り込めば十分かな?

なんか問題ありそうならアドバイス頂けますと幸いです!
ここまで来るのにめっちゃ時間がかかった!

#Over View
このシステムは、androidアプリとwebアプリで構築してます。androidは常駐アプリにし、1分毎に位置情報を取得し、おおよそ10分毎に発信し、webアプリでデータベース登録し、移動状況を表示するという感じです。このシステムはベースプログラムなので、複数端末には対応してませんし、位置情報の利用もMap表示だけです。なお送信はGET送信としてます。

androidアプリはapi28以上を想定してます。
webアプリはLaravelです。

##ファイル構成

**android**

|ファイル名|説明|
|-

元記事を表示

【Laravel】DBクラスの利用

# DBクラスとは
Laravelに装備されている
最もシンプルなデータベースアクセス機能です。
このクラスにはデータベースを利用するための
様々な機能が用意されています。

# DB::select
DBクラスにある静的メソッドで
SQLクエリを実行し結果となるレコードを取得するものです。
メソッド名から想像がつくように
***select文***を実行するものと考えてください。
以下のように呼び出します。

“`php
$変数 = DB::select( 実行するSQL文 );
“`

# DB::insert
レコードの追加を実行します。
***insert文***を実行するものと考えてください。
戻り値を設定する必要はありません。

“`php
DB::insert( クエリ文, パラメータ配列);
“`

# DB::update
レコードの更新を実行します。
***update文***を実行するものと考えてください。

“`php
DB::update( クエリ文, パラメータ配列);
“`

# DB::delete
レコードの削除を実行します。
***d

元記事を表示

Laravelのイベントまとめる

# はじめに
Laravelでイベント機能を実装する必要がありそうだが、
全くさわったことがないため、使い方を一から整理する。

イベント(リスナー)に実装する内容は本来ならコントローラーでも実装可能です。
ただ、コントローラーはどうしてもコード量が増えてしまうので、
なるべくコード量を減らしたいです。
そういった意味ではリスナーに記載することでコードがスッキリします。

また、コントローラーであれば複数処理をまとめて同じクラスに記載することとなりますが、
リスナーでは処理毎にクラスが分かれるので、
後々のリファクタリングも楽になります。

# イベントとは
任意のタイミングで別の処理を実行させます。
例えば、
ユーザー登録やLoginなどのタイミングでイベントを発行して、メールでの通知を実行させるなど。

# やること
・イベントとリスナーの定義
・イベントとリスナークラスの作成
・リスナーの実装

# 現状の確認
### 現状のイベントとリスナーの確認
app/Providers/EventServiceProvider.php内の
listenプロパティにてイベントと対応するリス

元記事を表示

マージリクエストしようとしたら以前プッシュした別ブランチと統合されてしまった

プログラミングを初めて二か月ほどの者です

二週間ほど前にプッシュしたブランチと今回プッシュしたブランチがマージリクエストしようとしたら、統合されてしまいました

以前プッシュしたものは今回いらないものなので、なんとか切り離したいのですが、解決方法が分かる方は教えていただきたいです。

元記事を表示

OTHERカテゴリの最新記事