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

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

PHP(スーパーグローバル変数、セッション)

##書いてあること
– PHP(スーパーグローバル変数、セッション)
– 忘れたとき用の自分メモ

##関連Web

###公式サイト
http://php.net/

###仕様確認
http://php.net/manual/ja/index.php

##PHPで利用可能なスーパーグローバル変数

|変数名|内容|
|:—|:—|
|$\_POST|POST形式のHTMLフォームから渡された情報|
|$\_GET|クエリ情報(~?キー名=値)経由で渡された情報|
|$\_FILES|アップロードされたファイルに関する情報|
|$\_SERVER|リクエストヘッダ、またはサーバ固有の変数情報|
|$\_ENV|サーバ側で定義された環境変数|
|$\_COOKIE|クッキー経由で渡された情報|
|$\_SESSION|セッション経由で渡された情報|
|$\_REQUEST|\$\_GET、\$\_POST、\$\_COOKIEの値をまとめて管理|

##セッションの利用

“`php

元記事を表示

PHP(オブジェクト指向)

##書いてあること
– PHP(オブジェクト指向)
– 忘れたとき用の自分メモ

##関連Web

###公式サイト
http://php.net/

###仕様確認
http://php.net/manual/ja/index.php

##クラス

###クラスの定義

“`php

元記事を表示

PHP(組み込み関数)

##書いてあること
– PHP(組み込み関数)
– 忘れたとき用の自分メモ

##関連Web

###公式サイト
http://php.net/

###仕様確認
http://php.net/manual/ja/index.php

##文字列関数

|関数|概要|
|:—|:—|
|mb_internal_encoding|内部文字コードを指定する|
|mb_strlen|文字列の長さを取得する|
|strtolower|指定文字列を全て小文字にする|
|strtoupper|指定文字列を全て大文字にする|
|lcfirst|指定文字列の先頭のみ小文字にする|
|ucfirst|指定文字列の先頭のみ大文字にする|
|ucworlds|単語の区切りを全て大文字にする|
|mb_substr|部分文字列を取得する|
|str_replace|部分文字列を置換する|
|explode|文字列を特定の区切り文字で分割する|
|mb_strpos|特定の文字位置を検索する。最初に見つかった位置を返す|
|mb_strrpos|特定の文字位置を検索する。最後に見つかった位置を返す|
|

元記事を表示

PHP(標準クラスライブラリ)

##書いてあること
– PHP(標準クラスライブラリ)
– 忘れたとき用の自分メモ

##関連Web

###公式サイト
http://php.net/

###仕様確認
http://php.net/manual/ja/index.php

##標準クラスライブラリの操作

“`php
メソッド名(引数, …);
オブジェクト変数->プロパティ名 = 値;

//静的メソッド、静的プロパティの利用
$変数名(戻り値) = クラス名::メソッド名(引数, …);
クラス名::プロパティ名 = 値;

//静的メソッド、静的プロパティを変数で利用
$クラス変数 = ‘クラス名’;
$変数名(戻り値) = $クラス変数::メソッド名(引数, …);
$クラス変数::プロパティ名 = 値;
“`

##DateTimeクラス

“`php

元記事を表示

PHP(ユーザー定義関数)

##書いてあること
– PHP(ユーザー定義関数)
– 忘れたとき用の自分メモ

##関連Web

###公式サイト
http://php.net/

###仕様確認
http://php.net/manual/ja/index.php

##ユーザー定義関数

###宣言

“`php

元記事を表示

PHP(基本、変数、配列、演算子、制御構文)

##書いてあること
– PHP(基本、変数、配列、演算子、制御構文)
– 忘れたとき用の自分メモ

##関連Web

###公式サイト
http://php.net/

###仕様確認
http://php.net/manual/ja/index.php

##PHPタグ(PHPの記載方法)

・HTML埋め込み

“`php

“`

※PHP処理で該当ファイルのコーディングが終わる場合、終了タグは不要。

“`php

元記事を表示

PHPでC#アプリケーションとデータをやり取りするためのAPIを作ってみる

#はじめに
当記事では、C#アプリケーションとデータをやり取りするAPIを作成して実際に動かしてみます。
C#アプリケーションから、ライブラリを使用して直接データベースに接続することも可能ですが、
C#等の高級言語は「リバースエンジニアリングしやすい」といった特徴や、そもそも外部からの接続を許してしまうデータベースはセキュアではないので、基本的にはAPIを通す必要があります。

#環境
Visual Studio 2019 Professional
Windows 10 1903
**.NET Framework**: 4.7.2
**XAMPP**: 7.3.7
**PHP**: 7.3.7
**Apache**: 2.4.39
**MariaDB**: 10.3.16

#データベース
テーブルを新規作成します。
今回は例として以下の構造で作成しました。
![23358688b8684b29fe96195c69bfedf5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535270/7affa108

元記事を表示

WSLのUbuntu環境でPC内音楽データをWeb操作する(おまけでyoutube音楽とGooglehomeで伝言)

#はじめに
●PC内音楽データをWEBで操作し、PCスピーカで再生できるようにする。
(Googlehomeで声で操作するのWeb操作版です。声でキーワードがうまく入力できない場合に使用してます)
【操作例】WEBから「竹内まりや」と入力する
![コメント 2019-11-27 230824.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222582/f9e43aa4-82c0-22d0-eb1f-747e099fa1af.png)
●おまけ
youtube音楽:下記の記事と同じです。
 WSLのUbuntu環境でyoutube音楽をWeb操作する(おまけでradikoとサイマルラジオ)
伝言:Googlehomeで伝言を再生します。google-home-notifierを使用。

#環境
●Windows10 HOMEのPCにWSLのubuntuをインストールする。
●ubuntuでapache2,npm,node.js,youtube-dl,mplayerをインストールする
●WSLのubuntu

元記事を表示

【WordPress】カスタム投稿タイプの追加方法

# 1.functions.phpに処理を追加

以下の処理を**functions.php**に追加する。この時、投稿タイプの定義も同時に行う
(以下の例は投稿タイプを**news**としています)

“`functions.php
add_action( ‘init’, ‘create_post_type’ );
function create_post_type() {
register_post_type( ‘news’, [ // 投稿タイプ名の定義
‘labels’ => [
‘name’ => ‘ニュース’, // 管理画面上で表示する投稿タイプ名
‘singular_name’ => ‘news’, // カスタム投稿の識別名
],
‘public’ => true, // 投稿タイプをpublicにするか
‘has_archive’ => false, // アーカイブ機能ON/OFF
‘menu_position’ => 5, // 管理画面上での配置場所
‘sh

元記事を表示

WordPressを利用したハンズオン形式のAWS学習書籍 HTTP 500エラーでWelcomeページが見られない

#結論:PHPのバージョンアップが必要だった
以下、全てWebサーバーとして利用する想定のAWS EC2内でのコマンド。
書籍内の手順通りにPHPのインストールをした場合はまず既存PHP及びモジュール削除。

“`
#利用中のモジュールを確認
$ yum list installed | grep php
php.x86_64 5.4.16-45.el7 @base
php-cli.x86_64 5.4.16-45.el7 @base
php-common.x86_64 5.4.16-45.el7 @base

#消去
$ sudo yum erase -y php-common php-cli php

#upgrade
$ sudo yum upgrade
“`
##Remi’s RPM repository追加して、PHP71

元記事を表示

Moodle 3.7 マニュアル – Red Hat Enterprise Linux へのインストール

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

# Red Hat Enterprise Linux へのインストール

Note: This document is about installing Moodle 3.7 in an RedHat Enterprise Linux (RHEL) 8

Contents

[1 サーバのインストール](#1-サーバのインストール)
[2 ネットワークインターフェース](#2-ネットワークインターフェース)
[3 ホスト名とドメイン名を設定する](#3-ホスト名とドメイン名を設定する)
[4 システムの登録](#4-システムの登録)
[5 SELinux](#5-selinux)
[6 ファイアウォール](#6-ファイアウォール)
[7 MariaDB / MySQL](#7-mariadb–mysql)
[8 Moodle のセットアップ](8-moodle-のセットアップ)
[8.1 ダウンロード](#81-ダウンロード)
[8.2 解凍しファイル権限そ

元記事を表示

「3分で理解するWEBプログラミングセキュリティ 01」 SQLインジェクションとは?

# 3分で理解するWEBプログラミングセキュリティ 01
**3分で理解するWEBプログラミングセキュリティ**
↓↓記事が出来次第Link貼って行きます↓↓
**No.01 SQLインジェクションとは?**
**No.02 クロスサイトスクリプティングとは?**
**No.03 クロスサイトリクエストフォージェリとは?**
**No.04 ディレクトリトラバーサルとは?**

#はじめに
プロかそうでないかの差とも言うべきでしょうか、未経験者と実務経験者の最大の差はセキュリテイに関しての意識だと思っております。
システムを作ることも大事ですが、守ることの方が大事です。
未経験者のポートフォリオにも最低限組み込んでおきたいセキュリティを簡単に紹介していきます。

1.SQLインジェクションとは?
・概要
・具体例
2.SQLインジェクション対策(PHPでの実装例)
・文字エンコーディングを指定する
・プレースホルダで実装する

##1.SQLインジェクションとは?
**概要**
 一般的に、入力フォームで入力した内容をSQL文に埋め込んで命令文を作成し、DB操作を行いま

元記事を表示

Laravel 5.8でオリジナルのイベントを定義してみた話

# はじめに

`こちらの記事は、社内knowledgeからの移行記事になります。`

Laravelで自作イベントを定義するまでの一連の流れ。

【参考にした公式】

– [公式(英語)](https://laravel.com/docs/5.8/events)

– [ReaDouble](https://readouble.com/laravel/5.8/ja/events.html)

【参考記事】
– [Laravel5.7でEventを利用してみる – qiita](https://qiita.com/zaburo/items/3a712bae293f3f222f17)

【ソース】
– [GitHub](https://github.com/suupoo/illuminate-laravel-study/commit/6ba7e6f0b9f9a1a763d19099787924237007159c)

# 環境

– Laravel 5.8.23

# 本編

### 1.イベントとリスナをサービスプロバイダに定義

“`php:application/app/P

元記事を表示

Laravel5.8でSlackに通知(Notifications)を送ってみた話

# はじめに

`こちらの記事は、社内knowledgeからの移行記事になります。`

初めての技術投稿で探り探りな面があります。

Laravelに搭載されている通知(Notifications)機能を使って、
ログインしたときにSlackに通知を送る機能を作成してみました。

不正ログイン通知や購入処理完了時のメッセージ送信などに使えそうですね。

**[今回のコード](https://github.com/suupoo/illuminate-laravel-study/commit/9705652a2c7958321b5b62fcf5b88a19b43af366)**

【参考にした公式】
– [公式(英語)](https://laravel.com/docs/5.8/notifications)
– [ReaDouble](https://readouble.com/laravel/5.8/ja/notifications.html)

なお、ログインイベントのリスナー設定は省略します。
[GitHub](https://github.com/suupoo/illuminate

元記事を表示

[php] switchで比較演算を使うときの注意

これに似たコードをレビューしていて

“`php

$age = 10;

switch ($age) {

//年齢が20歳以上、50歳以下
case $age > 20 && $age < 49: echo '21~49歳です。'; break; //年齢が50歳以上 case $age > 50:
echo ’50歳以上です。’;
break;

default:
echo “該当しません。”;
break;
}
“`

### 出力: 該当しません。

で、気になったので、

“`php

$age = 0;

switch ($age) {

//年齢が20歳以上、50歳以下
case $age > 20 && $age < 49: echo '21~49歳です。'; break; //年齢が50歳以上 case $age > 50:
echo ’50歳以上です。’;
break;

default:
echo “該当しませ

元記事を表示

【Laravel】Carbonで今が上期下期を判断する

Laravelを用いてますが、`Carbon`は`composer`から入れれるので同じです。

上期は基本的に4月から9月末、下期は10月から3月末のようなので、そのように定義します。

今回は`web.php`にコールバックに書いていきます

“`php:web.php

Route::get(‘/’,function(){
$start = today()->month(4)->firstOfMonth();
$end = today()->month(9)->endOfMonth();
});

“`
上期の開始と終了を定義しました。
`today()`はLaravelに用意されているヘルパです。
`new Carbon(‘today’)`と同等になります。

“`php:web.php

Route::get(‘/’,function(){
$start = today()->month(4)->firstOfMonth();
$end = today()->month(9)->endOfMonth();
echo today()

元記事を表示

if文の正しい理解

#if文の正しい理解
## 対象者
これからプログラミングを勉強する人

##if文とは

“`
if(式){

}
“`

式が TRUE と評価された場合、 PHP は文を実行します。FALSE と評価された場合は、これを無視します。どのような値が FALSE と評価される

以上の事がif文である。
TRUEの場合とは以下の場合。

“`
if(true){

}
“`

ここで問いです。
問1.以下の場合はTrueですか?falseですか?

“`
if(1){
}

“`
迷う必要はないですね笑笑
答えはTrueです。
1はTrue、0はfalseとなります。

以上です。

元記事を表示

【Laravel】データベースを作成しよう

こんにちは!
今回はデータベースにデータを保存できるようにすることを最終地点として説明します
大まかな流れは以下の通りです
1. 環境変数を設定する
2. データベースを作成する
3. データベースに接続する
4. データベースにデータを保存する

では、始めます!!

#環境変数の編集
環境変数を編集していきます
環境変数は使用するOS上でのルールを決めている変数というイメージです。
ここで編集するファイルは二つです

##.envファイルの編集
.envファイルを編集します
下記のように編集していきましょう
データベースの名前はご自身のアプリケーション名に対応させてください
`DB_USERNAME`は`root`、`DB_PASSWORD`は`secret`で設定しましょう

“`:.env(一部) 編集前
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

“`

“`:.env(一部) 編集後
DB_DATABASE=laravel-project
DB_USERNAME=root
DB_PASSWORD=secret

元記事を表示

[PHP] 親の親のコンストラクタを呼び出す方法

PHPのコンストラクタ、“`__construct()“`。親クラスのコンストラクタを呼び出すときは“`parent::__construct()“`で呼び出せます。では、親の親というか、祖父母というか、2等身以上離れたクラスのコンストラクタを呼び出すにはどうするのでしょう?親クラスのコンストラクタを実行せず、2等身先のコンストラクタを呼び出したい場合です。

# 対象のクラス名::__construct()

↑のとおりです。感覚的にstaticな呼び出しと同じ書き方なので、プロパティの設定が意図通り動作するのか不安になりますが、大丈夫なようです。

確認したバージョンは7.1.5とか7.3系。5.6系でもいけそう…?

コード例はこちら。“`C1 -> C21 -> C321“`という流れで継承しています。

“`PHP

元記事を表示

Re: 10秒で衝突するUUIDの作り方

元ネタは下記リンクを参照。
「UUID生成はライブラリを使え 自分で書くな」との結論は全く同意。

10秒で衝突するUUIDの作り方 – Speaker Deck

# セキュアコーディング

 元ネタ前半の実装のように、アプリケーション開発者が乱数シードを指定して乱数を生成するような実装だと、第三者がシードの値を推測して「次に生成されるUUIDを予測する」ことができるかもしれない。(下記リンクはJavaにおける類例の解説である。)

MSC02-J. 高品質の乱数を生成する
https://www.jpcert.or.jp/java-rules/msc02-j.html

また、生成される可能性のあるUUIDの種類が少ない場合、第三者が総当たりで「どれでもいいので既存のUUIDのどれかに衝突させる」ことができるかもしれない。

 例えばセッションIDを第三者が上述のような方法で推測または意図的に衝突させると、セッションハイ

元記事を表示

OTHERカテゴリの最新記事