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

PHP関連のことを調べてみた2020年11月25日
目次

Ruby on railsとLalavelどっちが良い?

技術選定の仕方

・自分のやりたい事が実現しやすい
・情報量が多い

プログラミングはあくまでも手段でしかなく、プロダクトの価値を最大化させることこそが目的である。またプログラミング言語は、基礎文法は少し変わるぐらいで大した差はない。言語に縛られるよりも、自分が言語に合わせて勉強していくほうが、プロダクトの価値も開発効率も上がる。

Ruby on railsを選びました

①scaffoldが便利
MVCの作成はrouteの設定までいい感じに自動で生成してくれる。

②情報量が多い!
ruby自体が日本発の言語ということもあり、qiitaの記事の数をはじめ日本語の説明の記事がlalavelよりも多い。

③コミュニティー内に参考にできるソースコードがある
身近にコードについて質問でき参考にできるコードがあるのは、めっちゃ楽。

>Rails: ある程度の規模まではレールに乗ってサクサク作れるが、アプリケーションが成熟してきて「規約」にはないことをやりたくなってくると、途端に求められる技術力や難易度が跳ね上がる。
Laravel: アプリケーションの雛形

元記事を表示

【Laravel】url生成(idなど使用)したページで、現在のページをリロードする方法

はじめに

フォロー・フォロー解除の機能を実装するときにはまった。
フォローボタンクリック → 同ページをそのままリロード
という動きを実現させたい。
方法が思いつかなくて手間取ったので記事にします。

通常のリロード方法

通常のページであればそのままurlを指定してリロードすればOK。

“`
return redirect(‘/home’);
“`
ただし、今回リロードしたかったページが以下のようにidを使用したurlだったため、
urlに何をいればば良いかわからなくて困った。
`/users/[id]`

解決方法

以下のようにurl([url])を使用して変数を入れることで解決した
(そんなに難しいことでもなかった。。)

“`
return redirect(url(‘/users’,$request->follow_id));
“`

まとめ

ページを普通にリロードする関数などあると思っていたが、どうやらないっぽい。
なんだか同じurlを打ち込んでリダイレクト、というのは力技感があっ

元記事を表示

簡単! MAMPでgensim、word2vecを使う。

**注意! python、mamp、gensimがインストールされた環境の方にむけたものです。できてない方はインストールしてください。**
**あと、word2vecの学習ではなく、似ている言葉探すだけです。**

まず、phpからpythonに接続します。

phpにこれを入れてください〜!
execというコードは、phpからコマンドラインにアクセスできます。(macのターミナルと同じやつ。)

“`php


“`

これを使って、word2vecが書かれたpythonを実行します。
例えば…、test.pyのようなpythonファイルをphpから実行できます。

“`php


“`

次にword2vecで似ている言葉を探すためにデータを持ってきます。
zipダウンロードしましょう。
http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/
これを後で使います。

次にpython側ですが、新しいpython

元記事を表示

GitHub Actionsにphp-security-auditを組み込んで、プルリク時にレビューコメントとして出力してみた

こんにちは!

GitHubのプルリク時に該当のphpコードに含まれる脆弱性を検知し、コメントとして出力してほしいという要望がありました。

なので、GitHub Actionsにphpcs-security-auditとreviewdogを組み込むことにしました。

phpcs-security-auditを導入している事例や導入方法が日本語のドキュメントで少なかったので、もし、導入してみたい方とかは参考にしてみてください。

#phpcs-security-auditとは?

↓公式ドキュメントになります。
https://github.com/FloeDesignTechnologies/phpcs-security-audit
>phpcs-security-audit is a set of PHP_CodeSniffer rules that finds vulnerabilities and weaknesses related to security in PHP code.

phpのコードに含まれている脆弱性を発見するためのphpcsのルールになります。

#前提条

元記事を表示

【PHP】XSS攻撃への対策

投稿フォームを作成している際、特に対策をしていない場合XSS攻撃を受けてしまう事を学んだ。

PHPではXSS攻撃の対策としてhtmlspecialchars関数が有効であるのでこの関数を使用してフォームを作成。

この関数を使用することによってフォームに入力された物がただの文字列として認識され、javascripなどを記入されても反応しない様になります。

“`PHP

投稿フォーム






“`

htmlspecialcharsは名前が長いので関数に入れてしまう事

元記事を表示

【PHP】九九表

九九表を作成する問題を説いた際、短時間で綺麗にコードを書く事ができなかったので備忘録として完成させたコードを載せます。

“`PHP

“`

このコードによって表示される結果は下記。

“`
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35

元記事を表示

laravelでsitemap.xmlからHTTPテストを作る

## 経緯

「とりあえずHTTPテストやりたいけど、構造はよく変わるしテストの維持がとても大変」
「関係ないけどsitemap.xmlの更新も面倒だなぁ」
「そうだ!sitemap.xmlからテストを作れば1度の修正で済むぞ!」

## 環境
laravel 6.19
PHPUnit 8.2.5

## 備考

前提として、テストを行うルート(sitemap.xmlに載せているルート)にnameが設定されている必要があります。

このテストは「sitemap.xml(このサイトに存在すると世界に示しているページ)にアクセス可能か」ということだけを検証するものです。
テストの管理が難しい環境で、最低限のHTTPテストとしてとりあえず入れてみるのには良いのでは無いかと思います。

## 出来たもの

“`php:sitemap/index.blade.php

‘ . “\n”; ?>
【Laravel】中間テーブルに値を追加・更新する方法

#実現したいこと#
中間テーブルに値を追加・更新する。

タグ機能を作る際に、プロジェクトテーブルとタグーテーブル紐付ける際に
中間テーブルを作り、値を追加・更新することができたので、紹介します。

##テーブル設計##

####タグテーブル

|id | name |
|—|—|
|1 |Javascript |
|2 |PHP |

####プロジェクトテーブル

|id |title |
|—|—|
|1 |フロントエンドを学習しよう |
|2 |バックエンドを学習しよう |

####中間テーブル(プロジェクトタグテーブル)

|id |tag_id|project_id|
|— |— |— |
|1 |1 |1 |
|2 |1 |2 |
|3 |2 |2 |

中間テーブルはこのように、テーブ同士が多対多の関係の時に必要になります。

##中間テーブルに値を追加する方法

###中間テーブルに値を入れるためのステップ

元記事を表示

Laravel学習 Viewとテンプレートについて

#はじめに
laravel学習をしていて下記について学んだことをまとめてみました。

####①Viewについて
####②テンプレートとは
####③クエリー文字列
####④Bladeについて
####⑤ヘルパ関数とは
####⑥ディレクティブ
####⑦コンポーネント

##①Viewとは
・画面表示を担当。画面表示させる部分をわかりやすい形で作れるようになっている。
・HTMLを使ってそのまま表示内容を記述できる仕組み

##②テンプレートとは

・Laravelの中でもViewを担当する重要な”部品”のこと
・画面表示のベースとなるもの。
・テンプレートを読み込む→変数など必要な情報を当てはめて実際の表示を生成する(レンダリング)
・レンダリングはテンプレートエンジンによって行われる
・テンプレートエンジンとはデータとテンプレートを合体させ、文字列を作る仕組みのこと
・テンプレートエンジンBladeと呼ばれるLravel既存のテンプレート使うか、自分で作成するかで使用する

▼値をテンプレートに返す
・コントローラ側から、テンプレート側へ必要な変数などの値を受け渡す。

元記事を表示

mysqldumpで空ファイルしかできないと思ったら

#mysqldumpで空ファイルしかできないと思ったら

##背景
MySQLでdumpファイルを作りたく“`mysqldump -uroot -p データベース名 > ファイル名.sql“`のコマンドを打っているのにできるのは中身が空のファイル。
今までできていたのに何故???

##原因
単純なコマンドミスだった。
dumpファイル(空だが)自体は作成できていたため、指摘してもらうまでコマンドミスをしていることに全く気付かなった。

###mysql -uroot -p データベース名 > ファイル名.sqlでdumpの空ファイルはできる

* 間違い
“`mysql -uroot -p データベース名 > ファイル名.sql“`

* 正解
“`mysqldump -uroot -p データベース名 > ファイル名.sql“`

**mysqldump**と入力するべきところを**mysql**と入力していた。

思い込むとなかなか気付けないこのミス。
空ファイルしかできなくて困ったときには一度コマンドを見直してみてください。

元記事を表示

プログラマ脳を鍛える数学パズル Q.02「数列の四則演算」

基礎アルゴリズム力upのためPHPで解いてみた。
下記の考えのもと組んだ。

+ 1.for文で1000~9999を回す。
+ 2.正規表現指定(0を全て除外)
+ 3.数字を各位(千、百、十、一)に分け、それぞれの間に四則演算を入れたfor文。
+ 4.文字列式を作成。
+ 5.結合文字列をevalで計算
+6.対象数字と反転した結合結果の数字が一致するなら出力

“`

元記事を表示

お問い合わせフォーム、jsでバリデーション

“`javascript:contact.js
window.addEventListener(‘DOMContentLoaded’, () => {
// 「送信」ボタンの要素を取得
const submit = document.querySelector(‘#contact-submit’);

// エラーメッセージと赤枠の削除
function reset(input_infomation, error_message){
const input_info = document.querySelector(input_infomation);
const err_message = document.querySelector(error_message);
err_message.textContent =”;
input_info.classList.remove(‘input-invalid’);
};

// 「お名前」入力欄の空欄チェック関数

元記事を表示

大手日系メーカーからITベンチャーに転職して思うこと

#大手日系メーカーからITベンチャーへ
何を思ったかITベンチャーへ転職をして半年が経ちました。(やっていたことはPHP, HTML, JavaScriptなど)
なんとなく半年経って思うことをまとめておこうと思います。

#転職して思うこと
20代の若いうちは貴重な時間なので、もしやりたいことがあるのであれば転職は早いうちにしたほうがいいと思った。
(年次が上がれば上がるほど転職を決断するのは難しかっただろう…)

大手勤務時代は、やりたくないことをしてただただ時間が過ぎていく感じがした。
(まぁ、かと言ってベンチャーがそうじゃないとは言い切れないところがあるが、
大手特有の若手に対して理不尽な感じとか何事にも納得できない感じとかは今はしない)

あと、周りのほとんどの人が仕事に対して情熱がなかった。
なんとかやり過ごそうとする人が多く、きつかった。
何のために仕事をして、何がしたいのか分からなかった。
向上心のある人と働きたいと思った。

<環境について>
大手勤務時代は人が多くて人付き合いに疲れて、仕事に集中できなかった。
ベンチャーは人数が少なくていい。
無駄に気

元記事を表示

Illuminate\Database\QueryException : could not find driver (SQL: PRAGMA foreign_keys = ON;)の解決方法

##結論 SQLiteの接続用ドライバーをインストール
まずPHPのバージョン確認

“`Ruby:
$ php -v
PHP 7.4.12 (cli) (built: Oct 31 2020 17:04:25) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.12, Copyright (c), by Zend Technologies
“`
PHPのバージョンに合わせてインストール

“`Ruby:
$ sudo apt-get install php7.4-sqlite3
“`

##無事に “php artisan migrate” できました

“`Ruby:
$ php artisan migrate
Migration table created successfully.
“`

元記事を表示

Laravel 環境構築 (Ubuntu 18.04 LTS )

##1. PHP7.4のインストール
###下準備
“`ruby:
$ sudo apt-get update
$ sudo apt -y install software-properties-common
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
“`
これでPHP 7.4 をインストール可能なリポジトリを apt で使えるようになった。
###インストール
“`ruby:
$ sudo apt install php7.4 php7.4-mbstring php7.4-dom
“`
他に必要なものも一緒にインストールしておく。

###インストールできたか確認

“`ruby:
$ php -v
PHP 7.4.12 (cli) (built: Oct 31 2020 17:04:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zen

元記事を表示

Laravelのバージョンを指定する方法

##結論 composerコマンドで指定する
“`ruby:ターミナル
$ composer create-project –prefer-dist laravel/laravel=”6.*” sample_app
“`
これでLaravel6系統がインストールされる。
##バージョン確認
“`ruby:ターミナル
$ php artisan -V
Laravel Framework 6.20.4
“`

元記事を表示

PHP、Laravel 学習 コントローラーの説明①

#コントローラーの説明
まずはこの画像をみてください
![MVCmodel-1024×492.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651096/443e4044-32fe-93d2-dc90-08e866e6b751.jpeg)
ルーティングの先にあるコントローラーを説明していきます。

コントローラーはユーザーから送られてきた指令に対して**どのようにアクションするか**を決める場所です。
要するに**総合窓口**ですね。。。市役所とか電話すると「そのご相談しでしたら○○課ですね〜」って案内する人いるじゃないですか?それがコントローラーです。
ルーティングから直接ビューを見せることはたまにありますが、基本的にコントローラーを介して見せる場合が多いです
(モデルはルーティングから直接見せることはほぼない)

#コントローラーの記法、RestFulコントローラー(リソースコントローラー)について
基本的な記法を以下に書いておきます

//HomeController
public

元記事を表示

Laravelのユーザー登録を入力・確認・完了の3画面に分けた際のメモ

ユーザー登録画面を入力・確認・完了の3画面に分割する要件があり、Laravelで実装した際のメモになります。(あまりLaravelに慣れていないため、あまり綺麗なコードではないかもしれませんが、ご了承いただければと思います。)

ユーザー登録のルーティングは以下のようにしてみました。

“`php:routes/web.php
Route::get(‘register’, ‘Auth\RegisterController@showRegistrationForm’)->name(‘user.resister_show’);
Route::post(‘register’, ‘Auth\RegisterController@post’)->name(‘user.resister_post’);
Route::get(‘register/confirm’, ‘Auth\RegisterController@confirm’)->name(‘user.register_confirm’);
Route::post(‘register/confirm’, ‘Auth\RegisterContr

元記事を表示

formを使ってGET送信なんてもうしない!

まずはGETとPOSTの違いについて自己流で簡単に笑
・GET idやkeyを送りたい 直接URLアクセスが可能
・POST 大事なデータ(パスワードなど)をデータベースに格納したい時

例えるなら厳しい母親がPOSTとすると、GETは優しいおばあちゃんみたいな(全然ズレてたらごめんなさい笑)

と、まぁ冗談はこれくらいにして
本題はどうやってform使わずに簡単にget送信するかって話。

まずはこれが普通のget送信

“` ruby:send.php

~


~

“`

仮にformに入れた値を 1 だとすると

“` ruby:receive.php

元記事を表示

PHPで標準入力の値を取得するときの注意

# はじめに
fgets(STDIN)で標準入力の値を取得すると改行されることを知らなくてハマったときのこと

# こうなってしまう
“`
入力
Hello
“`
“`PHP
$input = fgets(STDIN);
$length = strlen($input);
echo $input . ‘ is ‘ . $length . ‘ letters.’;
“`
“`
出力
Hello
is 6 letters.
“`

# 対策
そのままだと改行されてしまうし文字数も合わないので改行コードを消す、というかクォーテーションで囲んで空白(スペースではない)に置換する

“`php
$input = fgets(STDIN);
$input = str_replace(PHP_EOL, ”, $input);
echo $input . ‘ is ‘ . $length . ‘ letters.’;
“`
“`
出力
Hello is 5 letters.
“`

元記事を表示

OTHERカテゴリの最新記事