PHPの最近のブログ記事

PHPでグラフを表示させるには、JpGraphやPHPlotがあります。
商用で利用するには、PHPlotを選択することになりますが、標準では日本語が使えません。

日本語フォントを使うには、以下のようにします。
なお環境は、CentOS5にXAMPPを入れてます。

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に不正なデータが入っていないかを必ずチェックしてから
エスケープするということをやっておけば、問題ないでしょう。

Apacheを利用していると、URLにファイル名まで入力しないと(例:http://xxx/test/)
ファイルの一覧が表示されてしまうことがあります。
これはセキュリティ上良くないので非表示にしたほうがよいです。

方法は、httpd.confファイルの以下の部分を変更します。
Options Indexes FollowSymLinks
ここを
Options -Indexes FollowSymLinks
このように変更して、apacheを再起動すれば表示されなくなります。

Excel(エクセル)のVBAで、フォームのボタンをクリックして印刷プレビューを行うと
なぜかExcelが固まってしまう。(Xp, Excel2000)

回避策として、以下のようにしたらうまくいきました。
1.フォームを隠す
2.印刷プレビュー
3.プレビューの閉じるボタンでフォームを表示
Private Sub CommandButton1_Click()
    Dim ret As Boolean
    'フォームを閉じる
    UserForm1.Hide
    ret = Worksheets("Sheet2").PrintPreview
    '戻り値を判定することで閉じるが押されたかがわかる
    If ret = False Then
        'フォームを表示
        UserForm1.Show
    End If
End Sub

Apacheのポート変更について

XAMPP1.6.6aをインストールすると、apacheのバージョンは2.2.8となっています。
使用ポートは80のためIISが入っている環境では、どちらかのポートを変更しておく必要があります。
IISのサービスを停止しておけば問題はありませんが。

[ポート変更方法(例:port8080に変更)]
httpd.confをエディタで開いて、Listenと記述されているところを8080に変更します。
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 8080
Apacheを再起動します。XAMMPのコントロールパネル→Apacheの停止→開始。
ブラウザから、http://localhost:8080/ にアクセスしてXAMPPの画面が
表示されれば正常に動作しています。

XAMPPの導入

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のphpMyAdminのパスワードを忘れてしまった。
サーバパネルを見ると、[MySQL設定]→[MySQLユーザの一覧]からパスワードが変更できるではないか!
旧パスワードが不要なので、さくっと変更完了!
これでphpMyAdminも使えるようになりました。

が、よく考えたら(今ごろ・・・)MovableTypeはMySQLを使用している。
接続できないのでは?と思ったら、MTの管理者画面に入れません。。
アホすぎですね。

全く忘れてしまって、configファイルに書いたようなと思ったらありました。
MTのインストールフォルダの直下に、mt-config.cgi というファイルが。
この中のDBPasswordという項目を変更すればOK。
最初からこのファイルをみればよかったんですね。。

このアーカイブについて

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

前のカテゴリはMySQLです。

次のカテゴリはVB.NETです。

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