- 1. ユーザ登録フォーム
- 1.1. PHP ログイン認証の作成手順① 〜データベースと接続する〜
- 1.2. 【PHP 初級】配列おさらい➁ ~取得・検索・その他~
- 1.3. 【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【3問目/100】
- 1.4. 【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【2問目/100】
- 1.5. 【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【1問目/100】
- 1.6. 【超初心者編】PHP7×MySQL、PDOを使用してDB(データーベース)に接続する方法
- 1.7. 【PHP】Docker環境にphpMyadminを導入する
- 1.8. PHPで突如現れた「? : 」に、なんそれ!となった頃の話
- 1.9. 【Laravel5.5】キャッシュクリアコマンドと、まとめて実行する方法
- 1.10. Laravel checkboxで複数取得する方法
- 1.11. PHPの最低限必要スキルのメモ
- 1.12. PHPでログイン機能
- 1.13. Laravelで画像を表示する方法
- 1.14. JSとLaravelでAPI通信する際に日付データを合わせる(unixtime Date)
【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
・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にて公開しています。作成中のポートフォリオです?
詳しくはQiitaにまとめています。#プログラミング独学#プログラミング初心者#駆け出しエンジニア#駆け出しエンジニアと繋がりたい#webアプリ開発#webデザイナー#udemy#ポートフォリオ#今日の積み上げ pic.twitter.com/jHfrxduBDl— らむくん@未経験エンジニア転職 (@x49_n) January 22, 2021
次回は予定入力欄を作成します!
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(‘