Максим Покровский

— Привет, меня зовут Максим Покровский. Вы находитесь в моем рабочем кабинете. Поскольку я фрилансер, будем считать, что именно так он и выглядит. Здесь я пишу много интересных вещей, и если вы почувствовали, что я именно тот человек, который вам нужен, то я всегда открыт для контакта.

Сделал за последнее время:


  • Добавил в портфель около 48-и новых работ:

  • Сделал очень много всяких штук при работе над поддержкой сайтов.
    Как бы это теперь в портфель запихнуть?

Заказать мне работу
21.05

Как сделать upload в комментариях

Комментарии (20) wordpress

Возникла необходимость сделать возможность добавления файлов пользователями в комментариях. С последующем выводом ссылки в комментарии. Сделал так:

Добавляем соответствующее поле
<input type="file" />
Исправляем comments.php

Меняем

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

на

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php"
method="post" id="commentform" enctype="multipart/form-data">

(т.е. добавить атрибут enctype="multipart/form-data" что бы можно было
закачивать файлы)

3. Правим файл wp-comments-post.php

После

 if ( '' == $comment_content )
    wp_die( __('Error: please type a comment.') );

(ориентировочна 58-60 строки)
добавить следующее:

/*! comment-upload plugin start
 *
 * Если расширение файла не разрешенно(устанавливается в массиве
$dissallowed_ext), то к имени файла дописывается ".txt"
 */

if (isset($_FILES['cu_file'])==true)
{
    $uploaddir = './wp-content/uploads/';
    $fn = basename($_FILES['cu_file']['name']);
    $uploadfile = $uploaddir . $fn;

    /*! @todo add test for extension */
    $disallowed_ext = array ('exe','php','php3','php4','php5','phtml');
    $allow = true;
    preg_match( '#\.([a-zA-Z0-9\-_]+)$#', $fn, $match );
    if (count($match)>0)
    {
        if (isset($match[1])==true)
        {
            if (in_array($match[1],$disallowed_ext)==true)
                {
                    $uploadfile .= ".txt";
                    $fn .= ".txt";
                    //$comment_content .= "файл переименован";
                }
        }
    }
    if ($allow==true)
        if (move_uploaded_file($_FILES['cu_file']['tmp_name'],
$uploadfile)) {
            /* ok */
            $comment_content .= "<br /><br />Загруженный файл: <a
href=\""
. get_option('siteurl') . "/uploads/" . $fn . "\">" . $fn .
"</a><br />" /*. print_r($match,true)*/;
           
        } else {
            /*bad*/
        }
   
}
/*! comment-upload plugin end */

В $disallowed_ext = array ('exe','php','php3','php4','php5','phtml'); дописать свои расширение, к которым будет добавляться .txt чтоб никто не догадался залить эксплоит ;-)
Т.е. если я закачаю shell.php он закачается как shell.php.txt

Тому кто это загонит все это в плагин — респект, почет и девствениц в раю.

— Мастерство самурая легко познается в бою. Хреновый просто погибает.
Древняя фрилансерская мудрость

Rambler's Top100