[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как переименовать файл при нажатии на submit?
vvd
Как переименовать файл при нажатии на submit в phpbb? Мне нужно перенести файл из папки musor в папку video и одновременно переименовать его. Я попробовал так, в файле posting.php

Код: выделить все
if ( $submit ){
rename( "musor/".$post_data['username'].".flv", "video/".$post_id.".flv" );
}


Но ничего не вышло. Выдало какие-то ошибки, но посмотреть их нет возможности т.к. страница сразу сменяется другой страницей.
И ещё, правильно ли я понимаю, что $post_data['username'] содержит ник человека отправляющего сообщение?



Спустя 1 минута, 40 секунд (7.07.2011 - 13:48) DySprozin написал(а):
;;Выдало какие-то ошибки, но посмотреть их нет возможности
;;т.к. страница сразу сменяется другой страницей.

поставь exit:
if ( $submit ){
rename( "musor/".$post_data['username'].".flv", "video/".$post_id.".flv" );
}
exit();

Спустя 11 минут, 38 секунд (7.07.2011 - 14:00) Guest написал(а):
спасибо exit помог
Вот что выдало:
[phpBB Debug] PHP Notice: in file /posting.php on line 49: rename(musor/.flv,video/0.flv) [function.rename]: No such file or directory

Значит $post_data['username'] не содержит ник, да и $post_id почему-то равен 0.

Здесь есть знатоки phpbb? Ответьте, очень прошу. Мне нужно переименовать файл ник.flv в номерпоста.flv

Спустя 12 минут, 24 секунды (7.07.2011 - 14:12) DySprozin написал(а):
Guest
а если вместо $post_id поставить $GLOBALS['post_id']
?

Спустя 4 минуты, 21 секунда (7.07.2011 - 14:16) inpost написал(а):
vvd
$submit - это что вообще такое? Форма отправляет либо $_POST['submit'], либо $_GET['submit'], к нему ещё можно обращаться как к $_REQUEST, но никак не $submit!
тоже самое и $post_id

Спустя 10 минут, 5 секунд (7.07.2011 - 14:26) Invis1ble написал(а):
глобальные переменные по всей видимости отключены

Спустя 57 секунд (7.07.2011 - 14:27) vvd написал(а):
замена на $GLOBALS['post_id'] не помогла, всё равно 0

$submit - это такая переменная там в скрипте phpbb, там есть такая строчка
$submit= (isset($_POST['post'])) ? true : false;


Спустя 2 минуты, 10 секунд (7.07.2011 - 14:30) Invis1ble написал(а):
vvd
ну а другие переменные откуда тогда берутся ($post_data['username'], $post_id) ?
покажи код, формирующий их

Спустя 15 минут, 29 секунд (7.07.2011 - 14:45) vvd написал(а):
$post_id= request_var('p', 0);

что такое request_var и $post_data['username'], не знаю так как скрипт очень большой - 2 мегабайта в сжатом виде. Просто я подумал, что именно в этих переменных содержится ник и номер поста.

Спустя 1 минута, 47 секунд (7.07.2011 - 14:47) Invis1ble написал(а):
vvd
Цитата
что такое request_var и $post_data['username'], не знаю

ну дык а я тем более не могу этого знать smile.gif
так что ищи код, определяющий функцию request_var()

Спустя 20 минут, 41 секунда (7.07.2011 - 15:08) vvd написал(а):
Свернутый текст
/**
* request_var
*
* Used to get passed variable
*/

function request_var($var_name, $default, $multibyte = false, $cookie = false)
{
if (!$cookie && isset($_COOKIE[$var_name]))
{
if (!isset($_GET[$var_name]) && !isset($_POST[$var_name]))
{
return (is_array($default)) ? array() : $default;
}
$_REQUEST[$var_name] = isset($_POST[$var_name]) ? $_POST[$var_name] : $_GET[$var_name];
}

$super_global = ($cookie) ? '_COOKIE' : '_REQUEST';
if (!isset($GLOBALS[$super_global][$var_name]) || is_array($GLOBALS[$super_global][$var_name]) != is_array($default))
{
return (is_array($default)) ? array() : $default;
}

$var = $GLOBALS[$super_global][$var_name];
if (!is_array($default))
{
$type = gettype($default);
}
else
{
list($key_type, $type) = each($default);
$type = gettype($type);
$key_type = gettype($key_type);
if ($type == 'array')
{
reset($default);
$default = current($default);
list($sub_key_type, $sub_type) = each($default);
$sub_type = gettype($sub_type);
$sub_type = ($sub_type == 'array') ? 'NULL' : $sub_type;
$sub_key_type = gettype($sub_key_type);
}
}


if (is_array($var))
{
$_var = $var;
$var = array();

foreach ($_var as $k => $v)
{
set_var($k, $k, $key_type);
if ($type == 'array' && is_array($v))
{
foreach ($v as $_k => $_v)
{
if (is_array($_v))
{
$_v = null;
}
set_var($_k, $_k, $sub_key_type, $multibyte);
set_var($var[$k][$_k], $_v, $sub_type, $multibyte);
}
}

else
{
if ($type == 'array' || is_array($v))
{
$v = null;
}
set_var($var[$k], $v, $type, $multibyte);
}
}
}

else
{
set_var($var, $var, $type, $multibyte);
}

return $var;
}

Спустя 15 минут, 8 секунд (7.07.2011 - 15:23) Invis1ble написал(а):
о боже.... в этом коде еще другая функция - set_var() непонятная... smile.gif
Предлагаю пойти другим путем. Определи, где находятся эти данные (ник и id), например в $_COOKIE или в $_POST, и бери непосредственно значения из этих массивов.
Просто вникать в логику незнакомого движка лень, да и времени немало на это уйдет.

Спустя 25 минут, 53 секунды (7.07.2011 - 15:49) vvd написал(а):
Я попробовал написать
"video/".$_POST['p'].".flv" 
Не сработало.

А функция set_var() маленькая
/**
* set_var
*
* Set variable, used by {
@link request_var the request_var function}
*
*
@access private
*/

function set_var(&$result, $var, $type, $multibyte = false)
{
settype($var, $type);
$result = $var;

if ($type == 'string')
{
$result = trim(htmlspecialchars(str_replace(array("\r\n", "\r", "\0"), array("\n", "\n", ''), $result), ENT_COMPAT, 'UTF-8'));

if (!empty($result))
{
// Make sure multibyte characters are wellformed
if ($multibyte)
{
if (!preg_match('/^./u', $result))
{
$result = '';
}
}

else
{
// no multibyte, allow only ASCII (0-127)
$result = preg_replace('/[\x80-\xFF]/', '?', $result);
}
}


$result = (STRIP) ? stripslashes($result) : $result;
}
}

Спустя 4 минуты, 23 секунды (7.07.2011 - 15:53) inpost написал(а):
vvd
echo "video/".$_POST['p'].".flv" ;
exit();

После смотришь, что вывелось
Потом проверяешь наличие этого файла, потом проверяешь, точно ли доступ стоит 777 (или 755) на папку и на файл.

Если точно стоит доступ и путь вроде правильный, пиши через $_SERVER ROOT адрес, то есть это внутренний абсолютный адрес на винте к файлу.

Спустя 1 час, 7 секунд (7.07.2011 - 16:53) vvd написал(а):
Вывелось: video/.flv

А насчёт доступа, так у меня форум на денвере, я даже не знаю где этот доступ устанавливается

Спустя 1 час, 3 минуты, 45 секунд (7.07.2011 - 17:57) demonichka написал(а):
Полный путь к директориям нужно написать

if ( $submit ){
rename($_SERVER['DOCUMENT_ROOT']."/musor/".$post_data['username'].".flv", $_SERVER['DOCUMENT_ROOT']."/video/".$post_id.".flv" );
}

Спустя 4 минуты, 57 секунд (7.07.2011 - 18:02) Invis1ble написал(а):
demonichka
Цитата
Полный путь к директориям нужно написать

не обязательно, но желательно smile.gif
но вообще-то там проблема в другом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.