Сегодня: 17:12:2025 Доброго вам дня!

I live ExBB and CMS Limbo!  I live ExBB and CMS Limbo!
Логин :
Пароль :
Регистрация?  Забыли пароль? 
 

Страниц (117): В начало « ... 23 24 25 26 [27] 28 29 30 31 ... » В конец

> Найдено сообщений: 1165
NordWest Отправлено: 18 февраля 2018 — 23:18 • Тема: Время последнего посещения • Форум: ExBB Community

Ответов: 3
Просмотров: 1956
Это дополнение добавит в админке в списке пользователей пункт "Время последнего посещения"

Дополнение создавалась для версии ExBB FM 1.0 Final и вероятно подойдёт для ExBB RC1.01


Открываем файл modules/memcontrol/language/russian/lang.php в котором ищем строку
code:
$this->LANG['RegedDate'] = 'Дата регистрации';

после которой вставляем строки
code:
$this->LANG['LastVisitDate'] = 'Последний визит';
$this->LANG['NeverLogged'] = 'Никогда';
NordWest Отправлено: 17 февраля 2018 — 18:34 • Тема: Примеры конверторов в UTF8 и обратно в Windows-1251 • Форум: Записная книжка PHP

Ответов: 0
Просмотров: 1721
PHP:
function cp1251_utf8($string)
{
$out = '';
for ($i = 0; $i<strlen($string); ++$i)
{
$ch = ord($string{$i});
if ($ch < 0x80)
{$out .= chr($ch);}
else
{
if ($ch >= 0xC0)
{
if ($ch < 0xF0) $out .= "\xD0".chr(0x90 + $ch - 0xC0); // А-Я, а-п (A-YA, a-p)
else $out .= "\xD1".chr(0x80 + $ch - 0xF0); // р-я (r-ya)
}
else
{
switch($ch)
{
case 0xA8: $out .= "\xD0\x81"; break; // YO
case 0xB8: $out .= "\xD1\x91"; break; // yo
// belorussain and ukrainian
case 0xA1: $out .= "\xD0\x8E"; break; // Ў (U)
case 0xA2: $out .= "\xD1\x9E"; break; // ў (u)
case 0xAA: $out .= "\xD0\x84"; break; // Є (e)
case 0xAF: $out .= "\xD0\x87"; break; // Ї (I..)
case 0xB2: $out .= "\xD0\x86"; break; // I (I)
case 0xB3: $out .= "\xD1\x96"; break; // i (i)
case 0xBA: $out .= "\xD1\x94"; break; // є (e)
case 0xBF: $out .= "\xD1\x97"; break; // ї (i..)
}
}
}
}
return $out;
}


PHP:
function toWindows1251($str) 
{
if (is_numeric($str)) {return $str;}
if (($converted = iconv('UTF-8', 'Windows-1251//IGNORE', $str)) !== false) {return $converted;}
static $utfToWin = array('Рђ'=>'А', 'Р‘'=>'Б', 'Р’'=>'В', 'Р“'=>'Г', 'Р”'=>'Д', 'Р•'=>'Е', 'РЃ'=>'Ё', 'Р–'=>'Ж', 'Р—'=>'З', 'Р?'=>'И', 'Р™'=>'Й', 'Рљ'=>'К', 'Р›'=>'Л',
'Рњ'=>'М', 'Рќ'=>'Н', 'Рћ'=>'О', 'Рџ'=>'П', 'Р '=>'Р', 'РЎ'=>'С', 'Рў'=>'Т', 'РЈ'=>'У', 'Р¤'=>'Ф', 'РҐ'=>'Х', 'Р¦'=>'Ц', 'Р§'=>'Ч', 'РЁ'=>'Ш',
'Р©'=>'Щ', 'РЄ'=>'Ъ', 'Р«'=>'Ы', 'Р¬'=>'Ь', 'Р­'=>'Э', 'Р®'=>'Ю', 'РЇ'=>'Я', 'Р†'=>'І', 'РЋ'=>'Ў', 'Тђ'=>'Ґ', 'Р„'=>'Є', 'Р‡'=>'Ї', 'Р°'=>'а',
'Р±'=>'б', 'РІ'=>'в', 'Рі'=>'г', 'Рґ'=>'д', 'Рµ'=>'е', 'С‘'=>'ё', 'Р¶'=>'ж', 'Р·'=>'з', 'Рё'=>'и', 'Р№'=>'й', 'Рє'=>'к', 'Р»'=>'л', 'Рј'=>'м',
'РЅ'=>'н', 'Рѕ'=>'о', 'Рї'=>'п', 'СЂ'=>'р', 'СЃ'=>'с', 'С‚'=>'т', 'Сѓ'=>'у', 'С„'=>'ф', 'С…'=>'х', 'С†'=>'ц', 'С‡'=>'ч', 'С€'=>'ш', 'С‰'=>'щ',
'СЉ'=>'ъ', 'С‹'=>'ы', 'СЊ'=>'ь', 'СЌ'=>'э', 'СЋ'=>'ю', 'СЏ'=>'я', 'С–'=>'і', 'Сћ'=>'ў', 'Т‘'=>'ґ', 'С”'=>'є', 'С—'=>'ї');
return strtr($str, $utfToWin);
}


PHP:
function toUtf8($str) 
{
if (is_numeric($str)) {return $str;}
if (($converted = iconv('Windows-1251', 'UTF-8', $str)) === false)
{
static $winToUtf = array('А'=>'Рђ', 'Б'=>'Р‘', 'В'=>'Р’', 'Г'=>'Р“', 'Д'=>'Р”', 'Е'=>'Р•', 'Ё'=>'РЃ', 'Ж'=>'Р–', 'З'=>'Р—', 'И'=>'Р?', 'Й'=>'Р™', 'К'=>'Рљ', 'Л'=>'Р›',
'М'=>'Рњ', 'Н'=>'Рќ', 'О'=>'Рћ', 'П'=>'Рџ', 'Р'=>'Р ', 'С'=>'РЎ', 'Т'=>'Рў', 'У'=>'РЈ', 'Ф'=>'Р¤', 'Х'=>'РҐ', 'Ц'=>'Р¦', 'Ч'=>'Р§', 'Ш'=>'РЁ',
'Щ'=>'Р©', 'Ъ'=>'РЄ', 'Ы'=>'Р«', 'Ь'=>'Р¬', 'Э'=>'Р­', 'Ю'=>'Р®', 'Я'=>'РЇ', 'І'=>'Р†', 'Ў'=>'РЋ', 'Ґ'=>'Тђ', 'Є'=>'Р„', 'Ї'=>'Р‡', 'а'=>'Р°',
'б'=>'Р±', 'в'=>'РІ', 'г'=>'Рі', 'д'=>'Рґ', 'е'=>'Рµ', 'ё'=>'С‘', 'ж'=>'Р¶', 'з'=>'Р·', 'и'=>'Рё', 'й'=>'Р№', 'к'=>'Рє', 'л'=>'Р»', 'м'=>'Рј',
'н'=>'РЅ', 'о'=>'Рѕ', 'п'=>'Рї', 'р'=>'СЂ', 'с'=>'СЃ', 'т'=>'С‚', 'у'=>'Сѓ', 'ф'=>'С„', 'х'=>'С…', 'ц'=>'С†', 'ч'=>'С‡', 'ш'=>'С€', 'щ'=>'С‰',
'ъ'=>'СЉ', 'ы'=>'С‹', 'ь'=>'СЊ', 'э'=>'СЌ', 'ю'=>'СЋ', 'я'=>'СЏ', 'і'=>'С–', 'ў'=>'Сћ', 'ґ'=>'Т‘', 'є'=>'С”', 'ї'=>'С—');
$converted = strtr($str, $winToUtf);
}
return $converted;
}
NordWest Отправлено: 16 февраля 2018 — 09:51 • Тема: Мод "Текстовое подтверждение при регистрации" • Форум: ExBB Community

Ответов: 0
Просмотров: 1171

Для установки необходимо:


1. открыть data/boardinfo.php

найти строку

PHP:
?>


перед которой вставить

PHP:
$this->exbb['text_confirmation'] = TRUE;



2. открыть admin/board_secure.tpl

найти строки

PHP:
<tr class="gen">
<td class="row1"><b>{$fm->LANG['AllowCodes']}</b> <img src="./im/images/help_ico.gif" alt='help' title ='{$fm->LANG['AllowCodesDesc']}'/></td>
<td class="row2"><input type="radio" name="new_exbb[b][exbbcodes]" value="yes" {$exbbcodes_yes} /> {$fm->LANG['Yes']}&nbsp;&nbsp;<input type="radio" name="new_exbb[b][exbbcodes]" value="no" {$exbbcodes_no} /> {$fm->LANG['No']}</td>
</tr>



добавить ниже строки


PHP:
<tr class="gen">
<td class="row1"><b>{$fm->LANG['AllowTextConf']}</b> <img src="./im/images/help_ico.gif" alt='help' title ='{$fm->LANG['AllowTextConfDesc']}'/></td>
<td class="row2"><input type="radio" name="new_exbb[b][text_confirmation]" value="yes" {$text_confirmation_yes} /> {$fm->LANG['Yes']}&nbsp;&nbsp;<input type="radio" name="new_exbb[b][text_confirmation]" value="no" {$text_confirmation_no} /> {$fm->LANG['No']}</td>
</tr>



3. открыть data/setvariables.php

найти

PHP:
$log_yes                = ($fm->exbb['log']) ? 'checked="checked"' : '';
$log_no = (!$fm->exbb['log']) ? 'checked="checked"' : '';


добавить ниже

PHP:
$text_confirmation_yes  = ($fm->exbb['text_confirmation']) ? 'checked="checked"' : '';
$text_confirmation_no = (!$fm->exbb['text_confirmation']) ? 'checked="checked"' : '';



4. открыть language/russian/lang_admin_setvariables.php

найти

PHP:
$this->LANG['AvatarUpload']         = 'Разрешить закачку личных аватар?';


перед которой добавить

PHP:
$this->LANG['AllowTextConf']        = 'Разрешить текстовое подтверждение при регистрации?';
$this->LANG['AllowTextConfDesc'] = 'При регистрации будет в текстовом режиме выведен вопрос на который нужно дать правильный ответ';



5. открыть templates/InvisionExBB/agreed.tpl

найти строки

PHP:
if ($fm->exbb['anti_bot'] === TRUE) 
{
echo <<<DATA
<tr>
<td class="profilleft"><b>{$fm->LANG['CaptchaCode']}</b><br /><span class="desc">{$fm->LANG['CaptchaBroken']}</span></td>
<td class="profilright"><img src="regimage.php" id="captcha" border="0" alt="captcha"></td>
</tr>
<tr>
<td class="profilleft"><b>{$fm->LANG['CaptchaСonfirm']}</b><br /><span class="desc">{$fm->LANG['CaptchaNote']}</span></td>
<td class="profilright"><input type="text" name="captcha" size="25" maxlength="10" onblur="verify_register(this);" />
<span id="verify_captcha"></span>
<script language="JavaScript" src="javascript/reload_captcha.js"></script></td>
</tr>
DATA;
}


после которых добавить

PHP:
if ($fm->exbb['text_confirmation'] === TRUE)
{
require('modules/text_confirmation/config.php');
$_SESSION['text_confirm'] = $value = $text_confirmation_config[array_rand($text_confirmation_config)];
echo <<<DATA
<tr>
<td class="profilleft"><b>{$value['title']}</b><br /><span class="desc">{$value['description']}</span></td>
<td class="profilright"><input type="text" name="confirm_question" size="25" maxlength="20"></td>
</tr>
DATA;
}


6. открыть register.php

найти строки

PHP:
if ($fm->exbb['anti_bot'] && ($fm->input['captcha'] == '' || !isset($_SESSION['captcha']) || $fm->input['captcha'] !== $_SESSION['captcha'])) 
{$fm->_Message($fm->LANG['Registration'],$fm->LANG['CaptchaError']);} // проверка капчи


после которых добавить

PHP:
if ($fm->exbb['text_confirmation'] === TRUE)                                                             // текстовое подтверждение
{
$value = $_SESSION['text_confirm'];
if ($fm->_LowerCase(trim($fm->input['confirm_question'])) !== $fm->_LowerCase($value['answer']))
{$fm->_Message($fm->LANG['Registration'], $fm->LANG['TextConfError']);}
}



7. открыть language/russian/lang_front_register.php

найти строку

PHP:
$this->LANG['NotNeededInfo']	= 'эта информация необязательна';


после которой добавить

PHP:
$this->LANG['TextConfError']    = 'Вы неправильно ответили на вопрос текстового подтверждения!';


8. создаем новую папку modules/text_confirmation в которой создаем файл config.php в который записываем примерно такой код

PHP:
<?php if (!defined('IN_EXBB')) die('Hack attempt!'); 

$text_confirmation_config = array
(
array
(
'title' => 'Контрольный вопрос',
'description' => 'Название самого короткого месяца в году',
'answer' => 'февраль'
),
array
(
'title' => 'Контрольный вопрос',
'description' => 'Столица России',
'answer' => 'Москва'
),
array
(
'title' => 'Контрольный вопрос',
'description' => 'Друг крокодила Гены',
'answer' => 'Чебурашка'
),
array
(
'title' => 'Контрольный вопрос',
'description' => 'Как называется второй месяц весны?',
'answer' => 'апрель'
)
);

?>


Правим этот файл под свои вопросы/ответы и пользуемся...
NordWest Отправлено: 15 февраля 2018 — 13:43 • Тема: Релизы ExBB - ссылки и обсуждение • Форум: ExBB Community

Ответов: 116
Просмотров: 40876
Добавить можно, но по моему это лишнее. Давайте пока ограничимся тем, что есть.
У меня даже капча при регистрации отключена и гостям писать разрешено, а спама нет.
Нужно отсекать ботов не создавая проблем обычным людям...
NordWest Отправлено: 15 февраля 2018 — 08:29 • Тема: Релизы ExBB - ссылки и обсуждение • Форум: ExBB Community

Ответов: 116
Просмотров: 40876
Я кнопочку удаления добавил. Теперь с функцией удаления разбираюсь.
NordWest Отправлено: 15 февраля 2018 — 07:42 • Тема: Релизы ExBB - ссылки и обсуждение • Форум: ExBB Community

Ответов: 116
Просмотров: 40876
Когда по этой кнопке жмёте - попадаете в профиль пользователя и уже там есть кнопка "забанить" или не так?
NordWest Отправлено: 14 февраля 2018 — 20:23 • Тема: Релизы ExBB - ссылки и обсуждение • Форум: ExBB Community

Ответов: 116
Просмотров: 40876
 Цитата от Yamaliya:
Сложно, если прикреплять файлы нельзя и картинку нельзя вставить
В движке есть проблемы с вставкой картинок с сайтов https - в ближайшем будущем поправлю.
Кстати, рекомендую хороший картиночный хостинг - http://picsee.net
Мне очень нравится. Настолько нравится, что планирую написать подобный скрипт и развернуть у себя на сервере.

 Цитата от Yamaliya:
Покажите как.
Спойлер (Показать)
NordWest Отправлено: 14 февраля 2018 — 16:41 • Тема: Релизы ExBB - ссылки и обсуждение • Форум: ExBB Community

Ответов: 116
Просмотров: 40876
 Цитата от Yamaliya:
Очень хотелось бы, что бы при создании сообщения автоматически ставилась галочка "Вы хотите получать уведомления по e-mail о новых сообщениях в этой теме?".

Я не совсем понял что именно вы хотите. Опишите чуть подробнее, если не сложно.

 Цитата от Yamaliya:
А ещё, что бы просматривать профиль пользователя можно было не только с админки, но и напрямую с форума
Так админ вроде и так профили видит.

 Цитата от Yamaliya:
И чтобы там, где "Статус Пользователь [Забанить]" у админов было так: "Статус Пользователь [Забанить][Удалить]"
Кнопку удаления добавлю. Но перед этим создам единую функцию удаления пользователя, а старые поубиваю нафиг. А то в трёх местах и везде разный код.

P.S: Моды проинтегрировал, новый дистрибутив собрал. Если есть большое желание посмотреть - могу выложить на скачивание.
NordWest Отправлено: 13 февраля 2018 — 23:00 • Тема: Работа в PHP с Zip архивами • Форум: Записная книжка PHP

Ответов: 6
Просмотров: 5977

Класс. Методы

PclZip()

Обзор.
Этот метод – конструктор объекта.

Резюме.
PclZip($zipname);

Аргументы.
$zipname – строка – название файла формата ZIP.

Описание.
Этот метод создает объект PclZip, который работает с архивом формата ZIP. Устанавливается только имя архива, никакой проверки не производится, никаких действий не выполняется.
При создании объекта производится проверка установки zlib. Если не установлено – сообщение об ошибке.

Пример:
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
if ($archive->create('file.txt data/text.txt folder/') == 0) {
die('Error : '.$archive->errorInfo(true));
}


create()
Обзор.
Этот метод создает архив формата ZIP с указанными файлами.

Резюме.
create($filelist, [доп. Параметры])

Аргументы.
$filelist
Массив с названиями файлов или директорий
или
строка с названием файла или директории
или
строка с названиями файлов или директорий, разделенными запятыми.

Дополнительные аргументы:
PCLZIP_OPT_REMOVE_PATH
PCLZIP_OPT_REMOVE_ALL_PATH
PCLZIP_OPT_ADD_PATH
PCLZIP_CB_PRE_ADD
PCLZIP_CB_POST_ADD
PCLZIP_OPT_NO_COMPRESSION
PCLZIP_OPT_COMMENT

Возвращаемые значения:
0 – ошибка.
Массив – параметры файлов (См. “Возвращаемые значения”).

Описание.
Этот метод создает архив со всеми файлами и папками, обозначенными в аргументе $filelist. После добавления всех файлов и папок структура filesystem будет запомнена.
Дополнительные аргументы аргументы дают возможность архивировать файлы с различными путями. Это позволяет помещать архивируемые файлы в другое место, а в архиве создавать необходимую структуру.

Примеры:
PHP:
 include_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->create('file.txt,data/text.txt,folder');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере мы создали архив 'archive.zip' и поместили в него файлы 'file.txt' и 'data/text.txt'. Все из папки 'folder' также было добавлено включая все вложенные поддиректории.
PHP:
include_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->create('data/file.txt,data/text.txt',
PCLZIP_OPT_REMOVE_PATH, 'data',
PCLZIP_OPT_ADD_PATH, 'install');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере файлы 'file.txt' и 'text.txt', которые находятся в локальной папке 'data' , добавлены в архив без папки 'data', но в папку 'install'. Они сохранены в архиве как 'install/file.txt' и 'install/text.txt'.

listContent()
Обзор.
Этот метод возвращает список свойств файлов и папок.

Резюме.
listContent()

Возвращаемые значения.
0 – ошибка.
Массив – формат массива смотрите в разделе “Возвращаемые значения”.

Описание.
Этот метод возвращает содержание архива. Результат – массив, каждый элемент которого описывает архивированный файл или папку.

Пример:
PHP:
include_once('pclzip.lib.php');

$zip = new PclZip("test.zip");

if (($list = $zip->listContent()) == 0) {
die("Error : ".$zip->errorInfo(true));
}

for ($i=0; $i<sizeof($list); $i++) {
for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
echo "File $i / [$key] = ".$list[$i][$key]."<br>";
}
echo "<br>";
}


Пример выведет следующий результат:
File 0 / [filename] = data/file1.txt
File 0 / [stored_filename] = data/file1.txt
File 0 / [size] = 53
File 0 / [compressed_size] = 36
File 0 / [mtime] = 1010440428
File 0 / [comment] =
File 0 / [folder] = 0
File 0 / [index] = 0
File 0 / [status] = ok

File 1 / [filename] = data/file2.txt
File 1 / [stored_filename] = data/file2.txt
File 1 / [size] = 54
File 1 / [compressed_size] = 53
File 1 / [mtime] = 1011197724
File 1 / [comment] =
File 1 / [folder] = 0
File 1 / [index] = 1
File 1 / [status] = ok

extract()
Обзор.
Этот метод распаковывает файлы и папки из архива формата ZIP.

Резюме.
PclZip::extract([список параметров])

Аргументы.
PCLZIP_OPT_PATH
PCLZIP_OPT_REMOVE_PATH
PCLZIP_OPT_REMOVE_ALL_PATH
PCLZIP_OPT_ADD_PATH
PCLZIP_CB_PRE_EXTRACT
PCLZIP_CB_POST_EXTRACT
PCLZIP_OPT_SET_CHMOD
PCLZIP_OPT_BY_NAME
PCLZIP_OPT_BY_EREG
PCLZIP_OPT_BY_PREG
PCLZIP_OPT_BY_INDEX
PCLZIP_OPT_EXTRACT_AS_STRING
PCLZIP_OPT_EXTRACT_IN_OUTPUT

Возвращаемые значения.
0 – ошибка.
Массив – массив с извлеченными файлами. Обратите внимание, если извлечение какого-либо файла терпит неудачу, то это не значит, что все извлечение потерпело неудачу. Но статус файла в массиве будет указывать на причину ошибки. (См. “Возвращаемые параметры”).

Описание.
Этот метод извлекает часть или все файлы из архива формата ZIP.
Фильтрация может быть задана дополнительными аргументами. Также вы можете изменить путь для извлечения файлов и папок. При извлечении маленьких файлов вы можете не создавать промежуточных файлов извлекая их прямо в переменную. Также вы можете отдавать распаковываемый файл напрямую пользователю (См. “Дополнительные аргументы”).

Примеры:
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
if ($archive->extract() == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере все файлы будут извлечены в текущую директорию.
PHP:
include('pclzip.lib.php');
$archive = new PclZip('archive.zip');
if ($archive->extract(PCLZIP_OPT_PATH, 'data',
PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере все файл извлечены в папку 'data'. Все файлы с префиксом 'install/release' также распакованы в папку 'data', а не в 'data/install/release'.

properties()
Обзор.
Этот метод отдает общие свойства архива в формате ZIP.

Резюме.
PclZip::properties()

Возвращаемые значения.
0 – ошибка.
Массив – массив со свойствами архива.

Описание.
Этот метод возвращает общие свойства архива формата ZIP.

Доступные свойства:
nb – число папок/файлов в архиве.
comment – комментарий, связанный с архивом.
status – статус архива (сейчас доступен только ОК).

add()
Обзор.
Этот метод добавляет файлы или папки в архиву формата ZIP.

Резюме.
PclZip::add($filelist, [доп. параметры])

Аргументы.
$filelist
Массив с названиями файлов или директорий
или
строка с названием файла или директории
или
строка с названиями файлов или директорий, разделенными запятыми.

Дополнительные параметры.
PCLZIP_OPT_REMOVE_PATH
PCLZIP_OPT_REMOVE_ALL_PATH
PCLZIP_OPT_ADD_PATH
PCLZIP_CB_PRE_ADD
PCLZIP_CB_POST_ADD
PCLZIP_OPT_NO_COMPRESSION
PCLZIP_OPT_COMMENT
PCLZIP_OPT_ADD_COMMENT
PCLZIP_OPT_PREPEND_COMMENT

Возвращаемые значения.
0 – ошибка.
Массив – см. “Возвращаемые значения”.

Описание.
Этот метод позволяет добавлять в уже существующий архив файлы, перечисленные в $filelist. После добавления всех файлов и папок структура filesystem запоминается.
Будте осторожны, если такой файл в архиве уже существует, то он добавится в конец архива, но не заменит существующий.
Если архив не существует, он будет автоматически создан.
Описание дополнительных аргументов смотрите в соответствующей главе.

Примеры:
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->add('file.txt,data/text.txt,folder/');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере в архив добавляются файл 'file.txt', 'date/text.txt' и все содержимое папки 'folder'.
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->add('dev/file.txt,dev/text.txt',
PCLZIP_OPT_ADD_PATH, 'install',
PCLZIP_OPT_REMOVE_PATH, 'dev');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере файлы 'dev/file.txt' и 'dev/text.txt' добавляются в архив, однако, путь 'dev' удалена и заменена на 'install'. Поэтому файлы в архиве сохранены как 'install/file.txt' и 'install/text.txt'.

delete()
Обзор.
Этот метод позволяет удалить из архива все или часть файлов.

Резюме.
PclZip::delete([список параметров])

Аргументы.
PCLZIP_OPT_BY_NAME
PCLZIP_OPT_BY_EREG
PCLZIP_OPT_BY_PREG
PCLZIP_OPT_BY_INDEX

Возвращаемые значения.
0 – ошибка.
Массив – Список файлов и их свойства (оставшихся в архиве). Формат массива см. “Возвращаемые параметры”.

Описание.
Этот метод удаляет все или часть файлов, находящихся в архиве.
Вы можете использовать аргументы для организации фильтра.

Примеры:
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->delete();
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере из архива будут удален все файлы.
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->delete(PCLZIP_OPT_BY_INDEX, '1-3,5,8-10');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом образце будут удалены файлы в индексе 1-3, 5 и 8-10. Файлы и папки могут быть получены методом listContent().
Примечание, папка имеет свой собственный вход (с ее собственным индексом). При удалении папки, файлы, принадлежащие ей, удалены не будут.
PHP:
require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->delete(PCLZIP_OPT_BY_EREG, 'txt$');
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}

В этом примере будут удалены все файлы, заканчивающиеся на .txt.

merge()
Обзор.
Склеивает два архива. Добавляет новый архив в конец имеющегося.

Резюме.
PclZip::merge($archive_filename)

Аргументы.
$archive_filename
Имя файла архива, с которым будет происходить объединение.

Возвращаемые значения.
0 – ошибка.
1 – удача.

Описание.
Функция добавляет содержимое архива с именем $archive_filename к текущем архиву. Никакой проверки делаться не будет, например, дубликаты файлов обнаружены не будут. Это не функция обновления! Эта функция “глупо” склеивает два архива.

duplicate()
Обзор.
Дублирует архив.

Резюме.
PclZip::duplicate($archive_filename)

Аргументы.
$acrhive_filename
Имя архива для дублирования.

Возвращаемые значения.
0 – ошибка.
1 – удача.

Описание.
Эта функция создает копию архива с именем из $archive_filename. Объект PclZip должен быть только создан. К нему не должны применяться никакие действия. Если связать его с уже существующим архивом, то этот архив будет удален и заменен дублируемым архивом.
NordWest Отправлено: 13 февраля 2018 — 22:47 • Тема: Работа в PHP с Zip архивами • Форум: Записная книжка PHP

Ответов: 6
Просмотров: 5977

Обработка ошибок

С версии 1.3 обработка ошибок встроена в класс для того чтобы получился единый файл. Однако вы и сейчас можете вынести обработку ошибок во внешний модуль. Читайте раздел “Настройка PCLZip”.

Когда метод возвращает код ошибки (большинство методов возвращает 0 при ошибке), код ошибки, текст ошибки и дополнительная информация доступна через методы:
errorName(); - возвращает строку с названием ошибки;
errorCode(); - возвращает значение кода ошибки;
errorInfo(); - возвращает описание, связанное с ошибкой.

Примеры обработки ошибок:

Читаем код ошибки:
PHP:
$list = $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");
if ($list == 0) {
die ("Unrecoverable error, code ".$archive->errorCode());
}

Неустранимая ошибка, код -6.

Читаем название ошибки:
PHP:
$list = $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");
if ($list == 0) {
die ("Unrecoverable error '".$archive->errorName()."'");
}

Неустранимая ошибка 'PCLZIP_ERR_BAD_FORMAT'.

Читаем название ошибки и ее код:
PHP:
$list = $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");
if ($list == 0) {
die ("Unrecoverable error '".$archive->errorName(true)."'");
}

Неустранимая ошибка 'PCLZIP_ERR_BAD_FORMAT (-10)'.

Чтение описания ошибки:
PHP:
$list = $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");
if ($list == 0) {
die ("Error : '".$archive->errorInfo()."'");
}

Ошибка: Неправильная структура архива [код -10].

Чтение полного описания:
PHP:
$list = $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");
if ($list == 0) {
die ("Error : '".$archive->errorInfo(true)."'");
}

Ошибка: 'PCLZIP_ERR_BAD_FORMAT (-10): Неправильная структура архива'.

Страниц (117): В начало « ... 23 24 25 26 [27] 28 29 30 31 ... » В конец

Powered by ExBB v1.1.180311