PHP関連のことを調べてみた2023年07月31日

PHP関連のことを調べてみた2023年07月31日

<設計>ユーザ新規登録機能

概要

トークアプリ開発の設計を説明します。

対象機能

– ユーザ新規登録機能

基本設計

– トークアプリを使用するには、ユーザ新規登録を必要とする。

詳細設計

– ユーザ新規登録には次のパラメータを設定する。

<Router>
– ユーザ新規登録ボタンを押した時の画面遷移先を設定
routes/web.php

// ユーザ新規登録
Route::get(‘signup’, ‘Auth\RegisterController@showRegistrationForm’)->name(‘signup’);
Route::post(‘signup’, ‘Auth\RegisterController@register’)->name(‘signup.post’);

***

<RegisterController>
– 新規登録機能の制御内容を設定
・ app/Http/Controllers/Auth/RegisterController.php

namespace App\Http\Co

元記事を表示

<設計>posts(投稿)テーブルのマイグレーションとシーダー作成

概要

トークアプリ開発の設計を説明します。

対象機能

– posts(投稿)テーブルのマイグレーションとシーダー作成

基本設計

– Adminerに作成するDBテーブルのうち、posts(投稿)テーブルについて、
マイグレーション実行とシーダー作成を行う。

– マイグレーションファイルを新規作成する。

– Postモデルを作成する。

– postsテーブルにはユーザの投稿内容を格納する。

– 投稿内容は文字列で140文字とする。バリデーションチェックのため、テスト用の投稿内容を160文字とする。

– 投稿内容の文字数制限はバリデーションファイルに記載する。

– postsテーブルのテスト用投稿数は、テスト用ユーザ10人が1人1投稿行うものとし、10通りの投稿内容を用意する。

詳細設計

– マイグレーション実行
1. postsマイグレーションファイルの新規作成
$ docker exec -it laravel_app bash
#ls
#cd laravelapp ; pwd
#php artisan m

元記事を表示

【紹介】プログラミング学習で参考になったこと

プログラミング学習で参考になったことを紹介します。

【C言語】

– 書籍

1. 「苦しんで覚えるC言語」
タイトルとは裏腹に解説が丁寧です。
文章はその道何十年のC言語が大好きなベテランエンジニアに教わっているような感覚があります。
コードの意味や「〇〇とは何か説明せよ」というような問題を通して、
考えながら学習していけるため、少しずつ自信になっていく本です。
私は、半分くらいまで読んで、下記のStudyーCアプリに移行しました。

2. 「明解 C言語」
体系的に順番に学んでいきたい人におすすめです。
説明はクセがなくて読みやすい印象です。
「明解 〇〇」シリーズは、情報系の大学でも教科書として使用されることがあるそうです。

– iphone向け学習アプリ
Study-C

情報系大学の学生によって作成されたC言語のための学習アプリです。
コンパイラや統合開発環境を用意する必要がなく、手軽に学習を始められます。
解説→パズルの穴埋め問題の順番で進んでいきます。
大学ではこんなことを授業でやるんだろうな、と思わせてくれた内容でした。
C言語に全く触れたことがない人でも、

元記事を表示

【PHP/Laravel】プログラミング初学者によるアプリケーション開発

概要

フルリモートでチーム共同開発を行いました。
今回作ったものはトークアプリです。

成果物

・ゲーアニ Music Board
https://geanimusicboard.fly.dev/

・Github
https://github.com/yukihiroLaravel

担当開発

■posts(投稿)テーブルのマイグレーションとシーダー作成
https://github.com/yukihiroLaravel/joint_develop/commits/feature/fukushi/posts_migration_seeder
■ユーザ新規登録機能
https://github.com/yukihiroLaravel/joint_develop/commits/feature/fukushi/user_register_login
■ユーザ編集画面・更新
https://github.com/yukihiroLaravel/joint_develop/commits/feature/fukushi/user_edit_update

元記事を表示

PHPチャットアプリのセキュリティ強化:XSSとCSRF攻撃への対策

## 目次

– [記事の内容](#記事の内容)
– [本編](#本編)
– [XSS攻撃による攻撃](#xss攻撃による攻撃)
– [CSRF攻撃による攻撃](#csrf攻撃による攻撃)
– [終わりに](#終わりに)

## 記事の内容
以前執筆した記事[ゼロから始めるPHP:チャットアプリ開発入門](https://qiita.com/fwzis/items/5fa0e33da3484b5fde70)で、生のPHPを用いたシンプルなチャットアプリを作成しました。ただ、そのチャットアプリはセキュリティ面において完全に安全ではありませんでした。なので勉強用として、今回の記事ではこのチャットアプリを更にセキュリティ上安全なものに改良することを目指します。
しかしながら、私自身もセキュリティに関してとても詳しいわけではないので、記事の内容に完璧な保証をすることはできません。もし改善の余地がある部分や間違いがある場合は、どんな小さな情報でも構いませんのでコメントにてお知らせください。

## 本編
今後内容を追記していく可能性があるが、今回はXSS攻撃とCSRF攻撃の例とその解決策

元記事を表示

ルーティングのnamespaceとは??

Ruby on Railsを使ってアプリケーションを開発していると、namespaceという単語を耳にすることが多くあります。ここでは、特にルーティングのコンテキストでのnamespaceについて説明します。

# namespaceとは何か?
`namespace`とは、ルーティングを一定の範囲(名前空間)でグループ化するための方法です。これにより、同じコントローラー名やアクション名を異なる範囲で使い分けることができます。

##### `namespace`の基本的な使用法
例えば、管理者向けのページを作成する際には、namespaceを用いてadminという名前空間を作成します。
“`ruby :routes.rb
namespace :admin do
resources :users
end
“`

上記のようにルーティングを設定すると、`Admin::UsersController`が作成され、その中にあるアクションへのルーティングが設定されます。また、ビューも`app/views/admin/users`ディレクトリの下に作成します。

#### namespac

元記事を表示

PHPの将来性

# 目次
1. [PHPとは](#PHPとは)
1. [PHPフレームワークのフリーランス求人・案件数](#PHPフレームワークのフリーランス求人・案件数)
1. [PHPエンジニアの平均年収・年収相場](#PHPエンジニアの平均年収・年収相場)

# PHPとは
1. [概要](#概要)
1. [フレームワーク](#フレームワーク)

### 概要
Webページに動きをつけるために開発された、Web開発に特化したプログラミング言語
「**動的型付け言語**」に分類される
**動的型付け言語**:同じURLでも閲覧者や時間帯などによって、表示される内容が変わるもの

### フレームワーク
**▼Laravel**
2011年に登場したフレームワークであり、PHPフレームワークの中で最高評価を受けている

##### メリット
プログラムの拡張性や自由度が高い

##### デメリット
自由度が高すぎてコードが煩雑化しやすい

元記事を表示

【Laravel/Dusk】waitForを使って無駄なテスト実行時間を短縮する

# はじめに
**①ボタンをクリック**
**②GETリクエスト**
**③レスポンスが返ってきてメッセージ表示**

`Dusk`を使ってテストを書いていると、上記のような流れをテストすることはよくあると思います。
このような一連の流れを確認するにはどのように実装するのが良いでしょうか?

例えば①で``をクリックして③で`検索結果が0件です。`というメッセージを確認するテストだとして、下記のように実装してみます。

“`php
// パターン1
$browser->click(‘@search-button’);
$browser->assertSee(‘検索結果は0件です。’);
“`
`click()`で検索ボタンクリックを行い、`assertSee()`でメッセージを確認するシンプルな内容で、テストも問題なく動くかと思います。

しかし、実行環境などによって②のGETリクエストの結果がすぐに返って来なかった場合(スペックが良くない、遅いPCの環境で実行をした場合など)、`assertSee()

元記事を表示

【Laravel】特定の条件の場合のみバリデーションを行う

# はじめに
“`php
$request->validate([
‘id’ => ‘required|digits_between:1,5’,
‘name’ => ‘nullable|max:20’
]);
“`
簡単なバリデーションを実装してみました。内容は以下の通りです。
1. `id`は必須であり、整数で1桁から5桁の間であること。
1. `name`はNULL許可であり、最大20字までであること。

このバリデーションの一部を**特定の条件の場合のみ行いたい**場合どうすればいいでしょうか。。

# パターン1 : sometimesメソッドを使う

`Laravel`の`Validtor`インスタンスで`sometimes`メソッドを使用すると、条件付きでバリデーションを行うことができます。

https://readouble.com/laravel/9.x/ja/validation.html#complex-conditional-validation:~:text=Validator%E3%82%A4%E3%83%B3%E3%82%B9%E3%8

元記事を表示

ゼロから始めるPHP:チャットアプリ開発入門

## 目次

– [記事の内容](#記事の内容)
– [なぜ作ろうと思ったのか](#なぜ作ろうと思ったのか)
– [開発環境](#開発環境)
– [本編](#本編)
– [DB作成](#db作成)
– [画面の見た目](#画面の見た目)
– [登録画面](#登録画面)
– [メイン画面](#メイン画面)
– [更新ページ](#更新ページ)
– [ログアウト](#ログアウト)
– [終わりに](#終わりに)

## 記事の内容
コード例: https://github.com/nightshrine/chatapp_php
完成イメージ:
![スクリーンショット 2023-07-28 13.04.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3509941/7040983f-7ed4-8fe6-c9ca-fccafdb3381d.png)

この記事では、Laravelを使っている私がPHPを基礎から学び直し、チャットアプリを作成する手順を説明します。前提知識としてHTML

元記事を表示

【PHP・Reset関数】配列の1つ目のデータを取りたい

配列の中に値が1つ目の値を取得したい時どうしていますか?

`$items[0]`や、`foreach`で加工するなど、色々な方法があると思いますが、
`reset($items);`
これが簡単です。

元記事を表示

30歳未経験エンジニアの日記帳 7/27

### ユーザーがレビューを投稿できる様になった!嬉しい!

ということで本日はちょびっとしか進みませんでした。。
レビュー投稿画面の作成とデータベースへの投稿、ビューへの表示。
これが実装できましたが、、

それしか実装できなかったのじゃ。

### 今日はエラーを真剣に読んだ日
今まではエラーが出るとそっこーでググったり、GPTたんにぶち込んでいましたが、
「エラー読んでみっか!」
と思いGPTを封印してやってみました。

大変やで、、、GPTパワーすごかったんだなと。

これからはエラーを読む癖もつけていきますわ。

### 今日あったエラー
“`
Target class [App\Http\Controllers\ReviewController] does not exist.
コントローラが存在していません。
“`
というエラーで2時間くらい詰まっていました。

結論から言えば、
class Contorollerを別のファイルで2つ作っていたことが原因でした。

ですが、それに辿り着くまでに、
コードがおかしいのか、、、
文法のミスなのか、、、
ルートのミスなのか、

元記事を表示

PHPでCSVデータを取得する方法

CSVファイルはデータを保存し、転送するのに非常に便利な形式です。
PHPはこのようなファイルの処理を簡単にします。
この記事では、PHPでCSVデータを取得する方法を記載します。

## 完全なコード

以下に、CSVファイルからデータを取得するための完全なPHPコードを示します。

“`php
$file = fopen(‘your_file.csv’, ‘r’);

while (($data = fgetcsv($file)) !== FALSE) {
var_dump($data);
}

fclose($file);
“`

このコードを実行すると、CSVファイルの各行が配列として出力されます。では、このコードがどのように動作するのか詳しく見てみましょう。

## コードの解説

### ファイルを開く

まず、PHPの`fopen`関数を使用してCSVファイルを開きます。この関数はファイルのハンドルを返します。

“`php
$file = fopen(‘your_file.csv’, ‘r’);
“`

### データを取得する

次に、`fgetcsv

元記事を表示

可動式todoリスト作成記 / 拖動可更換次序的todolist

(JP)
8月。といえば旅行!

今年は青森,台湾に行く計画を立てた!

しかし、9月にさらに一大イベントがある。引越しだ。

私は同じところにずっといるのが嫌な性で、賃貸更新のタイミングで毎回引越ししている。

今年も田町から芝浦あたりに引っ越そうと思う!(近場に限る)

そうなると8月月初に飛行機予約,宿予約,賃貸物件選定と、やることが盛りだくさん。

何からやればいいのかわからん、、

そこでtodoリストを作りたいと思ったのだ!

作ってみたけど、結構手こずった。

コードはかなり煩雑になってしまったが、綺麗にする気力がない、、

今週か来週にはコード載せたいと思うので、誰かに手直しして欲しい、、

ちなみに、調べまくってドラッグで項目を入れ替えることも可能にした。

——
(CN)
最近很繁忙,要幹的事情好多,,,

8月份計劃去旅遊,9月要搬家等等

想整理一下該做的事情

於是做了一個只屬於自己的完全original的todolist

憑藉網友們的智慧,前天終於完成了!!(如下圖)

但編程碼非常凌亂,打算下禮拜發編程碼,希望有網友們來修改

這todolist

元記事を表示

【PHPStan】カスタムルール作ってみた

私が所属しているインターン先のコーディング規約にオペレーターに関しては厳密チェックを行うようにするといったルールがあります。

そこで今回PHPStanを用いて、==または!=を用いている箇所があった場合にPHPStanでエラーを吐き出すようにカスタムルールを作りました。

# 手順

## ルールクラス作成

追加したいルールのクラスを作成します。今回は==と!=があった場合にエラーを出したいので以下の二つを追加します。

どこに作っても問題ないですが、今回はApp\PHPStan\Rulesに作成します。

### **DisallowEqualOperatorRule.php**

“`php

元記事を表示

実務未経験者 共同開発2ヶ月間まとめ

# 1.はじめに
PHP、Laravelを学習し、LAMP環境での共同開発に参加しました。
共同開発の2ヶ月間をまとめて学んだことをアウトプットします。
これから共同開発に参加する方の参考になれば幸いです。

共同開発で行ったこと
– 環境構築(LAMP環境)
– GitFlow
– 開発
– 企画(オリジナル機能)
– テスト
– デプロイ

# 2.自己紹介
– 前職は某メディア会社で営業、企画・編集(紙、Web)
– 学習期間3ヶ月(5/8時点)
– Progate 1.5ヶ月
– PHP学習 0.5ヶ月
– LaravelでWebアプリ開発 1ヶ月
– 転職に向け学習中
– 実務未経験

# 3.共同開発の概要
概要
– 開発期間:2ヶ月(5/8〜7/7)
– 全体MTG 週1
– 講師主催の作業会 週1
– チームMTG 週1

– 構成メンバー
– 講師:現役プログラマー2名(レビュアー)
– 開発チーム:未経験3名 × 3チーム

# 4.成果物について
ネット大喜利サイト「[GiriGiri](htt

元記事を表示

allow_nil: trueとは

# はじめに
Ruby on Railsでは、データモデルのバリデーションを設定することが一般的です。その一部として、`allow_nil: true`というオプションが存在します。この記事では、`allow_nil: true`がどのように動作し、それがどのような状況で役立つのかを詳しく解説します。
### `allow_nil: true`の基本的な動作
`allow_nil: true`オプションは、指定した属性のバリデーションを行う際に使用されます。このオプションが設定されていると、属性の値がnilの場合にはバリデーションがスキップされます。つまり、その属性がnilでもバリデーションエラーにはならないのです。
### 例えば
Userモデルに`reset_password_token`属性属性が存在し、以下のようなバリデーションが設定されているとします。
“`ruby:user.rb
validates :reset_password_token, uniqueness: true, allow_nil: true
“`
いくつかのシナリオを見てみます。
①`reset_p

元記事を表示

【PHP】FPDFを使ってPDFを作成する

## はじめに

PDFファイルは、ビジネスの現場やウェブアプリケーションで頻繁に利用されています。一方で、その動的な生成は一筋縄ではいかない作業で、しっかりとしたライブラリが必要となります。そこで今回は、PHPでPDFを簡単に生成できるライブラリ、「FPDF」の使い方について解説します。

## FPDFとは?

FPDFは、無料で利用できるオープンソースのPHPライブラリで、動的にPDFを生成するための機能が豊富に備わっています。また、使いやすいAPIを提供しているため、PDF生成を必要とする多くのPHP開発者にとって有用なツールとなっています。

## FPDFのインストール

FPDFの公式サイト(http://www.fpdf.org/) からダウンロードできます。ダウンロード後、解凍して得られた `fpdf.php` をプロジェクトの適切なディレクトリに配置します。

## FPDFの基本的な使い方

以下に、基本的なPDFの作成手順を示します。

“`php
Add

元記事を表示

30歳未経験エンジニアおじさんの日記帳 7/25

### Laravelでデータベースのデータをいい感じに表示できてうれしい

![スクリーンショット 2023-07-25 20.58.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3357049/1d92ba26-0db3-7f9d-a755-31717ead3e38.png)

最近作っているサイト
名前とか取れました、嬉しい

### コードはこんな感じ
もでる
“`
protected $fillable = [
‘name’,
‘email’,
‘password’,
‘business_hours’,
‘phone_number’,
‘prefecture’,
‘url’,
];
“`

こんとろら
“`
public function index()
{
// ログインしているユーザーの情報を取得
$objec

元記事を表示

30歳未経験おじさんの日記帳 7/24

## Laravelなんとなくわかってきたぞ、、、!

本日もLaravel日和。
本日は、データベースからデータを取得してViewに表示することができたぞ。

Laravelの概要もなんとなくわかってきた。
MVCというのはなんとなく知っていたが、
今日は真理に一歩近づいたかもしれない。

### route
使うのはweb.phpとauth.php(laravel breeze)を使用する。
そのまんまルーティングの設定。
こいつへの記述を忘れてエラーになりまくった
今後は忘れない(忘れる)

### model
主にバックエンド操作を記述する
今回はデータベースへデータを入れたり取り出したり
更新したり、削除したり。
いわゆるCRUD操作をすルため

### view
ブラウザ上に表示される部分。
フロントエンドやね。
react触ってたからここはなんかイメージしやすい。
データベースからとってきたデータとかを自在に表示するのが私の夢。

### controller
こいつが曲者。
modelとviewの架け橋になるやつで、
model→controller→view
view

元記事を表示

OTHERカテゴリの最新記事