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

PHP関連のことを調べてみた2021年01月24日
目次

【Laravel】テーブル名が長い時に、Laravel7から導入された外部キー制約をつけるマイグレーションエイリアスを使う方法

久しぶりのQiitaへの投稿です。

未経験からエンジニアに転職をして、2年目に突入したバックエンドエンジニアです。
DBに外部キー制約を追加をしようと思い、Laravel7から使えるエイリアスでmigrationファイルを作成していました。
ただ、テーブル名が長い時にハマってしまい、できる人には当たり前すぎる内容かもしれませんが、振り返りの意味も込めて投稿します。

# 開発環境

– 言語:PHP7.4.8
– フレームワーク:Laravel7.28.3
– DB:MySQL8.0.22

# テーブル名が短い時

## 目標のテーブル構造
公式ガイドでもよく使われるような下記のようなテーブルを作り、postsテーブルのuser_idに外部キー制約をかけることを目指します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451174/aa911825-bbc7-d543-a9f9-c1dd7daa96a6.png)

## Laravel7より前の時の記法
Laravel7より前の

元記事を表示

PHP ログイン認証の作成手順⑤ 〜ログイン機能作成②とセッションハイジャック〜

index

元記事を表示

PHP ログイン認証の作成手順④ 〜ログイン機能作成①とセッションとキャッシュ〜

#ログイン機能の作成の流れ
①emailとpasswordを受け取る
②emailと一致するユーザ検索
③passwordが一致するか検証
④ユーザ情報をセッションに格納してログイン

#sessionとは
開始から終了までの期間のこと。
1ユーザのログインからログアウトまでの行動は1セッション。
1セッションはセッションIDで管理する。

通信(HTTP)はユーザを識別することができない。
そのため、識別するためにセッションが必要になる。
セッションIDを管理するのはCookie。

CookieはセッションIDをブラウザに保存する。

ユーザがログインすると、サーバ側からセッションIDが生成されてブラウザに送られ、Cookieに保存する。
そして、ログイン中は常にセッションIDを送って、サーバ側でユーザを識別してもらう。

##sessionの使い方
###関数
`session_start()`
→Cookie(ブラウザ)にセッションIDを入れる
→セッションファイルが生成される
→セッションファイルに自由に値を保存可能(現場ではセッションファイルを管理する用のデータベースを作る

元記事を表示

エンジニア未経験がWordPressを使ってWEBアプリを作ってみた

# 今回製作したWEBアプリについて

今回作成したWEBアプリは「[AboutMyself](https://www.aboutmyself.net “AboutMyself”)」。プロフィールを質問形式で記載していくSNSのようなものです。15年程前に流行った「前略プロフ」をイメージしていただければ良いかと思います。![IMG_7162.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402394/45134b81-7d71-3a65-51b7-a4b032d68773.png)

#1. 開発経緯

インターンのテレワークをするなかで、新しく入ってきた人のこと(趣味や経歴)についてわからずなかなかコミュニケーションが取りづらいと思った。また、気難しいと思っていた上司の趣味がわかった途端、急に親近感が沸いた。これらのことから、ある程度事前に相手のことをわかっていればコミュニケーションが円滑になるのではないかと考え、「AboutMyself」を作ることになった。

#2. 「[AboutMyself]

元記事を表示

PHP ログイン認証の作成手順③ 〜新規登録機能作成②とパスワードハッシュ化〜

新規登録フォームからPOSTで送られてきたデータをデータベースにINSERTする

#手順
##ユーザを登録する処理
register.phpでバリデーションに引っかからずに登録ができる準備が整った時の処理をコーディングしていく。
UserLogicクラスを作成し、その中のcreateUserメソッドを作成し、それを使用する。
createUserメソッドはtrueかfalseを返すような関数だから、新規登録に失敗した時には、
$err配列に格納して、バリデーションと同じようにエラー項目として表示させる。

“`php:register.php

元記事を表示

PHP ログイン認証の作成手順② 〜新規登録機能作成とバリデーションの作成〜

#手順
##新規登録画面の作成
今回は、`ユーザ名`、`メールアドレス`、`パスワード`、`パスワード確認`の4つのフォームを用意する

“`php:signup_form.php





ユーザ登録画面

ユーザ登録フォーム


元記事を表示

PHP ログイン認証の作成手順① 〜データベースと接続する〜

#使用環境(ローカル環境)
・MAMP
・phpMyAdmin

#データベース定義(使用するカラム)
・id
・name
・email
・password

#手順
##データベースとの接続

“`php:env.php

“`

“`php:dbconnect.php
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEF

元記事を表示

【PHP 初級】配列おさらい➁ ~取得・検索・その他~

[【PHP 初級】配列を使いこなす➀ ~宣言・初期化・追加・結合・削除~](https://qiita.com/gksdyd88/items/6b522709422e14dae2ab)の続きです。
今回は配列から値を取得、検索する方法など、もう少し実務的な内容をまとめます。

## 値の取得
配列から値を取り出す色んな方法を見てみます。
### キーを指定して値を取り出す
どの言語も同じように、数値やキーを指定して値を取り出します。

“`php
php > $fruits = [‘apple’, ‘grape’, ‘banana’];

php > var_export($fruits[0]);
‘apple’
“`
“`php
php > $colors = [‘C1’ => ‘red’, ‘C2’ => ‘purple’, ‘C3’ => ‘green’];

php > var_export($colors[‘C1’]);
‘red’
“`

### すべての値を取り出す
#### array_values
https://www.php.net/manual/ja/f

元記事を表示

【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【3問目/100】

アルゴリズムのアウトプット

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)@e869120さん

>AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の初中級者が解くべき過去問精選 100 問
をPHPで解いていきます。

“`php

元記事を表示

【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【2問目/100】

アルゴリズムのアウトプット

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)@e869120さん

>AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の初中級者が解くべき過去問精選 100 問
をPHPで解いていきます。

“`php

元記事を表示

【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【1問目/100】

アルゴリズムのアウトプット

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)@e869120さん

>AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の初中級者が解くべき過去問精選 100 問
をPHPで解いていきます。

“`php

元記事を表示

【超初心者編】PHP7×MySQL、PDOを使用してDB(データーベース)に接続する方法

#データベースとの接続は、初心者にとって「最初の壁」#
こんにちは、自分はPHPを勉強して2ヶ月目の初心者です。
今回は自分用のメモと記憶整理としてデーターベース(以降:DB)との接続方法を超簡単に説明します。

環境は以下の通り
・MAMP6.2
・PHP7.4.9
・MySQL 5.7.30

#####【注意】初心者の解説なので、専門的に学習したい人は他の学習用のサイト・ページなどを参考にしてください!#####

#MySQLとPDOについて#
###MySQLはオープンソースのDB(データベース)管理システムです。###
(オープンソースとは商用、非商用を問わず配布されてるもの)
・無償で利用できる
・大容量のデーターを高速で動作させられる
・幅広いOSに対応している(Windows,mac,Linuxなど)

上記は特徴の一部に過ぎません。
優秀なシステムで実際に世界中の企業でも使用されています。

###PDOとは?###
PDO(PHP Data Objects)とは、
PHPからDBへアクセスする機能を持った拡張モジュ

元記事を表示

【PHP】Docker環境にphpMyadminを導入する

# 手順
docker-compose.ymlにphpMyadominのコンテナを追記します。

“`yml:docker-compose.yml

#docker-compose.ymlのバージョン
version: “3.8”
#docker volumeの設定
volumes:
docker-volume:

#services以下に各コンテナの設定を書く
services:
#Webサーバーのコンテナ
web:
image: nginx:1.18
ports:
– “8000:80”
depends_on:
– app
volumes:
– ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
– .:/var/www/html
#アプリケーションのコンテナ
app:
build: ./docker/php
volumes:
– .:/var/www/html
#データベースのコンテ

元記事を表示

PHPで突如現れた「? : 」に、なんそれ!となった頃の話

めちゃめちゃ初心者だった頃、PHP Laravelでの業務中に、
先輩が書いたコードで突如現れた「? : 」に、なんそれ!となりました。

開発言語がPHPなので、
「PHP ? : 」とかでググってみても、いまいちHITしなくて困った記憶があり、
同じ様な人がいるかもしれないので、記事にしてみました。

早速「? : 」の正体ですが、条件演算子の中の『三項演算子』です。

“`
AAA ? BBB : CCC
“`

この形、

>AAA が「true」なら BBB 、「false」なら CCC

ということになります。

初心者だった頃の私は、この条件分岐なら全部if文で書いてました。

“`ruby:example.php
if ( AAA ) {
BBB
} else {
CCC
}
“`
どっちが見やすいか、一目で分かりやすいか、と言われると、
定義する値によるため、場合によって書き分ける必要があります。

条件や分岐後に定義したい内容が変数だけとかの短いものは、
「AAA ? BBB : CCC」の形がスマートだなと思います。

条件演算子『三項演算

元記事を表示

【Laravel5.5】キャッシュクリアコマンドと、まとめて実行する方法

Laravel5.5使用時の例です。
ファイルの変更を反映した後、実行しておきたいキャッシュクリアコマンド。

“`
php artisan cache:clear
“`
→「storage/framework/cache/data」内のキャッシュデータを削除する。

“`
php artisan view:clear
“`
→「storage/framework/views」内に全ビューのキャッシュデータを削除する。

“`
php artisan config:clear
“`
→「config」ディレクトリのファイルの更新内容が反映されるようになる。

“`
php artisan route:clear
“`
→「bootstrap/cache/routes.php」のRouteのキャッシュデータを削除する。

※ 各コマンドで何しているかは、
https://blog.capilano-fw.com/?p=768 より引用しました。
こちらのサイトにはとてもお世話になっております。感謝永遠に。。

## まとめて実行するには…

systemディレクトリ直下

元記事を表示

Laravel checkboxで複数取得する方法 

# はじめに
inputのcheckboxを使って

`1. 複数チェックの取得`
`2. チェックしたデータを保持する方法`

をまとめてみました。

# テーブル設計とリレーション

今回は`usersテーブル`と`categoriesテーブル`使っていきます。

userは複数のcategoryを持ち、categoryも複数のuserに紐づけられているので

多対多のリレーションになります。

##テーブル設計

`◎usersテーブル`

“` php:migration
public function up()
{
Schema::create(‘users’, function (Blueprint $table) {
$table->increments(‘id’);
$table->string(‘name’);
});
}
“`

`◎categoriesテーブル`

“` php:migration
public function up()
{

元記事を表示

PHPの最低限必要スキルのメモ

###・条件分岐やループ処理ができる(itやfor)

###・共通処理は関数化できる

###・オブジェクト指向プログラミングが簡単にできる
クラスとインスタンス、継承、カプセル、ポリモーフィズムを理解し、使いこなせる

###・データベースに対して、CRUD操作ができる
create, read, update, delete

###・セッションやクッキーを扱い、ステートフルなプログラムを実装できる

###・ログインとログアウト機能を実装できる

元記事を表示

PHPでログイン機能

前回の続きです。
PHPカレンダー:https://qiita.com/x49_n/items/64a04a85b72c6d581421
#ログイン機能作成
前回作成したカレンダーにログイン機能を追加していきます。

ご参考に:https://www.youtube.com/watch?v=uCvPMe5wsNk

#ログイン機能
・新規登録(ユーザー登録)
・ログイン+ログイン確認画面
・ログアウト+ログアウト確認画面

#ER図

![ER図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934823/6c07b5de-f207-75ba-c072-db07bf795ec9.png)

簡単ですが、ER図を作成しました。(本当はツールを使って作成したかった、、、)
ER図動画化したものについてはTwitterにて公開しています。

次回は予定入力欄を作成します!

元記事を表示

Laravelで画像を表示する方法

PHP、Laravelの初学者です。

Laravelで画像を表示させる方法がわかったので、メモしておきたいと思います。

※ 使用しているLaravelのバージョンは6.xです。違うバージョンをご使用の方はご注意ください。
また、私はMacを使用しているので、Windowsをご使用の方もご注意ください。

# Laravelで画像を表示させる方法

①「自分のプロジェクト/storage/app/public」の中に利用したい画像を置く。

 私は「/storage/app/public」にtop-page.jpgを入れました(以下の画像をご覧ください)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790372/2f5d21ee-0e90-9d7e-7688-9e95350a2b24.png)

② シンボリックリンクを張る

Laravel6.xの公式ドキュメントを見たところ、
「/storage/app/public」においた画像を使えるようにする(Webからのアクセスを許す

元記事を表示

JSとLaravelでAPI通信する際に日付データを合わせる(unixtime <-> Date)

# 概要

サーバーさん => Sさん
フロントさん => Fさん

あるときこんなやりとりを目撃しました。

>Sさん < 日付のフォーマットは20200222で送ってください >Fさん < ここは2020/02/22で送ってください >Sさん < この場合は2020-02-22で送ってください >続く….

そのとき第三者の私はこう思いました。
> 私 < Unixtimeでやりとりすれば、同じフォーマットでやりとりできるんじゃね?と... ## やってみた。 ```js:javascript // Date -> UnixTime
new Date().getTime() / 1000;
// 1611320223.828

// UnixTime -> Date
new Date(unixTime * 1000);
// Fri Jan 22 2021 21:57:44 GMT+0900 (日本標準時)
“`

※バックエンドはLaravelを使用しています

“`php:php
// Date -> UnixTime
$date = new DateTime(‘

元記事を表示

OTHERカテゴリの最新記事