109 lines
3.0 KiB
PHP
109 lines
3.0 KiB
PHP
<?php
|
|
require "${_SERVER['DOCUMENT_ROOT']}/database.php";
|
|
|
|
|
|
define ('SAVE_DIR', "${_SERVER['DOCUMENT_ROOT']}/images/"); // 保存ディレクトリ定義
|
|
|
|
$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]);
|
|
}
|
|
|