Jestem aktualnie w trakcie mozolnego manualnego upgrade'owania i natrafiłem na pewien problem. Mam sobie na stronie taki oto skrypt [php]<?php
$czas = explode(" ",microtime());
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$forum_path = './forum/';
$page_path = './../';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
init_userprefs($userdata);
$scfile=explode("/",$_SERVER['PHP_SELF']);
$redir=$page_path.$scfile[count($scfile)-1].( ($QUERY_STRING)?'?'.$QUERY_STRING.'&':'?').( (!preg_match('#sid=#', $QUERY_STRING))?'sid='.$userdata['session_id']:'' );
$sql = 'SELECT COUNT( privmsgs_id ) AS all_pms FROM '.PRIVMSGS_TABLE.' WHERE privmsgs_to_userid = '.$userdata['user_id'].' AND ( privmsgs_type = '.PRIVMSGS_READ_MAIL.' OR privmsgs_type = '.PRIVMSGS_NEW_MAIL.' OR privmsgs_type = '.PRIVMSGS_UNREAD_MAIL.' )';
$result = $db->sql_query($sql);
if( !$result )
{
message_die(GENERAL_ERROR, 'Blad przy PW', '', __LINE__, __FILE__, $sql);
}
$dane = $db->sql_fetchrow($result);
$all_pms = $dane['all_pms'];
$unread_pms = $userdata['user_unread_privmsg']+$userdata['user_new_privmsg'];
$pms = "($unread_pms/$all_pms)";
//
// pobieranie nick'a
//
function get_user_nick($userId)
{
global $db;
$sqlQuery = 'SELECT username FROM '.USERS_TABLE.' WHERE user_id='.$userId;
$sqlResult = $db->sql_query($sqlQuery);
if(!$sqlResult)
message_die(GENERAL_MESSAGE, 'Nie można pobrac nazwy użytkownika!');
$sqlData = $db -> sql_fetchrow($sqlResult);
return $sqlData['username'];
}
//
// pobieranie adresu e-mail
//
function get_user_email($userId)
{
global $db;
$sqlQuery = 'SELECT user_email FROM '.USERS_TABLE.' WHERE user_id='.$userId;
$sqlResult = $db->sql_query($sqlQuery);
if(!$sqlResult)
message_die(GENERAL_MESSAGE, 'Nie można pobrać adresu e-mail!');
$sqlData = $db -> sql_fetchrow($sqlResult);
return $sqlData['user_email'];
}
//
// nowe posty na forum
//
if( $userdata['session_logged_in'] )
{
$sql = "SELECT COUNT(post_id) as total
FROM " . POSTS_TABLE . "
WHERE post_time >= " . $userdata['user_lastvisit'] . "
AND poster_id != " . $userdata['user_id'];
$result = $db->sql_query($sql);
if( $result )
{
$row = $db->sql_fetchrow($result);
$nowePosty = $row['total'];
}
}
?>[/php]
Wszystko działa dobrze, do momentu aż przy upgrade z 2.08 do 2.10 nie zaczynam edytować common.php. Ograniczyłem problem do tego fragmentu kodu, który muszę tam wstawić:
[phpbb]$ini_val = (@phpversion() >= '4.0.0') ? 'ini_get' : 'get_cfg_var';
// Unset globally registered vars - PHP5 ... hhmmm
if (@$ini_val('register_globals') == '1' || strtolower(@$ini_val('register_globals')) == 'on')
{
$var_prefix = 'HTTP';
$var_suffix = '_VARS';
$test = array('_GET', '_POST', '_SERVER', '_COOKIE', '_ENV');
foreach ($test as $var)
{
if (is_array(${$var_prefix . $var . $var_suffix}))
{
unset_vars(${$var_prefix . $var . $var_suffix});
@reset(${$var_prefix . $var . $var_suffix});
}
if (is_array(${$var}))
{
unset_vars(${$var});
@reset(${$var});
}
}
if (is_array(${'_FILES'}))
{
unset_vars(${'_FILES'});
@reset(${'_FILES'});
}
if (is_array(${'HTTP_POST_FILES'}))
{
unset_vars(${'HTTP_POST_FILES'});
@reset(${'HTTP_POST_FILES'});
}
}
// PHP5 with register_long_arrays off?
if (!isset($HTTP_POST_VARS) && isset($_POST))
{
$HTTP_POST_VARS = $_POST;
$HTTP_GET_VARS = $_GET;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_COOKIE_VARS = $_COOKIE;
$HTTP_ENV_VARS = $_ENV;
$HTTP_POST_FILES = $_FILES;
}
[/phpbb]
W momencie jak jest ten fragment, wszystko się sypie. Wszystkie skrypty cofają użytkownika do strony głównej (strony, bo forum działa dobrze tak z tym kodem jak i bez).
Tak więc jakby ktoś widział rozwiązanie, jestem wdzięczny. Najbardziej mi zależy jednak na info, czy powyższy kod jest esencjalny, bo jeżeli nie, to go pominę i wrócę do niego o ile nie natrafię na kolejne komplikacje.
Z góry thx.