exit;
}
+function die_invalid_pagename() {
+ $title = 'Error';
+ $page = 'Error: Invlid page name';
+ $body = <<<EOD
+<h3>Error</h3>
+<strong>Error message: Invalid page name</strong>
+EOD;
+
+ pkwk_common_headers();
+ header('HTTP/1.0 400 Bad request');
+ catbody($title, $page, $body);
+ exit;
+}
+
+
// Have the time (as microtime)
function getmicrotime()
{
*/
function get_page_uri($page, $uri_type = PKWK_URI_RELATIVE)
{
- global $pkwk_page_uri_handler;
- return get_base_uri($uri_type) . $pkwk_page_uri_handler->get_page_uri_fragment($page);
+ global $page_uri_handler;
+ return get_base_uri($uri_type) . $page_uri_handler->get_page_uri_fragment($page);
}
// Get absolute-URI of this script
return $utf8u;
}
+// Default Page name - URI mapping handler
class PukiWikiStandardPageURIHandler {
function filter_raw_query_string($query_string) {
return $query_string;
}
function get_page_from_query_string($query_string) {
- $arg = $query_string;
- $arg = preg_replace("#^([^&]*)&.*$#", "$1", $arg);
- if ($arg == '') {
- return null;
+ $param1st = preg_replace("#^([^&]*)&.*$#", "$1", $query_string);
+ if ($param1st == '') {
+ return null; // default page
}
- if (strpos($arg, '=') !== false) {
- // Found '/?key=value'
- return null;
+ if (strpos($param1st, '=') !== FALSE) {
+ // Found '/?key=value' (NG chars)
+ return FALSE; // Error page
+ }
+ $page = urldecode($param1st);
+ $page2 = input_filter($page);
+ if ($page !== $page2) {
+ return FALSE; // Error page
}
- $arg = urldecode($arg);
- $arg = strip_bracket($arg);
- $arg = input_filter($arg);
- return $arg;
+ return $page2;
}
}
if ($die) die_message(nl2br("\n\n" . $die));
/////////////////////////////////////////////////
+// Page-URI mapping handler (default)
+if (! $page_uri_handler) {
+ $page_uri_handler = new PukiWikiStandardPageURIHandler();
+}
+
+/////////////////////////////////////////////////
// INI_FILE: LANG に基づくエンコーディング設定
// MB_LANGUAGE: mb_language (for mbstring extension)
$arg = input_filter($arg); // \0 除去
// Convert QueryString by PageURIHandler
-$arg_replaced = $pkwk_page_uri_handler->filter_raw_query_string($arg);
+$arg_replaced = $page_uri_handler->filter_raw_query_string($arg);
if ($arg_replaced !== $arg) {
$_GET = array();
$m = array();
if (! isset($vars['cmd']) && ! isset($vars['plugin'])) {
$get['cmd'] = $post['cmd'] = $vars['cmd'] = 'read';
- $arg = $pkwk_page_uri_handler->get_page_from_query_string($arg);
- if (!$arg) {
+ $arg = $page_uri_handler->get_page_from_query_string($arg);
+ if ($arg === FALSE) {
+ // page is FALSE if page name is not valid
+ // Keep $arg is FALSE
+ } else if (!$arg) {
+ // if $arg is null or '' ($arg is NOT FALSE)
$arg = $defaultpage;
}
$get['page'] = $post['page'] = $vars['page'] = $arg;
$logging_updates_log_dir = '/var/log/pukiwiki';
/////////////////////////////////////////////////
-// Page-URI mapping handler
-$pkwk_page_uri_handler = new PukiWikiStandardPageURIHandler();
+// Page-URI mapping handler ( ref: https://pukiwiki.osdn.jp/?PukiWiki/PageURI )
+$page_uri_handler = null; // default
+// $page_uri_handler = new PukiWikiStandardPageURIHandler();
/////////////////////////////////////////////////
// User-Agent settings