Колориметрия, печать и препресс: технологии Главная Форум Галерея Контакты Download Статьи
Сражаясь неустанно,
доживём мы, Санчо,
до Золотого века!
 

Форум колористов и полиграфистов

Колориметрия и печать: технологии
 
Текущее время: 18:43, Сб, 28 мар 2020

Часовой пояс: UTC+03:00


Новые
ответы
в темах:



Начать новую тему  Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 20:09, Пн, 02 апр 2018 
Не в сети
Администратор

Зарегистрирован: 16:58, Ср, 18 авг 2004
Сообщения: 931
Откуда: Москва
В виде мода такую несложную задачку оформлять ни к чему, просто короткий скриптик общения с базой форума на PHP и SQL запросами.
Итак, обычная ссылка на вложение в форуме выглядит как-то так:
<a href="/forum/download/file.php?id=374">Link</a>
Дополним эту и другие нужные ссылки примерно таким образом:
<a href="/forum/download/file.php?id=374">Link</a> (<?php echo($downarr[374]);?> downloads)
Здесь в скобочках будет указано кол-во загрузок для указанного ID ссылки, в примере это 374.
Чтобы все это заработало - в начале страницы (или отдельном файле - об этом ниже) надо разместить следующий код PHP, создающий нам массив $downarr, в котором идентификатор элемента массива - ID-вложения, а значение элемента массива - кол-во загрузок этого вложения:
<?php
$host="localhost";
$user="user_bd";
$pass="pass";
$db_name="forum_bd";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
mysql_query("SET NAMES 'utf8'",$link);
$results = mysql_query("SELECT `attach_id`, `download_count` FROM `table_prefix_attachments`",$link);
while ($resultq = mysql_fetch_array($results)) {
	$downarr[$resultq['attach_id']] = $resultq['download_count'];
}
mysql_free_result($results);
?>
Разберем по строкам, что мы сделали:

$host - указали хост, как в файле форума config.php. Если используется особый порт - пишем через двоеточие localhost:port.

$user, $pass, $db_name - логин, пароль и имя базы данных, как в файле форума config.php.

$link=mysql_connect($host,$user,$pass); - производим коннект к базе данных.

mysql_query("SET NAMES 'utf8'",$link); - устанавливаем кодировку чтения юникод. Строку можно пропустить, но пусть будет на всякий.

$results = mysql_query("SELECT `attach_id`, `download_count` FROM `table_prefix_attachments`",$link); - создаем SQL-запрос вот именно с такими необычными кавычками, где из таблицы `table_prefix_attachments` мы считываем данные по `attach_id` и `download_count`. Не забудьте в имени таблицы attachments указать префикс вашей таблицы в базе, чтобы не ошибиться - скачайте себе структуру базы через бэкап форума и найдите в ней attachments.

while ($resultq = mysql_fetch_array($results)) { - создаем цикл обработки полученных из базы данных в удобный вид массива PHP.

$downarr[$resultq['attach_id']] = $resultq['download_count']; - по циклу создаем элементы массива $downarr с идентификатором attach_id и значением download_count.

} - завершаем цикл.

mysql_free_result($results); - очищаем память от массива обращения к базе SQL. Необязательная строка, но не повредит.


Собственно, вот и все. Пример работы скрипта можно посмотреть на странице https://cielab.xyz/profiles/ где собраны ссылки на некоторые вложения в форум.
Я написал на английском "downloads" чтобы не склонять "загрузки" и "загрузок". Но никто не мешает вам усложнить скрипт и просклонять числительные если есть желание, мне лень.

Аналогично можно запросить у базы данных например количество посещений темы: опрашиваем таблицу `table_prefix_topics` для получения значений `topic_id` и `topic_views`. Снова не забываем заменить table_prefix на свой префикс таблицы в базе данных.

В форуме к файлу config.php установлены права 0644 для обеспечения безопасности базы данных. Проследите, чтобы и у вашего файла с представленным скриптом были права не выше 0644. Так же чтобы совсем попрятать все концы в воду рекомендуют ошибки PHP коли случатся не выводить на страницу, а выводить в отдельный хорошо запрятанный лог ошибок PHP на сайте (не забывайте его читать и исправлять ошибки).
Для этого в .htaccess сайта вносим примерно такой код:
# отключаем вывод ошибок пользователям
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# заносим ошибки в журнал
php_flag log_errors on
php_value error_log /путь от корня/имя файла лога
И устанавливаем атрибуты для записи в файл лога например 0666.

Безопасности не бывает много. Если остаются опасения за файл с логином к базе данных - можно еще глубже запрятать файл только скрипта в отдельную папку и вызывать по месту функцией include или include_once. А для этого файла скрипта установить все возможные запреты через .htaccess как это сделано в форуме phpbb.
В примере файл скрипта с именем config.php дополнительно защищен .htaccess. Впишите свое имя скрипта и все:
<IfModule mod_version.c>
	<IfVersion < 2.4>
		<Files "config.php">
			Order Allow,Deny
			Deny from All
		</Files>
	</IfVersion>
	<IfVersion >= 2.4>
		<Files "config.php">
			Require all denied
		</Files>
	</IfVersion>
</IfModule>
<IfModule !mod_version.c>
	<IfModule !mod_authz_core.c>
		<Files "config.php">
			Order Allow,Deny
			Deny from All
		</Files>
	</IfModule>
	<IfModule mod_authz_core.c>
		<Files "config.php">
			Require all denied
		</Files>
	</IfModule>
</IfModule>
Но вообще прочитать файл php можно только реальным взломом, размещением своего скрипта на чужом сервере и так далее. И если про файл форума config.php известно всем хакерам, то название и размещение вашего файла скрипта с логином к базе вообще никому не известны и он соответственно будет еще менее уязвим, чем форумный config.php.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 106 гостей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

cron
© CIELab.XYZ
Создано на основе phpBB® Forum Software © phpBB Limited
Конференция запущена 18 августа 2004 года | Защищено от спама системой stopforumspam
Всего посещений - 6123651 | Всего за день - 29827 | Уникальных сегодня - 1796, вчера - 2027, позавчера - 2032