Smarty:Smartyでエスケープをしない方法(smarty:nodefaults)

Smartyでデータを出力する際に自動でエスケープ処理をするように設定していることが多いと思います。
しかし、変数によってはエスケープしないで出力したい場合があります。

テンプレート内の変数に「smarty:nodefaults」を指定すればエスケープ処理されずに出力することが可能です。

※Smartyのバージョンによっては記述が違う場合があるそうなので注意が必要です。

下記にSmartyテンプレート変数エスケープしないで出力する方法をメモします。


エスケープ処理をしない方法

Smartyクラスで全ての変数にエスケープ処理を指定している場合です。
配列で設定すれば、複数の修正子を設定することができます。

$smarty->default_modifiers = array('escape:"html"');

変数に対して「smarty:nodefaults」を指定します。

{$test|smarty:nodefaults}

上記のように指定すれば、エスケープ処理されずに出力することができます。


default_modifiers

テンプレート内で使用する全ての変数に適用する修飾子を指定します。
指定したものはデフォルトで適用されるようになります。

$smarty->default_modifiers = array('', '');

個別にエスケープ処理を指定する場合

{$test|escape:"html"}

個別にエスケープ処理をかける場合はエスケープ漏れがあるかもしれないので、
規定でエスケープ処理をかけるように設定した方がいいと思います。

.htaccess:Basic認証の記述方法と説明

Basic認証について、色々調べたので記述方法簡単な説明をメモします。

すぐ忘れてしまうので。

Basic認証を作成するツールは色々あります。
私は下記のサイトを使用して「.htaccess」と「.htpasswd」を作成することが多いです。
こちらを使えば簡単にパスワードを作成することができます。

http://www.htaccesseditor.com/#a_basic

下記にBasic認証書き方設定内容の説明を記述します。


Basic認証を設定する時の.htaccessの書き方

※例です。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow

Basic認証 設定内容の説明

Files

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>

「.htaccess」と「.htpasswd」を見せないようにする為の指定です。
記述しなくてもいいのですが、パスワードファイルをドキュメントルート以下に置く場合は参照されないように記述した方がいいと思います。

AuthUserFile

AuthUserFile /home/hoge/html/.htpasswd

.htpasswd(パスワードファイル)までのパスを指定します。
パスはサーバのフルパスを記述します。

AuthGroupFile

AuthGroupFile /dev/null

グループファイルを指定する時に使用します。
グループを使用しない場合は「/dev/null」を記述します。

AuthName

AuthName "Please enter your ID and password"

認証時のダイアログボックスに表示する文字列を記述します。

AuthType

AuthType Basic

認証の方法です。
Basic認証の場合は「Basic」を記述します。

require

require valid-user

認証するユーザを指定します。
全てのユーザにアクセスを許可する場合は、「valid-user」を記述します。


.htaccess:Basic認証を特定のファイルに設定

Basic認証を使用してアクセス制限をかける時に特定のファイルのみにアクセス制限を設定したい場合があります。

ディレクトリごとBasic認証をかける場合は「.htaccess」をアクセス制限をかけるディレクトリに設置すればいいのですが、
ディレクトリ内の全てのファイルが対象となってしまいます。

ディレクトリ内一部のファイルのみにアクセス制限を設定したい場合は、下記のように記述します。


Basic認証を特定のファイルのみに設定

※下記「test.php」ファイルにBasic認証を設定する場合

ディレクトリ内のファイル一覧

.htaccess
.htpasswd
index.php
hoge.php
test.php

.htaccess

「Files」で「test.php」を指定すれば、「test.php」にBasic認証かけることができます。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
order deny,allow
<Files test.php>
require valid-user
</Files>

複数ファイルを指定したい場合は下記のように記述します。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
order deny,allow
<Files ~ (hoge.php|test.php)>
require valid-user
</Files>

「*」を使用してワイルドカードで指定することも可能です。


一部のファイルだけアクセス認証(Basic認証)をかけたい場合に良いと思います。

.htaccess:Basic認証で複数アカウントを登録

WEBサイトを制作していると公開前の場合など、アクセス制限をかけることが多いと思います。
また、特定の人にのみ参照可能にするページを作成する場合があります。

Basic認証ベーシック認証)をかければ簡単に認証機能を付けることが可能です。

Basic認証は複数アカウントを設定することができ、アカウントごとにIDとパスワードを設定することができます。
下記にBasic認証複数アカウント登録する方法をメモします。


Basic認証で複数アカウントを登録

「.htaccess」にBasic認証を設定します。
※「AuthUserFile」に「.htpasswd」までのパスを記述します。

.htaccess

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user 
order deny,allow

複数アカウント登録する場合はアカウントごとに改行して記述します。

.htpasswd

test:Qc1I4UTNjzXEA
hoge:o4QIJGcEe6SXs

Basic認証で複数のアカウントを登録することはあまりないと思いますが、
改行して記述すれば複数アカウントを登録することが可能です。

PHP:サーバーのフルパスを調べる方法

WEBサイトを制作する時にサーバフルパスを調べたい場合があります。
例えば、Basic認証などを設定したい時などサーバのフルパスを記述するので必要になります。

使用するサーバによって、パスは様々です。

phpが使える環境であれば簡単にフルパスを調べることが可能です。
下記にphpサーバーフルパスを調べる方法をメモします。

FTP情報しかない場合などにいいと思います。


phpでサーバーのフルパスを調べる

phpファイルを作成し、下記のコードを記述します。
例:test.phpなど

<?php
echo __FILE__;
?>

作成した「test.php」をサーバにアップロードし、ブラウザでアクセスします。
アクセスすると、アップロードしたファイルまでのフルパスが表示されます。

表示例

/home/test/www/public/test.php

上記の方法でサーバーのフルパスを調べることができます。
アップロードしたファイルはフルパスを確認したら削除してください。