Вход Регистрация
Файл: project.php
Строк: 161
<?php
require '__core/inc.php';

$p_id $_GET['id'];
$result $dbh->prepare("SELECT * FROM `projects` WHERE `p_id` = :p_id");
$result->bindValue(":p_id"$p_idPDO::PARAM_INT);
$result->execute();
$project $result->fetch(PDO::FETCH_ASSOC);

if (empty(
$project)) {
    
header("Location: /index.php");
    exit;
}

/* Сканируем скриншоты */
$path 'screen/' $project['p_id'];
if (
is_dir($path)) {
    
$data scandir($path);
    unset(
$data[0], $data[1]);
} else 
$data = array();

# Проверка на повторный отзыв
$result $dbh->prepare("SELECT * FROM `project_comments` WHERE `c_p_id` = :p_id && (c_ip = :ip && c_uagent = :uagent)");
$result->bindValue(":p_id"$p_idPDO::PARAM_INT);
$result->bindValue(":ip"$_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
$result->bindValue(":uagent"$_SERVER['HTTP_USER_AGENT'], PDO::PARAM_STR);
$result->execute();
$check $result->rowCount();

if(!empty(
$_POST) && empty($check)) {
    
$name trim(htmlspecialchars($_POST['name']));
    
$text trim(htmlspecialchars($_POST['text']));
    
$rating abs((int)$_POST['rating']);
    
$err = array();
    
    if (empty(
$name)) {
        
$err[] = 'Заполните поле "Ваше имя"';
    }
    
    if (empty(
$text)) {
        
$err[] = 'Заполните поле "Комментарий"';
    }
    
    if (!
in_array($rating, array(1,2,3,4,5))) {
        
$err[] = 'Не выбран рейтинг';
    }
    
    if (!empty(
$text) && strlen($text) < 40) {
        
$err[] = 'Текст комментария должен состоять минимум из 40 символов';
    }
    
    if (!empty(
$name) && strlen($name) < 2) {
        
$err[] = 'Имя должно состоять минимум из 2 символов';
    }
    
    
/* Проверка 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)) {
        
$result $dbh->prepare("INSERT INTO project_comments (c_name, c_text, c_rating, c_date, c_p_id, c_ip, c_uagent) VALUES (:name, :text, :rating, NOW(), :p_id, :ip, :uagent)");
        
$result->bindValue(":name"$namePDO::PARAM_STR);
        
$result->bindValue(":text"$textPDO::PARAM_STR);
        
$result->bindValue(":rating"$ratingPDO::PARAM_INT);
        
$result->bindValue(":p_id"$p_idPDO::PARAM_INT);
        
$result->bindValue(":ip"$_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
        
$result->bindValue(":uagent"$_SERVER['HTTP_USER_AGENT'], PDO::PARAM_STR);
        
$result->execute();
        
$_SESSION['msg'] = 'Отзыв успешно добавлен';
        
header("Location: /project/" $p_id);
        exit;        
    }
}

if (!empty(
$_GET['delete']) && !empty($_SESSION['admin'])) {
    
$com_id $_GET['delete'];
    
    
$sql "DELETE FROM `project_comments` WHERE `c_id` = :c_id";
    
$result $dbh->prepare($sql);
    
$result->bindValue(":c_id"$com_idPDO::PARAM_INT);
    
$result->execute(); 
    
header("Location: /project/" $p_id);
    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"$ipPDO::PARAM_STR);
    
$result->execute(); 
    
header("Location: /project/" $p_id);
    exit;
}

head(array('title' => htmlspecialchars($project['p_name']) . ' | Портфолио | Миледи'));

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">
        <?= htmlspecialchars($project['p_name']) ?>
    </div>
    <div id="thumbnails">
    <b>Скриншоты:</b><br />
    <?php if (!empty($project['p_screen']) && @is_file($path '/' $project['p_screen'])): ?>
        <a href="/<?= $path ?>/<?= $project['p_screen'?>"><img src="/<?= $path ?>/<?= $project['p_screen'?>" alt="" width="160px"/></a><br />
    <?php endif; ?>
    <?php if (count($data)): ?>
        <?php foreach ($data as $screen): ?>
            <?php if ($project['p_screen'] != $screen): ?>
            <a href="/<?= $path ?>/<?= $screen ?>"><img src="/<?= $path ?>/<?= $screen ?>" alt="" width="80px"/></a>
            <?php endif; ?>
        <?php endforeach; ?>
    <?php endif; ?>
    </div>
    <br /><br />
    <b>Дополнительные файлы:</b><br />
    <?php
    $result 
$dbh->prepare("SELECT * FROM `files` WHERE `parent` = :p_id");
    
$result->bindValue(":p_id"$p_idPDO::PARAM_INT);
    
$result->execute();
    
$files $result->fetchAll(PDO::FETCH_ASSOC);
    
?>
        
    <?php foreach ($files AS $file): ?>
            <b>[<?= $file['f_ext'?>]</b> <a href="/download/<?= $p_id ?>/<?= $file['f_id'?>"><?= $file['f_name'?></a> (<?= formatSize($file['f_size']) ?>) (<?= $file['f_loads_count']?> скачиваний)<br />
    <?php endforeach; ?>
    <br />
    <ul>
        <li>Название: <b><?= htmlspecialchars($project['p_name']) ?></b></li>
        <li>Описание: <b><?= nl2br(htmlspecialchars($project['p_desc'])) ?></b></li>
        <li>Сроки выполнения: <b><?= htmlspecialchars($project['p_ltime']) ?></b></li>
        <li>Время добавления: <b><?= $project['p_date'?></b></li>
    </ul>
    <?php if (empty($check)): ?>
    <form method="POST">
    <ul>
        <li><label for="name">Ваше имя:</label></li>
        <li><input id="name" name="name" type="text" value="<?= (isset($_POST['name']) ? htmlspecialchars($_POST['name']) : NULL?>"/></li>
        <li><label for="rating_1">1</label><input id="rating_1" name="rating" value="1" type="radio" <?= (isset($_POST['rating']) && $_POST['rating'] == 'checked' NULL?>/></li>
        <li><label for="rating_2">2</label><input id="rating_2" name="rating" value="2" type="radio" <?= (isset($_POST['rating']) && $_POST['rating'] == 'checked' NULL?>/></li>
        <li><label for="rating_3">3</label><input id="rating_3" name="rating" value="3" type="radio" <?= (isset($_POST['rating']) && $_POST['rating'] == 'checked' NULL?>/></li>
        <li><label for="rating_4">4</label><input id="rating_4" name="rating" value="4" type="radio" <?= (isset($_POST['rating']) && $_POST['rating'] == 'checked' NULL?>/></li>
        <li><label for="rating_5">5</label><input id="rating_5" name="rating" value="5" type="radio" <?= (isset($_POST['rating']) && $_POST['rating'] == 'checked' NULL?>/></li>
        <li><label for="text">Комментарий:</label></li>
        <li><textarea id="text" name="text"><?= (isset($_POST['text']) ? htmlspecialchars($_POST['text']) : NULL?></textarea></li>
        <li><button>Оценить</button></li>
    </ul>
    </form>
    <?php endif; ?>
</div>
<div class="content">
    <br /><b>Отзывы к работе:</b><br />
    <ul>
    <?php
    $total 
$dbh->query("SELECT * FROM `project_comments` WHERE `c_p_id` = '{$p_id}'")->rowCount();
    
    
$p = new Pagination;
    
$p->sett($total$config['other']['perpage']);
        
    
$sql $dbh->query("SELECT * FROM `project_comments` WHERE `c_p_id` = '{$p_id}'" $p->limit());
    
$data $sql->fetchAll(PDO::FETCH_ASSOC);
    if (
$total):
        foreach (
$data as $comment):
        
?>
            <li>
                <b><?= htmlspecialchars($comment['c_name']) ?></b> | <?= ratingGet($comment['c_rating']) ?><br />
                <?= nl2br(htmlspecialchars($comment['c_text'])) ?>
                <?php if (isset($_SESSION['admin'])): ?>
                    <br />
                    <a href="/project/<?= $p_id ?>?delete=<?= $comment['c_id'?>">Удалить</a><br />
                    <b>IP:</b> <?= $comment['c_ip'?> <a href="/project/<?= $p_id ?>?banip=<?= $comment['c_ip'?>">[В ЧС]</a><br />
                    <b>uAgent:</b> <?= $comment['c_uagent'?><br />
                <?php endif; ?>
            </li>
        <?php
        
endforeach;
        echo 
$p->get();
    else:
    
?>
        <li>Еще никто не оценивал</li>    
    <?php endif; ?>
    </ul>
</div>
<div class="nav">
    <ul>
        <li><a href="/category/<?= $project['p_cid'?>">В категорию</a></li>
        <li><a href="/">Главная</a></li>
    </ul>
</div>
<?php
footer
();
?>
Онлайн: 0
Реклама