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

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

Колориметрия и печать: технологии
 
Текущее время: 20:08, Вс, 19 авг 2018

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




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

Зарегистрирован: 16:58, Ср, 18 авг 2004
Сообщения: 799
Откуда: Москва
В виде мода такую несложную задачку оформлять ни к чему, просто короткий скриптик общения с базой форума на 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" чтобы не склонять "загрузки" и "загрузок". Но никто не мешает вам усложнить скрипт и просклонять числительные если есть желание, мне лень.

В форуме к файлу 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.


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

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


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

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


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

Перейти: 

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