コミットを比較
13 コミット
a4f7d22c79
..
main
| 作成者 | SHA1 | 日付 | |
|---|---|---|---|
| 9c85b4cfc3 | |||
| 493bc71c94 | |||
| d22a00ced7 | |||
| 403c67178b | |||
| f0e267507e | |||
| 60b82f2ae2 | |||
| 6c4e401d5a | |||
| 26d78aab88 | |||
| d13588c24f | |||
| 50996316e5 | |||
| 34758dfa19 | |||
| a7a601c769 | |||
| 0a96136e34 |
+3
-2
@@ -1,3 +1,4 @@
|
||||
/image
|
||||
/draft
|
||||
/images
|
||||
/drafts
|
||||
/database.php
|
||||
|
||||
|
||||
バイナリファイルは表示されません.
|
変更後 幅: | 高さ: | サイズ: 805 KiB |
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
function
|
||||
set_mysql ($db)
|
||||
{
|
||||
$url = 'localhost';
|
||||
$user = 'root';
|
||||
$pass = '';
|
||||
|
||||
return new mysqli ($url, $user, $pass, $db);
|
||||
}
|
||||
|
||||
+42
-57
@@ -1,13 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="robots" content="noindex" />
|
||||
<title><?= ($title == '') ? '' : ($title . ' - ') ?>キケッツチャンネル お絵描き掲示板</title>
|
||||
<link rel="stylesheet" href="https://jpafonts.osdn.jp/webfonts/jpafonts.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="./styles/style.css" />
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" />
|
||||
<meta charset="UTF-8">
|
||||
<meta name="robots" content="noindex">
|
||||
<title><?= ($title == '') ? '' : ($title . ' - ') ?>キケッツチャンネル お絵描き掲示板(跡地)</title>
|
||||
<link rel="stylesheet" type="text/css" href="./styles/style.css">
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css">
|
||||
<script defer src="https://use.fontawesome.com/releases/v5.15.4/js/all.js"></script>
|
||||
<script src="./scripts/colour-pad.js"></script>
|
||||
</head>
|
||||
@@ -25,13 +23,13 @@
|
||||
<div style="margin-bottom: 16px">
|
||||
<div>
|
||||
<label for="width">幅:</label>
|
||||
<input type="number" id="change-width" name="width" value="480" min="32" max="640" />
|
||||
<input type="number" id="change-width" name="width" value="480" min="32" max="640">
|
||||
<label>(32 〜 640)</label>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="height">高さ:</label>
|
||||
<input type="number" id="change-height" name="height" value="480" min="24" max="480" />
|
||||
<input type="number" id="change-height" name="height" value="480" min="24" max="480">
|
||||
<label>(24 〜 480)</label>
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,14 +40,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h1><a href="."><img src="/img/kusobbs.gif" alt="クソ掲示板" style="width: 398px" /></a></h1>
|
||||
<h1><a href="."><img src="./assets/kusobbs.gif" alt="クソ掲示板" style="width: 398px"></a></h1>
|
||||
<div style="text-align: center"><a href="#" onclick="PauseMusic ()" id="mute"> </a></div>
|
||||
|
||||
<?php if ($thread == -1): ?>
|
||||
<form action="make_thread.php" method="POST">
|
||||
スレ名:<input type="text" name="thread-name" /><br />
|
||||
スレ内容:<textarea name="thread-explain"></textarea><br />
|
||||
<input type="submit" value="スレ立て" />
|
||||
<form action="./modules/make_thread.php" method="POST">
|
||||
スレ名:<input type="text" name="thread-name"><br>
|
||||
スレ内容:<textarea name="thread-explain"></textarea><br>
|
||||
<input type="submit" value="スレ立て" disabled>
|
||||
</form>
|
||||
|
||||
<?php if ($result = $mysqli -> query ("SELECT * FROM threads WHERE id <> 1 ORDER BY latest DESC")): ?>
|
||||
@@ -82,8 +80,8 @@
|
||||
</table>
|
||||
|
||||
<form id="message-form">
|
||||
<label>名前:</label><input type="text" id="user-name" name="name" /><br />
|
||||
<label>削除用パスワード:</label><input type="password" id="password" name="password" />
|
||||
<label>名前:</label><input type="text" id="user-name" name="name"><br>
|
||||
<label>削除用パスワード:</label><input type="password" id="password" name="password">
|
||||
<!-- <textarea id="message" name="message"></textarea> -->
|
||||
</form>
|
||||
|
||||
@@ -91,8 +89,8 @@
|
||||
<div style="display: flex; justify-content: center">
|
||||
<div class="button-area" style="margin-right: 64px">
|
||||
<button id="new">新規作成</button>
|
||||
<button id="send">送信</button>
|
||||
<button id="save">ダウンロード</button>
|
||||
<button id="send" disabled>送信</button>
|
||||
<button id="save" disabled>ダウンロード</button>
|
||||
<button id="change-size">サイズ変更</button>
|
||||
</div>
|
||||
|
||||
@@ -106,28 +104,20 @@
|
||||
<div class="radio">
|
||||
<form id="mode">
|
||||
<label>モード:</label>
|
||||
<label><input type="radio" name="mode" value="pen" id="pen" checked />ペン</label>
|
||||
<label><input type="radio" name="mode" value="rubber" id="rubber" />消しゴム</label>
|
||||
<label><input type="radio" name="mode" value="bucket" id="bucket" />塗りつぶし</label>
|
||||
<label><input type="radio" name="mode" value="pen" id="pen" checked>ペン</label>
|
||||
<label><input type="radio" name="mode" value="rubber" id="rubber">消しゴム</label>
|
||||
<label><input type="radio" name="mode" value="bucket" id="bucket">塗りつぶし</label>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="radio">
|
||||
<label>取込み:</label>
|
||||
<input id="load" type="file" onChange="LoadFile (this.files)" />
|
||||
<input id="load" type="file" onChange="LoadFile (this.files)">
|
||||
</div>
|
||||
|
||||
<div class="radio">
|
||||
<form id="colour">
|
||||
<label>色:</label>
|
||||
<!-- <input type="radio" name="colour" value="black" checked="checked" />黒
|
||||
<input type="radio" name="colour" value="blue" />ブルー
|
||||
<input type="radio" name="colour" value="red" />赤
|
||||
<input type="radio" name="colour" value="magenta" />マジェンタ
|
||||
<input type="radio" name="colour" value="lime" />ライム
|
||||
<input type="radio" name="colour" value="cyan" />青
|
||||
<input type="radio" name="colour" value="yellow" />イェロウ
|
||||
<input type="radio" name="colour" value="white" />白 -->
|
||||
<button id="colour-picker" type="button" onclick="cmanCP_JS_open(this)" cmanCPat="def_color:cns=#000000,rc_form:RGBA,rc_func:changeColour">選択</button>
|
||||
<label id="irorororo">黒</label>
|
||||
</form>
|
||||
@@ -136,31 +126,30 @@
|
||||
<div class="radio">
|
||||
<form id="size">
|
||||
<label>太さ:</label>
|
||||
<label><input type="radio" name="size" value="1" />1</label>
|
||||
<label><input type="radio" name="size" value="2" />2</label>
|
||||
<label><input type="radio" name="size" value="3" checked="checked" />3</label>
|
||||
<label><input type="radio" name="size" value="5" />5</label>
|
||||
<label><input type="radio" name="size" value="7" />7</label>
|
||||
<label><input type="radio" name="size" value="10" />10</label>
|
||||
<label><input type="radio" name="size" value="15" />15</label>
|
||||
<!-- <input type="range" name="size" min="1" max="57" value="3" /> -->
|
||||
<label><input type="radio" name="size" value="0" />指定:
|
||||
<input style="width: 2em" type="number" name="size" id="size-free" value="57" /></label>
|
||||
<label><input type="radio" name="size" value="1">1</label>
|
||||
<label><input type="radio" name="size" value="2">2</label>
|
||||
<label><input type="radio" name="size" value="3" checked>3</label>
|
||||
<label><input type="radio" name="size" value="5">5</label>
|
||||
<label><input type="radio" name="size" value="7">7</label>
|
||||
<label><input type="radio" name="size" value="10">10</label>
|
||||
<label><input type="radio" name="size" value="15">15</label>
|
||||
<label><input type="radio" name="size" value="0">指定:
|
||||
<input style="width: 2em" type="number" name="size" id="size-free" value="57"></label>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="radio">
|
||||
<form id="layer">
|
||||
<label>レイア:</label>
|
||||
<label><input onclick="reDraw ()" type="radio" name="layer" value="0" checked="checked" />基底</label>
|
||||
<label><input onclick="reDraw ()" type="radio" name="layer" value="1" />1</label>
|
||||
<label><input onclick="reDraw ()" type="radio" name="layer" value="2" />2</label>
|
||||
<label><input onclick="reDraw ()" type="radio" name="layer" value="0" checked>基底</label>
|
||||
<label><input onclick="reDraw ()" type="radio" name="layer" value="1">1</label>
|
||||
<label><input onclick="reDraw ()" type="radio" name="layer" value="2">2</label>
|
||||
<button type="button" name="del">削除</button>
|
||||
<button type="button" name="down">下へ</button>
|
||||
<button type="button" name="up">上へ</button>
|
||||
<button type="button" name="add">追加</button>
|
||||
<br />
|
||||
<label><input onclick="reDraw ()" type="checkbox" name="sep" />レイアを分けて表示</label>
|
||||
<br>
|
||||
<label><input onclick="reDraw ()" type="checkbox" name="sep">レイアを分けて表示</label>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -232,7 +221,7 @@
|
||||
font-size: 80%">
|
||||
<div style="grid-columns: 1; text-align: left;">
|
||||
<a style="color: blue; white-space: nowrap" title="低評価"
|
||||
href="?thread=<?= $thread ?>&sort=<?= $sort ?>&evaluate=bad&id=<?= $row['id'] ?>#<?= $row['id'] ?>">
|
||||
tabindex="-1">
|
||||
<i class="fas fa-thumbs-down"></i> <?= $row['bad'] ?>
|
||||
</a>
|
||||
</div>
|
||||
@@ -252,7 +241,7 @@
|
||||
</div>
|
||||
|
||||
<div style="grid-columns: 4; text-align: right">
|
||||
<a style="color: red" title="高評価" href="?thread=<?= $thread ?>&sort=<?= $sort ?>&evaluate=good&id=<?= $row['id'] ?>#<?= $row['id'] ?>">
|
||||
<a style="color: red" title="高評価" tabindex="-1">
|
||||
<?= $row['good'] ?> <i class="fas fa-thumbs-up"></i>
|
||||
</a>
|
||||
</div>
|
||||
@@ -267,7 +256,7 @@
|
||||
<?php elseif ($row['held']): ?>
|
||||
<tr><td><p>確認中です.</p></td></tr>
|
||||
<?php else: ?>
|
||||
<tr><td class="illust" style="display: grid; grid-template-columns: .375fr auto .375fr; align-items: end"><div style="grid-columns: 1"></div><div style="grid-columns: 2; text-align: center"><img style="border: solid 1px"src="<?= $dir . $row['image'] ?>" /></div><div style="grid-columns: 3; justify-self: end; margin-right: 8px; margin-bottom: 8px; font-size: 80%"><a href="#del" onclick="deletePost (<?= $row['id'] ?>)">削除</a></div></td></tr>
|
||||
<tr><td class="illust" style="display: grid; grid-template-columns: .375fr auto .375fr; align-items: end"><div style="grid-columns: 1"></div><div style="grid-columns: 2; text-align: center"><img style="border: solid 1px"src="<?= $dir . $row['image'] ?>"></div><div style="grid-columns: 3; justify-self: end; margin-right: 8px; margin-bottom: 8px; font-size: 80%"><a href="#del" onclick="deletePost (<?= $row['id'] ?>)">削除</a></div></td></tr>
|
||||
<?php endif ?>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -281,19 +270,15 @@
|
||||
</div>
|
||||
|
||||
<h3 id="del">レス削除</h3>
|
||||
削除したいレス番号と削除用パスワードを入力して “削除” を押してください.<br />
|
||||
<label>レス番号:</label><input type="text" id="del-id" /><br />
|
||||
<label>削除用パスワード:</label><input type="password" id="del-pass" /><br />
|
||||
削除したいレス番号と削除用パスワードを入力して “削除” を押してください.<br>
|
||||
<label>レス番号:</label><input type="text" id="del-id"><br>
|
||||
<label>削除用パスワード:</label><input type="password" id="del-pass"><br>
|
||||
<button id="delete" onclick="deletePostReally ()">削除</button>
|
||||
<?php endif ?>
|
||||
|
||||
<hr />
|
||||
<hr>
|
||||
|
||||
<footer>
|
||||
<div class="attention">
|
||||
このサイトでは,<a href="https://moji.or.jp/ipafont/license/" target="_blank">IPA フォントライセンス v1.0</a> で公開されてゐる <a href="https://jpafonts.osdn.jp/" target="_blank">JPA フォント</a>を使用してゐます.
|
||||
</div>
|
||||
|
||||
<div class="copyright">
|
||||
© このペィジへの投稿は,すべて,パブリック・ドメインとします.
|
||||
</div>
|
||||
@@ -302,7 +287,7 @@
|
||||
<canvas style="display: none" width="1" height="1" id="work"></canvas>
|
||||
<canvas style="display: none" width="480" height="480" id="canvas-perfect"></canvas>
|
||||
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
<script type="text/javascript" src="./scripts/script.js"></script>
|
||||
|
||||
<?php if ($thread != -1): ?>
|
||||
<script type="text/javascript" src="./scripts/paint.js"></script>
|
||||
|
||||
@@ -1,31 +1,29 @@
|
||||
<?php
|
||||
|
||||
require_once "${_SERVER['DOCUMENT_ROOT']}/database.php";
|
||||
require_once './database.php';
|
||||
|
||||
if (isset ($_GET['page'])):
|
||||
if (isset ($_GET['page']))
|
||||
$page = $_GET['page'];
|
||||
else:
|
||||
else
|
||||
$page = 0;
|
||||
endif;
|
||||
|
||||
if (isset ($_GET['thread'])):
|
||||
if (isset ($_GET['thread']))
|
||||
$thread = $_GET['thread'];
|
||||
else:
|
||||
else
|
||||
$thread = -1;
|
||||
endif;
|
||||
|
||||
if (isset ($_GET['sort'])):
|
||||
if (isset ($_GET['sort']))
|
||||
{
|
||||
$sort = $_GET['sort'];
|
||||
|
||||
if (!(in_array ($sort, array ('td', 'eg', 'ta', 'eb')))):
|
||||
if (!(in_array ($sort, array ('td', 'eg', 'ta', 'eb'))))
|
||||
$sort = 'td';
|
||||
endif;
|
||||
else:
|
||||
}
|
||||
else
|
||||
$sort = 'td';
|
||||
endif;
|
||||
|
||||
// 画像のディレクトリを開く.
|
||||
$dir = 'image/';
|
||||
$dir = './images/';
|
||||
$handle = opendir ($dir);
|
||||
|
||||
// MySQL 宣言
|
||||
@@ -33,28 +31,15 @@ $mysqli = set_mysql ('miteruzo_bbs');
|
||||
|
||||
$mysqli -> set_charset ('utf8');
|
||||
|
||||
if ($result = $mysqli -> query ("SELECT * FROM threads WHERE id = $thread")):
|
||||
if ($result = $mysqli -> query ("SELECT * FROM threads WHERE id = $thread"))
|
||||
{
|
||||
$row = $result -> fetch_assoc ();
|
||||
|
||||
$title = $row['title'];
|
||||
$explain = $row['explain'];
|
||||
|
||||
$result -> close ();
|
||||
endif;
|
||||
|
||||
if (isset ($_GET['id'])
|
||||
&& isset ($_GET['evaluate'])
|
||||
&& (($_GET['evaluate'] == 'good') || ($_GET['evaluate'] == 'bad'))):
|
||||
$mysqli -> query ("
|
||||
UPDATE
|
||||
responses
|
||||
SET
|
||||
{$_GET['evaluate']} = {$_GET['evaluate']} + 1
|
||||
WHERE
|
||||
(thread_id = $thread) AND (response_id = {$_GET['id']})");
|
||||
|
||||
header ("Location: ./?thread=$thread&sort=$sort");
|
||||
endif;
|
||||
}
|
||||
|
||||
require_once './forms/index.frm.php';
|
||||
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
require_once './db_connection.php';
|
||||
|
||||
|
||||
$files = glob ('./migrations/*.sql');
|
||||
|
||||
foreach ($files as $file)
|
||||
$__db_connection -> query (file_get_contents ($file));
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
CREATE TABLE `miteruzo_bbs`.`threads` ( `id` INT NOT NULL AUTO_INCREMENT , `title` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL , `explain` MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL , `latest` DATETIME NOT NULL , `length` INT NOT NULL DEFAULT '0' , PRIMARY KEY (`id`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
CREATE TABLE `miteruzo_bbs`.`responses` ( `thread_id` INT NOT NULL , `response_id` INT NOT NULL , `name` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '名なしさん' , `message` MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL , `date` DATETIME NOT NULL , `image` VARCHAR(31) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL , `held` TINYINT NOT NULL DEFAULT '0' , `deleted` TINYINT NOT NULL DEFAULT '0' , `pass` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL , `good` INT NOT NULL DEFAULT '0' , `bad` INT NOT NULL DEFAULT '0' , PRIMARY KEY (`thread_id`, `response_id`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
define ('SAVE_DIR', 'draft/');
|
||||
|
||||
$json = getParamJSON ();
|
||||
|
||||
if (!(isset ($json['data'])))
|
||||
{
|
||||
sendResult (false, 'Empty query Parameter: data');
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (!(preg_match ('/^data:image\/png;base64,/', $json['data'])))
|
||||
{
|
||||
sendResult (false, 'Not Allow data type: data');
|
||||
exit (1);
|
||||
}
|
||||
|
||||
$data = $json['data'];
|
||||
$data = str_replace ('data:image/png;base64,', '', $data);
|
||||
$data = str_replace (' ', '+', $data);
|
||||
$image = base64_decode ($data);
|
||||
|
||||
$file = sprintf ('%s.png', $_GET['id']);
|
||||
$result = file_put_contents (SAVE_DIR . $file, $image, LOCK_EX);
|
||||
|
||||
setcookie ('backup', $file, time () + 60 * 60 * 24 * 30);
|
||||
|
||||
|
||||
function
|
||||
getParamJSON ()
|
||||
{
|
||||
$buff = file_get_contents ('php://input');
|
||||
$json = json_decode ($buff, true);
|
||||
|
||||
return ($json);
|
||||
}
|
||||
|
||||
function
|
||||
sendResult ($status, $data)
|
||||
{
|
||||
header ('Access-Control-Allow-Origin: *');
|
||||
header ('Access-Control-Allow-Headers: *');
|
||||
|
||||
echo json_encode(["status" => $status,
|
||||
"result" => $data]);
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
<?php
|
||||
require "${_SERVER['DOCUMENT_ROOT']}/database.php";
|
||||
|
||||
|
||||
$mysqli = set_mysql ('miteruzo_bbs');
|
||||
|
||||
$mysqli -> set_charset ('utf8');
|
||||
|
||||
$thread = $_GET['thread'];
|
||||
$id = $_GET['id'];
|
||||
$pass = $_GET['pass'];
|
||||
|
||||
if ($result = $mysqli -> query ("
|
||||
SELECT
|
||||
pass, image
|
||||
FROM
|
||||
responses
|
||||
WHERE
|
||||
(thread_id = {$_GET['thread']}) AND (response_id = {$_GET['id']})")):
|
||||
$row = $result -> fetch_assoc ();
|
||||
|
||||
if ($_GET['pass'] == $row['pass']):
|
||||
$mysqli -> query ("
|
||||
UPDATE
|
||||
responses
|
||||
SET
|
||||
deleted = 1
|
||||
WHERE
|
||||
(thread_id = $thread) AND (response_id = $id)");
|
||||
|
||||
echo "消しましたぁ!!<br /><br /><img style='border: solid 1px' src='image/{$row['image']}' />";
|
||||
else:
|
||||
echo '残念.<br />削除用パスワードが違います.';
|
||||
endif;
|
||||
|
||||
echo "<br /><br />5 秒後に元のページに戻ります.<br /><br /><a href='./?thread=$thread#$id'>戻らない場合はこちら</a><script>setTimeout (function () {window.location.href = `./?thread=$thread#$id`}, 5000)</script>";
|
||||
endif;
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
require "${_SERVER['DOCUMENT_ROOT']}/database.php";
|
||||
|
||||
|
||||
if (!(empty ($_POST['thread-name'])))
|
||||
{
|
||||
$explain = '<p>' . $_POST['thread-explain'] . '</p>';
|
||||
$explain = str_replace ("\n", '</p><p>', $explain);
|
||||
|
||||
$mysqli = set_mysql ('miteruzo_bbs');
|
||||
|
||||
$mysqli -> set_charset ('utf8');
|
||||
|
||||
$result = $mysqli -> query ('SELECT COUNT(*) FROM threads');
|
||||
$row = $result -> fetch_assoc ();
|
||||
$current = $row['COUNT(*)'];
|
||||
|
||||
$result -> close ();
|
||||
|
||||
$sql = "INSERT INTO threads (id, title, `explain`, latest, length) VALUES ($current, '{$_POST['thread-name']}', '$explain', '" . date ('Y-m-d H:i:s') . "', 0)";
|
||||
$mysqli -> query ($sql);
|
||||
/* $sql = "CREATE TABLE `miteruzo_bbs`.`thread_$current` (
|
||||
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'レス番',
|
||||
`name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '名なしさん' COMMENT '名前',
|
||||
`message` MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'レス',
|
||||
`date` DATETIME NOT NULL COMMENT '投稿日時',
|
||||
`image` VARCHAR( 31 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '画像 URL',
|
||||
`held` TINYINT( 1 ) NOT NULL DEFAULT '0' COMMENT '保留',
|
||||
`deleted` TINYINT( 1 ) NOT NULL DEFAULT '0' COMMENT '削除済',
|
||||
`pass` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '削除用パスワード',
|
||||
`good` INT( 11 ) NOT NULL DEFAULT '0' COMMENT '高評価数',
|
||||
`bad` INT( 11 ) NOT NULL DEFAULT '0' COMMENT '低評価数',
|
||||
INDEX ( `date` )
|
||||
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci"; */
|
||||
$mysqli -> query ($sql);
|
||||
|
||||
$mysqli -> close ();
|
||||
}
|
||||
|
||||
header ("location: ./?thread=$current");
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
<?php
|
||||
require "${_SERVER['DOCUMENT_ROOT']}/database.php";
|
||||
|
||||
|
||||
define ('SAVE_DIR', 'image/'); // 保存ディレクトリ定義
|
||||
|
||||
$thread = $_GET['thread'];
|
||||
file_put_contents ('log.txt', $thread);
|
||||
|
||||
$json = getParamJSON (); // JSON パラメタ
|
||||
|
||||
// JSON に data メトッドがなぃ場合
|
||||
if (!(isset ($json['data']))):
|
||||
sendResult (false, 'Empty query Parameter: data');
|
||||
exit (1);
|
||||
endif;
|
||||
|
||||
// 適切な画像形式が示されてゐなぃ場合
|
||||
if (!(preg_match ('/^data:image\/png;base64,/', $json['data']))):
|
||||
sendResult (false, 'Not Allow data type: data');
|
||||
exit (1);
|
||||
endif;
|
||||
|
||||
// 画像ディタをデコゥド
|
||||
$data = $json['data'];
|
||||
$data = str_replace ('data:image/png;base64,', '', $data);
|
||||
$data = str_replace (' ', '+', $data);
|
||||
$image = base64_decode ($data);
|
||||
|
||||
$file = sprintf ('%s.png', uniqid ()); // ファイル名をタイマを基準に設定
|
||||
file_put_contents (SAVE_DIR . $file, $image, LOCK_EX); // 画像をファイルに保存
|
||||
|
||||
$mysqli = set_mysql ('miteruzo_bbs'); // ディタ・べィス指定
|
||||
|
||||
$mysqli -> set_charset ('utf8');
|
||||
|
||||
// スレのレス数を取得し,適切なレス番を設定する.
|
||||
if ($result = $mysqli -> query ("
|
||||
SELECT
|
||||
length
|
||||
FROM
|
||||
threads
|
||||
WHERE
|
||||
id = $thread")):
|
||||
$row = $result -> fetch_assoc ();
|
||||
|
||||
$id = $row['length'] + 1;
|
||||
|
||||
$result -> close (); // クヱリ結果を閉ぢる.
|
||||
endif;
|
||||
|
||||
if ($_GET['held']):
|
||||
mb_language ('Japanese');
|
||||
mb_internal_encoding ('UTF-8');
|
||||
mb_send_mail ('matuda.miteruzo@gmail.com', 'キケッツ掲示板の画像確認しろ!', '何か,保留中なうみ.', '謎');
|
||||
endif;
|
||||
|
||||
// 投稿情報に従ひ,ディタ・ベィスを更新
|
||||
$sql = "INSERT INTO
|
||||
responses (thread_id, response_id, name, pass, message, date, image, held,
|
||||
deleted)
|
||||
VALUES
|
||||
($thread, $id, '" . (($_GET['name'] == '') ? '名なしさん' : $_GET['name']) . "',
|
||||
" . (($_GET['pass'] == '') ? "NULL" : "'{$_GET['pass']}'") . ", '', '" . date ('Y-m-d H:i:s') . "', '$file', {$_GET['held']}, 0)";
|
||||
$mysqli -> query ($sql);
|
||||
$mysqli -> query ("
|
||||
UPDATE
|
||||
threads
|
||||
SET
|
||||
length = $id, latest = '" . date ('Y-m-d H:i:s') . "' WHERE id = $thread");
|
||||
|
||||
$mysqli -> close (); // ディタ・べィスを閉ぢる.
|
||||
|
||||
unlink ('draft/' . $_COOKIE['backup']);
|
||||
setcookie ('backup', '', 0);
|
||||
|
||||
|
||||
/*
|
||||
* フェッチ内容から JSON パラメタを取得する.
|
||||
*
|
||||
* 戻り値は,取得した JSON パラメタ.
|
||||
*/
|
||||
function
|
||||
getParamJSON ()
|
||||
{
|
||||
$buff = file_get_contents ('php://input');
|
||||
$json = json_decode ($buff, true);
|
||||
|
||||
return ($json);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* クヱリ送信者に,結果を返す.
|
||||
* $status:結果フラグ,$data:返信ディタ
|
||||
*
|
||||
* 戻り値は,なし.
|
||||
*/
|
||||
function
|
||||
sendResult ($status, $data)
|
||||
{
|
||||
header ('Access-Control-Allow-Origin: *');
|
||||
header ('Access-Control-Allow-Headers: *');
|
||||
|
||||
echo json_encode(["status" => $status,
|
||||
"result" => $data]);
|
||||
}
|
||||
|
||||
+6
-4
@@ -116,7 +116,7 @@ if (imageUrl != '')
|
||||
reDraw ();
|
||||
}, false);
|
||||
|
||||
imgData.src = `//miteruzo.ml/kekec/bbs/draft/${imageUrl}`;
|
||||
imgData.src = `./draft/${imageUrl}`;
|
||||
}
|
||||
|
||||
let nowDraw = false; // 描画フラグ
|
||||
@@ -219,11 +219,11 @@ SendToServer (backup)
|
||||
mode: 'cors'};
|
||||
|
||||
if (backup)
|
||||
await SendServer (`backup.php?id=${uniqId}`, param);
|
||||
await SendServer (`/modules/backup.php?id=${uniqId}`, param);
|
||||
else
|
||||
{
|
||||
// SendServer (`upload.php?name=${userName.value}&pass=${password.value}&msg=${message.value}`, param);
|
||||
await SendServer (`upload.php${window.location.search}&name=${userName.value}&pass=${password.value}&held=${held ? 1 : 0}&uniqid=${uniqId}`, param);
|
||||
await SendServer (`/modules/upload.php${window.location.search}&name=${userName.value}&pass=${password.value}&held=${held ? 1 : 0}&uniqid=${uniqId}`, param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -872,7 +872,7 @@ deletePostReally ()
|
||||
{
|
||||
const searchParams = new URLSearchParams (window.location.search);
|
||||
|
||||
window.location.href = `./delete.php?thread=${searchParams.get (
|
||||
window.location.href = `./modules/delete.php?thread=${searchParams.get (
|
||||
'thread')}&id=${delId.value}&pass=${delPass.value}`;
|
||||
}
|
||||
else
|
||||
@@ -1043,5 +1043,7 @@ delLayer (lyr, fromHistory)
|
||||
layer: lyr};
|
||||
++count;
|
||||
}
|
||||
|
||||
reDraw ();
|
||||
}
|
||||
|
||||
|
||||
+136
@@ -1,3 +1,139 @@
|
||||
html
|
||||
{
|
||||
font-size: 24px;
|
||||
font-family: "Helvetica Neue", "Helvetica", "Segoe UI", "Arial",
|
||||
"JPAGothic", "IPAGothic",
|
||||
"Hiragino Sans", "Hiragino Kaku Gothic ProN",
|
||||
"Yu Gothic", "Meiryo", "MS Gothic",
|
||||
sans-serif;
|
||||
width: 960px;
|
||||
text-align: justify;
|
||||
margin: auto;
|
||||
punctuation-trim: adjacent;
|
||||
}
|
||||
|
||||
em
|
||||
{
|
||||
font-style: normal;
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-family: "Helvetica Neue", "Helvetica", "Segoe UI", "Arial",
|
||||
"JPAGothic", "IPAGothic",
|
||||
"Hiragino Sans", "Hiragino Kaku Gothic ProN",
|
||||
"Yu Gothic", "Meiryo", "MS Gothic",
|
||||
sans-serif;
|
||||
}
|
||||
|
||||
.miteruzochan
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
section
|
||||
{
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
|
||||
p:not(.noindent)
|
||||
{
|
||||
text-indent: 1em;
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
margin: 0 2em;
|
||||
line-height: 3em;
|
||||
}
|
||||
|
||||
.copy
|
||||
{
|
||||
font-size: 200%;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
font-family: "Times New Roman",
|
||||
"JPAMincho", "IPAMincho", "Hiragino Mincho ProN",
|
||||
"Yu Mincho", "MS Mincho",
|
||||
serif;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
footer
|
||||
{
|
||||
font-size: 16px;
|
||||
color: dimgray;
|
||||
text-align: center;
|
||||
line-height: 2em;
|
||||
padding-bottom: 24px;
|
||||
}
|
||||
|
||||
footer > div
|
||||
{
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.copyright
|
||||
{
|
||||
text-align: center;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
footer a
|
||||
{
|
||||
color: darkslategray;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.paragraph
|
||||
{
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
table
|
||||
{
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
tr:nth-child(odd)
|
||||
{
|
||||
background-color: lightgray;
|
||||
}
|
||||
|
||||
th, td
|
||||
{
|
||||
padding: 8px 16px;
|
||||
}
|
||||
|
||||
#title
|
||||
{
|
||||
text-align: left;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#translate
|
||||
{
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
width: 288px;
|
||||
}
|
||||
|
||||
header
|
||||
{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
button, input
|
||||
{
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
body
|
||||
{
|
||||
background-color: aquamarine;
|
||||
|
||||
新しい課題から参照
ユーザをブロックする