質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

iteratorパターン

iteratorパターンとは、オブジェクト指向プログラミングのデザインパターンです。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とします。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

Q&A

解決済

1回答

2505閲覧

どこが間違っていますか?-オブジェクト指向-

b1ackc0ffee

総合スコア267

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

iteratorパターン

iteratorパターンとは、オブジェクト指向プログラミングのデザインパターンです。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とします。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

0グッド

1クリップ

投稿2015/07/01 03:28

編集2015/07/01 03:33

前回の質問のコードを、
DirectoryIteratorを使用し、書き換えてみます。
(書き換えることのメリットなどまだよくわからないのですが...苦笑)

そうすると、前回とは違うエラーメッセージが表示されてしまいました。

クラス名が間違っているのでしょうか。
自分では間違いを発見できなかったので、ご教示の程よろしくお願い致します。

lang

1<?php require_once '../Encode.php'; ?> 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="UTF-8" /> 6<title>PHP入門教室</title> 7</head> 8<body> 9<h3>ファイルリスト</h3> 10<table border="1"> 11<tr> 12 <th>ファイル</th><th>サイズ</th><th>最終アクセス日</th><th>最終更新日</th> 13</tr> 14<?php 15define('DOC_ROOT', '../doc/'); 16$dir = new DirectoryIterator(DOC_ROOT); 17foreach ($dir as $file) { 18 if ($file->isFile()) { 19 $name = mb_convert_encoding($file->getFileName(), 'UTF-8', 'SJIS-WIN'); 20?> 21 <tr> 22 <td><a href="download.php?path=<?php print(urlencode($name)); ?>"> 23 <?php print(e($name)); ?></a></td> 24 <td><?php print(round($file->getSize() /1024)); ?>KB</td> 25 <td><?php (date('Y/m/d H:i:s', $file->getAtime())); ?></td> 26 <td><?php (date('Y/m/d H:i:s', $file->getMtime())); ?></td> 27 </tr> 28 <?php 29 } 30 /* ここまで--/docフォルダ内の出力-- */ 31} 32?> 33</table> 34</body> 35</html> 36

lang

1<?php 2define('DOC_ROOT', '../doc/'); 3$flag = FALSE; 4$o_dir = opendir(DOC_ROOT); 5while ($file = readdir($o_dir)) { 6 if(is_file(DOC_ROOT.$file)) { 7 $filename = $file; 8 $path = DOC_ROOT.$file; 9 $file = mb_convert_encoding($file, 'UTF-8', 'SJIS-WIN'); 10 if ($_GET['path'] === $file) { 11 $flag = TRUE; 12 break; 13 } 14 } 15} 16closedir($o_dir); 17if (!$flag) { die('不正なパスが指定されました。'); } 18header('Content-Type: application/octet-stream'); 19header('Content-Disposition: attachment;filename='.$filename); 20print(file_get_contents($path)); 21

実行すると、
下記のようなエラー画面になります。
![イメージ説明]WIDTH:600

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikuwow

2015/07/01 03:44

PHPのバージョンはいくつでしょうか?
b1ackc0ffee

2015/07/01 05:14

サーバーのバージョンは、 4.3.9です。 constをdefineにしたのですが、それでも古いバージョンだと、何がダメなのでしょうか。
guest

回答1

0

ベストアンサー

PHP のバージョンを確認して下さい。とてつもなく古いバージョン(PHP4)を使っていませんか?

http://3v4l.org/pv71n


https://teratail.com/questions/12021

サーバーのバージョンは、 4.3.9

どこが間違っていますか?-オブジェクト指向-

そうですね、、、たぶんそのサーバを使っているのが間違いです。


きちんとした回答を書いておくと・・・使用している PHP のバージョンが古すぎて DirectoryIterator が使えません。

投稿2015/07/01 03:46

編集2015/07/01 08:48
ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

b1ackc0ffee

2015/07/01 05:13

ngyukiさん 回答ありがとうございます! 使っているので、 http://freesoft.0hs.org/4223.html を参考にバージョンアップしましたが、変わりませんでした。 winscpはサーバーにデータを送るためのソフトなので、 winscpのバージョンを上げても意味はないのでしょうか。 サーバーのバージョンアップは難しいでしょうか。 調べてもよくわからないのです。
ngyuki

2015/07/01 05:19

WinSCP のバージョンではなく、サーバに入っている PHP のバージョンを上げる必要があります。そのサーバをあなたが管理しているのでないなら、バージョンアップは難しいと思うので、別のサーバを使ったほうがいいです(学習のために使っているなら)。 (というか、今の御時世 PHP4 が入っているサーバの方が珍しいと思うのですが・・・)
b1ackc0ffee

2015/07/02 05:07

www そうなんですね。 はい、練習用に支給されたものを使っていました。 サーバーって何、何種類あるの、DNSとセットで売ってるレンタルサーバのこと? レベルの知識です。 有難うございました★
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問