いろいろPHP~備忘録~

WEBエンジニアによる記録

勉強になったことを記録

Ajaxのクロスドメイン対策

Ajax通信する際、自分のへアクセスすることが多いと思います。
しかし、ブラウザに実装されているクロスドメイン制約により、Webページを生成したドメイン以外でHTTPリクエストはできません。
クロスドメイン制約とは、ブラウザの機能で、閲覧しているページのドメイン以外のドメインからはAjax通信をさせないという機能です。
今回、JQueryPHPで閲覧しているページのドメイン以外でもHTTPリクエストができる方法をまとめます。

JQueryプラグインを利用

JQueryプラグインを利用すれば簡単に実装ができるので、
以下からjquery.xdomainajax.jsをダウンロードします。
jquery.fn/cross-domain-ajax at master · padolsey-archive/jquery.fn · GitHub

ダウンロードが完了したらjquery.xdomainajax.jsをインクルードできたらjs側の実装は完了です。

Access-Control-Allow-Originを設定

次はPHP側の実装をします。
PHP側で以下のコードを追加することで、別ドメインからのアクセスを許可します。

header('Access-Control-Allow-Origin: *');

特定のドメインのみのアクセスを許可したい場合は以下のようにします。
※変数の設定も可能

header('Access-Control-Allow-Origin: http://sample1.jp http://sample2.jp');


以上で、閲覧しているページのドメイン以外のドメインからAjax通信が可能になります。

補足

Ajaxリクエストを送信するオプションの設定によってはブラウザの制約によりpreflightリクエスを行います。
preflightリクエストがうまくいかない場合はHTTPリクエストができなかったです。

参考サイト
dev.classmethod.jp
goma.pw

Basic認証(htaccess)のAuthNameの統一

複数ディレクトリ配下にBasic認証(htaccess)を設定します。
その時に、認証確認を1回だけにするように設定します。

htaccessのAuthNameを統一にする
 AuthUserFile /home/username/.htpasswd
 AuthGroupFile /dev/null
 AuthName "idとpassを入力してください。" ← ここが大事
 AuthType Basic
 require valid-user

上記のAuthNameが異なっていると、異なった認証領域として認識されてしまいます。

aディレクトリ配下のhtaccess内のAuthNameは「idとpassを入力してください。」で、
bディレクトリ配下のhtaccess内のAuthNameは「IDとPASSWORDをいれて」に設定すると
aとb両方とも認証をする必要があります。

認証確認を1回だけにしたい場合は、AuthNameを統一にする必要があります。

下記サイト参考
BASIC認証(.htaccess)のAuthName: 庭にハグ

以上

Composerをインストール/利用

概要

vagrant+centosにComposerをインストールしてから、利用する方法を説明します。

インストール

・Composerをインストール

 curl -sS https://getcomposer.org/installer | php

・Composerをグローバルに移行

 sudo mv composer.phar /usr/local/bin/composer

※composer.pharをcomposerに名前を変更

利用

バリデーションのライブラリをComposerでインストールします。

・composer.jsonを作成

 sudo vi composer.json

・composer.jsonに下記の内容を記載

{
    "require": {
        "vlucas/valitron": "dev-master"
    }
}

・composerでインストール

 composer install

以上でライブラリのインストールが完了です。


 

MySQL ~キーワード検索~

概要

キーワードをもとに検索を行う方法で、
LIKE演算子とCONCAT関数を使用して、キーワード検索をします。

 SELECT * FROM user WHERE concat(column1, column2, column3) LIKE '%キーワード%'

上記の書き方で、複数のカラムに対してキーワード検索(あいまい検索)ができます。


CONCATでの文字列連結時にひとつでもNULLな項目があると「NULL」扱いになり、
期待通りの結果が返ってきない場合があります。
その時は、ISNULL句を使用して、NULLを別のものに置き換える必要があります。

下記サイト参考
qiita.com

 

php7をcentos6系にインストールしてPDOを使用する

php7をcentos6系にインストールして、PDOを使用するためには、
次のコマンドを入力して、パッケージをインストールする。

// yum install --enablerepo=remi-php70 パッケージ名

yum install --enablerepo=remi,remi-php70 php-mysqlnd

パッケージをインストールした後は、php.iniの設定を行う。

// php.iniファイルを編集
cd vi /etc/php.ini

// 以下を最終行に追記
extension=pdo.so
extension=php_pdo.dll
extension=pdo_mysql.so

// Apacheの再起動
sudo service httpd restart

以上でPDOが使用可能になる。