示例#1
0
<?php

require_once 'core.php';
session_start();
$nick = Onset::varidate($_POST['nick']);
$text = Onset::varidate($_POST['text']);
$sys = Onset::varidate($_POST['sys']);
$room = Onset::varidate($_SESSION['onset_room']);
$id = Onset::varidate($_SESSION['onset_id']);
try {
    if ($text === false || $nick === false || $room === false || $sys === false || $id === false) {
        throw new Exception('不正なアクセス:invalid_access');
    }
    $_dir = RoomSavepath . $room;
    if (MaxNick <= mb_strlen($nick)) {
        throw new Exception('名前が長すぎます (' . mb_strlen($nick) . ')');
    }
    if (MaxText <= mb_strlen($text)) {
        throw new Exception('テキストが長すぎます (' . mb_strlen($text) . ')');
    }
    $diceRes = Onset::diceroll($text, $sys);
    $jsonData = (object) ['time' => microtime(true), 'nick' => $nick, 'text' => $text, 'dice' => $diceRes, 'id' => $id];
    $chatLog = json_decode(file_get_contents($_dir . '/log.json'));
    $chatLog[] = $jsonData;
    file_put_contents($_dir . '/log.json', json_encode($chatLog), LOCK_EX);
    $_SESSION['onset_nick'] = $nick;
} catch (Exception $e) {
    echo Onset::jsonMessage($e->getMessage(), -1);
    die;
}
echo Onset::jsonMessage('ok');
示例#2
0
文件: read.php 项目: kiridaruma/Onset
<?php

require_once __DIR__ . '/core.php';
session_start();
$time = Onset::varidate($_POST['time']);
$room = Onset::varidate($_SESSION['onset_room']);
if ($time === false || $room === false) {
    echo Onset::jsonMessage("不正なアクセス", -1);
    die;
}
$dir = RoomSavepath . $room;
if (!file_exists($dir)) {
    echo Onset::jsonMessage("部屋が存在しません", -1);
    die;
}
$chatLog = json_decode(file_get_contents($dir . "/log.json"));
$cuttedLog = Onset::searchLog($chatLog, $time);
echo Onset::jsonMessage("ok", 1, $cuttedLog);
$tmp = $dir . "/connect/" . $_SESSION['onset_id'];
file_put_contents($tmp, time() . "\n" . $_SESSION['onset_nick'], LOCK_EX);
clearstatcache();
示例#3
0
<?php

require_once __DIR__ . '/core.php';
$nick = Onset::varidate($_POST['nick']);
$pass = Onset::varidate($_POST['pass']);
$room = Onset::varidate($_POST['room']);
try {
    if ($nick === false || $pass === false || $room === false) {
        throw new Exception('空欄があります');
    }
    if (MaxNick <= mb_strlen($nick)) {
        throw new Exception('名前が長すぎます (' . mb_strlen($nick) . ')');
    }
    $roomlist = Onset::getRoomlist();
    $room = htmlspecialchars($room, ENT_QUOTES);
    if (!isset($roomlist->{$room})) {
        throw new Exception('存在しない部屋です');
    }
    $roompath = $roomlist->{$room}->path;
    $dir = RoomSavepath;
    $_dir = $dir . $roompath;
    $hash = file_get_contents($_dir . '/pass.hash');
    if (!password_verify($pass, $hash) && Pass != $pass) {
        throw new Exception('パスワードが間違っています');
    }
} catch (Exception $e) {
    echo Onset::jsonMessage($e->getMessage(), -1);
    die;
}
$id = ip2long($_SERVER['REMOTE_ADDR']) + mt_rand();
session_start();
示例#4
0
<?php

require_once __DIR__ . '/core.php';
session_start();
$room = Onset::varidate($_SESSION['onset_room']);
$id = Onset::varidate($_SESSION['onset_id']);
$lock = Onset::varidate($_POST['lock']);
if (!$room || !$id) {
    echo "不正なアクセス";
    die;
}
$dir = RoomSavepath . $room . "/connect/";
$arr = scandir($dir);
if ($lock === 'unlock') {
    file_put_contents($dir . $id, time() . "\n" . $_SESSION['onset_nick'], LOCK_EX);
    die;
}
file_put_contents($dir . $id, time() . "\n" . $_SESSION['onset_nick'] . "\nlocked", LOCK_EX);
$ret = "";
$num = 0;
foreach ($arr as $value) {
    if ($value == "." || $value == "..") {
        continue;
    }
    $arr = explode("\n", file_get_contents($dir . $value));
    $time = $arr[0];
    $nick = $arr[1];
    $isLock = count($arr) > 2 ? $arr : '';
    if ($time + 5 < time() && $isLock !== 'locked') {
        unlink($dir . $value);
        continue;
示例#5
0
<?php

require_once __DIR__ . '/core.php';
session_start();
try {
    if ($_POST['rand'] != $_SESSION['onset_rand']) {
        throw new Exception('不正なアクセス。');
    }
    $room = Onset::varidate($_POST['room']);
    $pass = Onset::varidate($_POST['pass']);
    if ($room === false || $pass === false) {
        throw new Exception('ルーム名かパスワードがセットされていません');
    }
    $room = htmlspecialchars($room, ENT_QUOTES);
    $roomlist = Onset::getRoomlist();
    if (!isset($roomlist->{$room})) {
        throw new Exception('部屋が存在しません');
    }
    $roompath = $roomlist->{$room}->path;
    Onset::removeRoomData(RoomSavepath . $roompath . "/");
    unset($roomlist->{$room});
    if (!Onset::saveRoomlist($roomlist)) {
        throw new Exception('部屋インデックスデータの保存に失敗しました');
    }
} catch (Exception $e) {
    echo Onset::jsonMessage($e->getMessage(), -1);
    die;
}
echo Onset::jsonMessage('ok');