gaku-ura/404.php

116 行
5.4 KiB
PHP

<?php
//(インタプリタに向かって、)うまく言語化できない。情報の伝達に齟齬が発生するかもしれない。でも、聞いて。
#404.phpは普通のページではない。ただエラーを表示するだけでなく、自己解決をする機能を持つ。
##素の404かリダイレクトか不明
if (!isset($d_root)){
$d_root = realpath('./');
if ($d_root === false){
$d_root = '.';
}
}
$f = $d_root.'/hide_php/conf/c.php';
require_once $f;
header("Content-Security-Policy:connect-src 'self';object-src 'none';base-uri 'self';script-src 'none';");
##########html開始
html_head('ないよ-', '', $d_root.'/sqlike/css/404/404style.css', true);
echo '<h1>ないよ</h1>';
if (isset($_SERVER['REQUEST_URI'])){
$uri = $_SERVER['REQUEST_URI'];
//もっともらしい解決方法
if (preg_match('/\.(pl|py|rb|sh|cgi)$/', $uri)){
$f = $d_root.$uri;
if (file_exists($f)){
chmod($f, 0755);
}
}
//うちはwordpressじゃないよ
if (strpos($uri, 'wp') !== false){
echo '<h2>もしかしてwordpress?</h2><p><img src="/img/ないよ.png" width="200px" height="126px" alt="そんなの無いよ"><br><small>引用:ジョジョの奇妙な冒険</small></p><p>当サイトは<b>WordPress</b>を使用しておりません。</p>';
//timelineはsearchに統合
} elseif (strpos($uri, 'timeline') !== false){
echo '<h2>もしかして時系列?</h2><p>時系列は、<a href="/search.php">検索</a>で閲覧できます。</p>';
//そんな都合よくないよ
} elseif (strpos($uri, 'admin') !== false){
echo '<h2>もしかして管理ページ?</h2><p>利用者作成板の管理がしたい場合は、<a href="/ext/">此方をどうぞ</a>。
作成したのに一覧が表示されない場合は、学校裏掲示板で「プレビュー(確認)」を<b>名前とトリップを入力しクッキーを有効にした状態で</b>押して下さい。ログインの代わりになります。</p>';
//物好きだね
} elseif ($uri === '/404.php'){
echo '<p>______というのは嘘で本当はあるんだけど、あなたは<b>直接</b>404エラーを閲覧しています。</p>';
//たぶんPerl
} elseif (preg_match('/\.(pl|py|rb|sh)$/', $uri) === 1){
echo '<h2>もしかしてCGI?</h2><p>cgiスクリプトは、<a href="'.preg_replace('/\.(pl|py|rb|sh)$/', '.cgi', $uri).'">此方をどうぞ</a>。</p>';
//HTMLは統一しよう
} elseif (preg_match('/\.(htm|shtm|shtml|xhtml|xml|ml)$/', $uri) === 1){
echo '<h2>もしかしてhtmlファイル?</h2><p>htmlファイルは、<a href="'.preg_replace('/\.(htm|shtm|shtml|xhtml|xml|ml)$/', '.html', $uri).'">此方をどうぞ</a>。</p>';
//PHPは全て「.php」
} elseif (preg_match('/\.(pp|ph|hp|hh|hack|cgi|html)$/', $uri) === 1){
echo '<h2>もしかしてphpスクリプト?</h2><p>スペルミスの可能性があります。<a href="'.preg_replace('/\.(pp|ph|hp|hh|hack|cgi|html)$/', '.php', $uri).'">此方をお試し下さい</a>。</p>';
//enter.phpの廃止
} elseif (preg_match('/(enter|home|index|main)/', $uri) === 1){
echo '<h2>もしかしてホームページ?</h2><p>ホームページ(トップページ)へ行きたい場合は、<a href="/">トップページ</a>があります。</p>';
//隠しファイルは非公開
} elseif (strpos($uri, '/.') !== false){
echo '<h2>もしかして隠しファイル?</h2><p>見てはいけないものが隠されているかもしれません。あるいは、ただ単に存在しないだけかもしれません。</p>';
//URLパラメーターのエラー
} elseif (strpos($uri, '?')){
//たらい回し
if (preg_match('/\?[A-Z][a-z]+=.+/', $uri) === 1){
echo '<h2>もしかして無効なURL?</h2><p>もしかしなくて本当に存在しないと思います。</p>';
//処理が面倒でたらい回し
} elseif (preg_match('/\?[a-z]+/', $uri) === 1){
$uri_p = substr(explode('?', $uri)[1], 0, 1);
echo '<p>もしかして、大文字にしてみればどうかなぁ?</p><p><a href="'.str_replace('?'.$uri_p, '?'.strtoupper($uri_p), $uri).'">これをお試し下さい</a>。</p>';
//よく分からない
} else {
echo '<h2>もしかして本当に無い?</h2><p>ご指定のURLに対応できる、またはそれに近い表示は出来ません。</p>';
}
//ディレクトリです。
} elseif (substr($uri, -1, 1) === '/'){
echo '<h2>もしかしてディレクトリ?</h2><p>空っぽのフォルダーにアクセスしようとしかのかもしれません。もしかしてそのフォルダー自体が存在しないのかもしれません。</p>';
} elseif (strpos($uri, '.') === false){
echo '<h2>もしかして拡張子が無い?</h2><p><a href="'.$uri.'.html">此方をお試し下さい</a>。あるいは、<a href="'.$uri.'.png">これはどうでしょうか</a>。</p>';
//お手上げ
} else {
echo '<p>もしかしなくて、「もしかして機能」で検出出来ませんでした。</p><p>もしかすると、URLパラメーターがセットされていなかったり空だったり、URLとして成立しない変な文字があったり、するかもしれません...</p>';
}
$f = $d_root.'/sqlike/html/404/ext.html';
if (file_exists($f)){
$fp = fopen($f, 'r');
while (($i = fgets($fp)) !== false){
echo trim($i);
}
fclose($fp);
}
} else {
echo '<h2>解析出来ないエラー</h2><p>重篤なエラーです。</p>';
}
html_foot('', '');