PHP: 2008年6月アーカイブ

XServer(エックスサーバー)でデータベースを自動でバックアップするには、cronを使います。
cronの設定方法は以下をご参考に。
http://www.xserver.ne.jp/man_program_cron.php

PHPファイルの実行は、以下のように設定します。

ディレクトリトラバーサルとは,「../」のような文字列を使ってWebサーバーのディレクトリをあがり、
非公開ディレクトリにアクセスする手法です。

単純にstr_replace関数で「../」を「''」に置換するのは、対策として不十分です。
対策としては、「../」が見つかったら不正な文字としてエラーにするか、PHPであればbasename()関数を
使用するのが最も簡単だと思います。


PHPの各種設定は、php.iniで行いますが.htaccessファイルでも変更できます。
ただし変更できるものとできない項目があります。
PHPのマニュアルを参照し変更の可否が、「PHP_INI_PERDIR」または「PHP_INI_ALL」と指定されている
もののみ変更することができます。

php.iniディレクティブ
http://www.phppro.jp/phpmanual/php/ini.html

設定の仕方は、「php_value」ディレクティブまたは「php_flag」ディレクティブを使います。
php_value max_execution_time 30

.htaccessを置いたとたんサイトにアクセスすると、Internal Server Errorが発生することがあります。
これは、.htaccessの記述の仕方が間違っている可能性が高いです。記述の仕方に間違いがないか
確認してみましょう。
クロスサイトスクリプティングの(XSS)対策はサニタイジング(データの無害化)になります。
サニタイジングのタイミングはデータ入力時ではなくHTML生成時に行うのが良いです。

PHPでは、htmlspecialchars()を通せばほとんどのXSSは対応できるようです。

PHP: htmlspecialchars - Manual
http://jp.php.net/htmlspecialchars
<?php
htmlspecialchars($_POST["url"], ENT_QUOTES, 'UTF-8');
?>
第二引数には、ENT_QUOTESを入れておけばシングルクオートとダブルクオートが
共に変換されます。

ただし、上記ではまずいケースもあります。
Aタグの中ではJavaScriptが実行可能なので以下のような場合はXSSに対処できません。
<a href="<? echo htmlspecialchars( $_POST['url'] ) ?>">URLリンク</a>
このページに対してPOSTで'url'にjavascript:alert('NG') と入れて送信すると
URLリンクをクリックした際、アラートが表示されます。

実装する場合は、まずGETやPOSTに不正なデータが入っていないかを必ずチェックしてから
エスケープするということをやっておけば、問題ないでしょう。

XAMPPの導入

| | トラックバック(0)
PHPの開発環境を構築するため、Windows環境にXAMPPを導入する。
PHP、ApacheからMySQLまで簡単に導入でき、日本語化もされていますのでとても便利です。
XAMPPダウンロードは以下より。(WIndows版)インストーラつきのものが便利でしょう。
XAMPP for Windows
http://www.apachefriends.org/jp/xampp-windows.html

インストールは画面の指示通りに進んでいけば問題ありません。
サービスのインストールは後から変更できます。

インストール完了後、コントロールパネルを起動してここからApacheやMySQLを起動できます。

※Apacheが起動しない
なぜかApacheの開始ボタンをクリックしても起動しませんでした。
イベントログを見ると何やらポートがどうたら・・
管理ツールボタンをクリックすると、http://localhost/ を開きにいってIISのページが開いてました。
IISが起動しているために、Apacheが起動できなかったんですね。
IISのサービスを停止したら、無事Apacheが起動してXAMPPのページが開きました。



XServerのphpでメール送信を行うには、特に必要なものはありません。
以下のように関数コールのみで送信できます。
前回のように文字コードを設定しておくことで文字化けは発生しませんでした。

$to = "phptest@xxxx.com";
$subject = "メールタイトル-TEST MAIL";
$body = "メッセージ(Honbun)";
$header = "From: WebSystem <php_test@xxx.com>";
mb_send_mail($to, $subject, $body, $header);

http://jp.php.net/manual/ja/function.mb-send-mail.php
レンタルサーバのXserver(エックスサーバー)でphpをやってみることに。
初期設定は、HPにまとまっています。

XServerよくある質問
http://www.xserver.ne.jp/faq_service_php.php

とりあえずphp.iniを上記ページからそのままコピーしてトップディレクトリにおいてみる。
パーミッションは、711等に変更します。
テストページ(test.php)を作って、試すと特に問題なく表示されました。

■文字コードをUTF-8に変更してみる

php.iniの以下の箇所をUTF-8にする。
mbstring.http_output = UTF-8
mbstring.internal_encoding = UTF-8

test.phpのファイルをUTF-8形式で保存する。
これで問題なく表示されました。データベースは、デフォルトがEUC-JPのようなので変更しないと
文字化けすると思うのでまた後日やってみます。

このアーカイブについて

このページには、2008年6月以降に書かれたブログ記事のうちPHPカテゴリに属しているものが含まれています。

次のアーカイブはPHP: 2008年7月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

PHP: 2008年6月: 月別アーカイブ

Powered by Movable Type 4.01