Файл: comments.php
Строк: 83
<?php
require '__core/inc.php';
head(array('title' => 'Отзывы | Миледи'));
if (!empty($_POST)) {
    $com_name = trim($_POST['com_name']);
    $com_text = trim($_POST['com_text']);
    $com_type = trim($_POST['com_type']);
    
    $err = array();
    if (empty($com_name)) {
        $err[] = 'Заполните поле "Ваше имя"';
    }
    if (empty($com_text)) {
        $err[] = 'Заполните поле "Отзыв"';
    }
    
    /* Проверка IP в чёрном списке */
    $sql = "SELECT * FROM `blacklist` WHERE `ip` = :ip";
    $result = $dbh->prepare($sql);
    $result->bindValue(":ip", $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
    $result->execute(); 
    $check = $result->fetch(PDO::FETCH_ASSOC);
    if (!empty($check)) {
        $err[] = 'Ваш IP находится в черном списке. Вы не можете писать отзывы.';
    }
    
    if (empty($err)) {
        $sql = "
        INSERT INTO `comments` (`com_name`, `com_text`, `com_type`, `com_date`, `com_uagent`, `com_ip`)
        VALUES (:com_name, :com_text, :com_type, NOW(), :com_uagent, :com_ip)
        ";
        $result = $dbh->prepare($sql);
        $result->bindValue(":com_name", $com_name, PDO::PARAM_STR);
        $result->bindValue(":com_text", $com_text, PDO::PARAM_STR);
        $result->bindValue(":com_type", $com_type, PDO::PARAM_INT);
        $result->bindValue(":com_uagent", $_SERVER['HTTP_USER_AGENT'], PDO::PARAM_STR);
        $result->bindValue(":com_ip", $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
        $result->execute();
        $_SESSION['msg'] = 'Отзыв успешно добавлен';
        header("Location: /comments");
        exit;     
    }
}
if (!empty($_GET['delete']) && !empty($_SESSION['admin'])) {
    $com_id = $_GET['delete'];
    
    $sql = "DELETE FROM `comments` WHERE `com_id` = :com_id";
    $result = $dbh->prepare($sql);
    $result->bindValue(":com_id", $com_id, PDO::PARAM_INT);
    $result->execute(); 
    header("Location: /comments");
    exit;
}
if (!empty($_GET['banip']) && !empty($_SESSION['admin'])) {
    $ip = $_GET['banip'];
    
    $sql = "INSERT INTO `blacklist` (`ip`) VALUES (:ip)";
    $result = $dbh->prepare($sql);
    $result->bindValue(":ip", $ip, PDO::PARAM_STR);
    $result->execute(); 
    header("Location: /comments");
    exit;
}
get_msg();
if (!empty($err)):
?>
    <div class="error">
        <ul>
            <?php foreach ($err as $error): ?>
                <li><?= $error ?></li>
            <?php endforeach; ?>
        </ul>
    </div>
<?php 
endif;
?>
<div class="content">
    <div class="title">Отзывы</div>
    <ul>
    <?php
    $total = $dbh->query("SELECT * FROM `comments`")->rowCount();
    
    $p = new Pagination;
    $p->sett($total, $config['other']['perpage']);
    
    $query = "SELECT * FROM `comments` ORDER BY `com_id` DESC " . $p->limit();
    $sql = $dbh->query($query);
    $data = $sql->fetchAll(PDO::FETCH_ASSOC);
    if ($total):
        foreach ($data as $comment):
        ?>
            <li>
                <b>Имя:</b> <?= htmlspecialchars($comment['com_name']) ?> <?= $comment['com_date'] ?><br />
                <b>Отзыв:</b> <?= nl2br(htmlspecialchars($comment['com_text'])) ?><br />
                <b><?= (empty($comment['com_type']) ? 'Положительный' : 'Отрицательный') ?></b><br />
                
                <?php if (isset($_SESSION['admin'])): ?>
                    <a href="/comments?delete=<?= $comment['com_id'] ?>">Удалить</a><br />
                    <b>IP:</b> <?= $comment['com_ip'] ?> <a href="/comments?banip=<?= $comment['com_ip'] ?>">[В ЧС]</a><br />
                    <b>uAgent:</b> <?= $comment['com_uagent'] ?><br />
                <?php endif; ?>
                <hr />
            </li>
        <?php
        endforeach;
        echo $p->get();
    else:
    ?>
        <li>Отзывы не добавлены</li>    
    <?php endif; ?>
    </ul>
</div>
<form method="POST">
    <ul>
        <li><label for="com_name">Ваше имя:</label></li>
        <li><input id="com_name" name="com_name" value="<?= (isset($_POST['com_name']) ? htmlspecialchars($_POST['com_name']) : NULL) ?>"/></li>
        <li><label for="com_text">Отзыв:</label></li>
        <li><textarea id="com_text" name="com_text"><?= (isset($_POST['com_text']) ? htmlspecialchars($_POST['com_text']) : NULL) ?></textarea></li>
        <li><select name="com_type"><option value="0">Положительный</option><option value="1" <?= (isset($_POST['com_type']) && $_POST['com_type'] == 1 ? 'selected' : NULL) ?>>Отрицательный</option></select></li>
        <li><img src="captcha.php" alt=""/><br /><label for="captcha">Введите проверочный код:</label><br /></li>
        <li><input id="captcha" name="captcha"/></li>
        <li><button>Добавить</button></li>
    </ul>
    
</form>
<?php
if (!empty($_SESSION['admin'])) {
    ?>
    <a href="/apanel/blacklist">Черный список</a>
    <?php
}
?>
<div class="nav">
    <ul>
        <li><a href="/">Главная</a></li>
    </ul>
</div>
<?php
footer();
?>