}ここで、【===】と【strcmp】の速度について調べてみました。$b){}}この2つのループにかかる時間を計ったところ、【===】判定のほうがはるかに早かったです(何回か実行しました)。【===】演算子は型変換を行わないので、処理が早いのだそうです。【switch】では【if】のような演算子は使えません。変数の比較(特に文字列)では、【if】文で【===】と【!==】を用いる、のが安全なようです。今回はファイルのアップロード(put)です。get同様ftpサーバーへログインした接続とは別の接続をオープンして行います。100000);@fclose($local);ファイル転送モードを指定します。バイナリならば、【I】、アスキーなら【A】です。512);パッシブモードをオンにします。512);データ用の接続をオープンします。ポートの計算方法は、ソケットをオープンしてファイル操作をする(get)を参照してください。$data_port);リモートにファイルを作成します。・・・】と返ってきます。リモートにファイルを書き込みます。$write);ファイルサイズを照合をする場合、【fwrite】の戻り値とstrlen($write)をチェックすればOKです。get同様、バックアップ機能を備えれば安心です。今度は、ファイル情報取得やファイル削除よりちょっと複雑なファイルのアップロード(put)やダウンロード(get)などです。put・getはftpサーバーへログインした接続とは別の接続をオープンして行います。ローカルへファイルを作成します。"w");ファイル転送モードを指定します。バイナリならば、【I】、アスキーなら【A】です。512);パッシブモードをオンにします。(200,0,0,1,100,32)】という具合に、メッセージの後にサーバのIPアドレスとデータ接続用のポート番号が返ってきます。【200,0,0,1,100,32】がそれです。初めの4つがIPアドレス、後ろの2つがデータ用のポート番号です。ここから接続用のポート番号を取り出します。後ろの数値で計算できます。25632データ用の接続をオープンします。$data_port);リモートのファイルを読み込みます。".$remotefile."\r\n");ローカルのファイルへ書き込みます。100000));念のため、書き込んだファイルサイズを照合したほうがいいでしょう。ローカルへ書き込んだファイルサイズは、【fwrite】の戻り値でチェックできます。512);成功すれば、【213】に続き、サイズが戻ってきます。データ用の接続をクローズします。@fclose($ftp);念のため一時バックアップファイルを作成しておき、書き込みに失敗したときに書き戻す機能をつけておけば更に安心でしょう。ローカルのファイルに追記したい場合、ファイルオープンのとき、モードパラメータで【a】を指定すればOKです。"a");コメントTop↑PHPコーディングソケットをオープンしてファイル操作をする(ファイル削除)2010年02月07日ftpサーバーに接続できたら、まずは簡単なファイル削除から。・・・・・と返ってきます。このほかにも、リネーム、ファイルリスト取得、ディレクトリ移動など同じような方法で行えます。コメントTop↑PHPコーディングソケットをオープンしてファイル操作をする(ftp接続)2010年02月06日PHPでftpを利用するには、ftp関数をインストールすれば一番簡単なのですが、レンタルサーバーの場合、自分でインストールできないことが多々あります。いった場合、ソケットをオープンしてファイル操作をしなければいけません。ftpサーバーへの接続です。・・・・・と返ってきます。前回に続き、今度はDATA部です。いわゆるメールのボディ部です。ボディ部は、【DATA】コマンドから、【.】のみの行が送信されるまでとなります。@fgets($sock);上の例は、内部文字コードは【EUC】、【ISO-2022-JP】のプレーンテキストメールを送信する場合です。1.0\r\n";以降を変えることで、もちろんthmlメールや添付ファイル付きのメールを送信することもできます。この辺りは、【mail】関数で添付なしプレーンテキスト形式メールを送信、【mail】関数で添付ありプレーンテキスト形式メールを送信、【mail】関数で添付なしhtml形式メールを送信(代替本文なし)、【mail】関数で添付ありhtml形式メールを送信(代替本文なし)、【mail】関数で添付なしhtml形式メールを送信(代替本文あり)、【mail】関数で添付ありhtml形式メールを送信(代替本文あり)とほぼ同じです。違うのは、行の最後を表す文字がきっちり【\r\n】になることです。本当は【DIGEST-MD5】もコーディングしたかったのですが、どうしても【DIGEST-MD5】ではどのように認証すればいいのかの記述が見つかりません。英語で書いてある仕様書はあるようなのですが、日本語で書かれているページがみつかりません。それよりも前に進まないといけないので、とりあえずメール送信に進みます。"bcc2@domain.xxx";まずはヘッダ部からです。送信元メールアドレスをサーバーに知らせます。この送信元はメーラーでは送信者としては表示されません。smtpサーバーによりreturn-pathに設定されます。メーラーに送信者として表示されるのはDATA部のfromです。FROM:<".$return-path.">\r\n");送信先メールアドレスをサーバーに知らせます。TO】コマンドを送信します。TO:<".$bcc2.">\r\n");次回はDATA部です。今日はsmtp認証の中の【CRAM-MD5】方式です。サーバーに【CRAM-MD5】方式で認証を行うことを通知します。CRAM-MD5\r\n");成功すると、サーバーは認証に使うキーを返してきます。$line);この方式はBase64エンコード(ユーザ名+空白1文字+サーバーからのキーをパスワードをキーとしてMD5ダイジェストした値)を認証に用います。,$pw));で認証用文字列が得られます。次に、得られた文字列で認証です。・・・】が返ってきます。この方式は、IDやパスワードがデコードできなきので、セキュリティが高い方式です。SE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。