iPhoneでファイル閲覧 ちょっと修正
先日のiPhoneでファイル閲覧 [
link] にて、ムービーファイルが見れないことが判明。
で、どうやらiPhoneのSafariがBasic認証を覚えてくれてない様子。
認証外せば問題なく再生できるので、まぁそれでもいいのだけど、なんとなく気持ちが悪いのでPHPへのアクセスには簡単な認証をかませることにした。
初回アクセス時にパスワード入力でクッキー保存。以後はそのまま表示。
一式ファイルも修正しておきました。 [
link]
追記:その後修正した最新はこちら [
link]
<?PHP
$dir = "./data"; // データフォルダ ここに閲覧したいファイルを入れておく
$pw = "password"; // パスワード 書き換えて使用して下さい
// postデータをcookie保存
if ($_POST["upw"]) {
setcookie("fileslogin",crypt($_POST["upw"], "fl"),time()+(60*60*24*90));
header("Location: index.php");
}
// cookieチェック
$login = (crypt($pw, "fl") == $_COOKIE["fileslogin"]);
if ($login) {
// ファイルリスト画面表示
$ul = "<ul id="home" title="Files" selected="true">\n"; // home UL
// アイコン画像
$iconimg = array('doc' => 'doc.png', 'docx' => 'docx.png', 'htm' => 'html.png', 'html' => 'html.png', 'key' => 'key.png', 'numbers' => 'numbers.png', 'pages' => 'pages.png', 'pdf' => 'pdf.png', 'ppt' => 'ppt.png', 'pptx' => 'pptx.png', 'txt' => 'txt.png', 'vcf' => 'vcf.png', 'xls' => 'xls.png', 'xlsx' => 'xlsx.png', 'm4v' => 'mov.png', 'mp4' => 'mov.png', 'mov' => 'mov.png', 'aac' => 'audio.png', 'mp3' => 'audio.png', 'aif' => 'audio.png', 'aiff' => 'audio.png', 'wav' => 'audio.png', 'm4a' => 'audio.png', 'm4b' => 'audio.png', 'm4p' => 'audio.png', 'jpg' => 'img.png', 'jpeg' => 'img.png', 'gif' => 'img.png', 'png' => 'img.png', 'tif' => 'img.png', 'tiff' => 'img.png', 'ai' => 'ai.png', 'psd' => 'psd.png');
$files = array();
$cnt = 0;
$files[] = read_directory($dir, $ul);
$files = array_reverse($files);
$data = implode($files, "\n");
} else {
// ログイン画面表示
$data = "<ul id="home" title="Files" selected="true">\n";
$data .= "<li><form method="post" action="index.php">PASSWORD: <input type="password" name="upw" value="" /><input type="submit" value="Submit"></form></li>\n";
$data .= "</ul>\n";
}
$html = <<<EOM
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<style type="text/css" media="screen">@import "./iui/iui.css";</style>
<style type="text/css">
.icon {
margin-right: 5px;
}
p {
display: table-cell;
vertical-align: middle;
margin: 0;
}
form {
margin-right: 10px;
}
input {
padding: 4px;
}
</style>
<script type="application/x-javascript" src="./iui/iui.js"></script>
<head>
<title>Files</title>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
</head>
<body>
<div class="toolbar">
<h1 id="pageTitle"></h1>
<a id="backButton" class="button" href="#"></a>
</div>
$data
</body>
</html>
EOM;
echo $html;
exit;
function read_directory($dir, $ul) {
global $iconimg, $files, $cnt;
$list = $ul;
if ($handle = opendir($dir)) {
while (false !== ($item = readdir($handle))) {
if ($item != "." && $item != ".." && $item != ".DS_Store") {
if (is_dir("$dir/$item")) {
$cnt += 1;
$list .= "<li><a href="#n{$cnt}"><p><img src="./img/folder.png" class="icon"></p><p>{$item}</p></a></li>\n";
$files[] = read_directory("$dir/$item", "<ul id="n{$cnt}" title="{$item}">\n");
} else {
$img_path = "./img/genericdoc.png";
$item_name = explode('.', $item);
if ($item_name[1]) {
if ($iconimg[strtolower($item_name[1])]) {
$img_path = "./img/{$iconimg[strtolower($item_name[1])]}";
}
}
$list .= "<li><a href="$dir/$item" target="_self"><p><img src="$img_path" class="icon"></p><p>$item</p></a></li>\n";
}
}
}
closedir($handle);
$list .= "</ul>\n";
}
return $list;
}
?>
this page url :