<?php
/***************************************************************************
* functions.php
* -------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* Id: functions.php,v 1.133.2.35 2005/07/19 20:01:11 acydburn Exp
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
***************************************************************************/
if ( !defined('IN_PHPBB') )
{
die("Hacking attempt");
exit;
}
function get_db_stat($mode)
{
global $db;
switch( $mode )
{
case 'usercount':
$sql = "SELECT COUNT(user_id) AS total
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS;
break;
case 'newestuser':
$sql = "SELECT user_id, username
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
ORDER BY user_id DESC
LIMIT 1";
break;
case 'postcount':
case 'topiccount':
$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
FROM " . FORUMS_TABLE;
break;
}
if ( !($result = $db->sql_query($sql)) )
{
return false;
}
$row = $db->sql_fetchrow($result);
switch ( $mode )
{
case 'usercount':
return $row['total'];
break;
case 'newestuser':
return $row;
break;
case 'postcount':
return $row['post_total'];
break;
case 'topiccount':
return $row['topic_total'];
break;
}
return false;
}
// added at phpBB 2.0.11 to properly format the username
function phpbb_clean_username($username)
{
$username = substr(htmlspecialchars(str_replace("\'", "'", trim($username))), 0, 25);
$username = phpbb_rtrim($username, "\\");
$username = str_replace("'", "\'", $username);
return $username;
}
// added at phpBB 2.0.12 to fix a bug in PHP 4.3.10 (only supporting charlist in php >= 4.1.0)
function phpbb_rtrim($str, $charlist = false)
{
if ($charlist === false)
{
return rtrim($str);
}
//
// Get Userdata, $user can be username or user_id. If force_str is true, the username will be forced.
//
function get_userdata($user, $force_str = false)
{
global $db;
//
// Add an array to $nav_links for the Mozilla navigation bar.
// 'chapter' and 'forum' can create multiple items, therefore we are using a nested array.
//
$nav_links['chapter forum'][$forum_rows[$j]['forum_id']] = array (
'url' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=" . $forum_rows[$j]['forum_id']),
'title' => $forum_rows[$j]['forum_name']
);
// Let the jumpbox work again in sites having additional session id checks.
// if ( !empty($SID) )
// {
$boxstring .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
// }
//
// Initialise user settings on page load
function init_userprefs($userdata)
{
global $board_config, $theme, $images, $template, $lang, $phpEx, $phpbb_root_path, $nav_links;
if ( $userdata['user_id'] != ANONYMOUS )
{
if ( !empty($userdata['user_lang']))
{
$board_config['default_lang'] = $userdata['user_lang'];
}
if ( !empty($userdata['user_dateformat']) )
{
$board_config['default_dateformat'] = $userdata['user_dateformat'];
}
if ( isset($userdata['user_timezone']) )
{
$board_config['board_timezone'] = $userdata['user_timezone'];
}
}
//
// Mozilla navigation bar
// Default items that should be valid on all pages.
// Defined here to correctly assign the Language Variables
// and be able to change the variables within code.
//
$nav_links['top'] = array (
'url' => append_sid("index.$phpEx"),
'title' => sprintf($lang['Forum_Index'], $board_config['sitename'])
);
$nav_links['search'] = array (
'url' => append_sid("search.$phpEx"),
'title' => $lang['Search']
);
$nav_links['help'] = array (
'url' => append_sid("faq.$phpEx"),
'title' => $lang['FAQ']
);
$nav_links['author'] = array (
'url' => append_sid("memberlist.$phpEx"),
'title' => $lang['Memberlist']
);
return;
}
function setup_style($style)
{
global $db, $prefix, $board_config, $template, $images, $phpbb_root_path, $name;
if($name == "Forums"){
c o o k i edecode($user);
$info=$db->sql_query("select * from ".$prefix."_bbconfig where config_name='default_style'");
$get_info=$db->sql_fetchrow($info);
$default_style=$get_info['config_value'];
if($c o o k i e[1] == "" AND $style != "$default_style") {
$style = "$default_style";
}
}
$sql = "SELECT *
FROM " . THEMES_TABLE . "
WHERE themes_id = '$style'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not query database for theme info');
}
if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]");
}
//
// This does exactly what preg_quote() does in PHP 4-ish
// If you just need the 1-parameter preg_quote call, then don't bother using this.
//
function phpbb_preg_quote($str, $delimiter)
{
$text = preg_quote($str);
$text = str_replace($delimiter, '\\' . $delimiter, $text);
return $text;
}
//
// Obtain list of naughty words and build preg style replacement arrays for use by the
// calling script, note that the vars are passed as references this just makes it easier
// to return both sets of arrays
//
function obtain_word_list(&$orig_word, &$replacement_word)
{
global $db;
//
// Define censored word matches
//
$sql = "SELECT word, replacement
FROM " . WORDS_TABLE;
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get censored words from database', '', __LINE__, __FILE__, $sql);
}
if ( $row = $db->sql_fetchrow($result) )
{
do
{
$orig_word[] = '#\b(' . str_replace('\*', '\w*?', phpbb_preg_quote($row['word'], '#')) . ')\b#i';
$replacement_word[] = $row['replacement'];
}
while ( $row = $db->sql_fetchrow($result) );
}
return true;
}
//
// This is general replacement for die(), allows templated
// output in users (or default) language, etc.
//
// $msg_code can be one of these constants:
//
// GENERAL_MESSAGE : Use for any simple text message, eg. results
// of an operation, authorisation failures, etc.
//
// GENERAL ERROR : Use for any error which occurs _AFTER_ the
// common.php include and session code, ie. most errors in
// pages/functions
//
// CRITICAL_MESSAGE : Used when basic config data is available but
// a session may not exist, eg. banned users
//
// CRITICAL_ERROR : Used when config data cannot be obtained, eg
// no database connection. Should _not_ be used in 99.5% of cases
//
function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', $err_file = '', $sql = '')
{
global $db, $template, $board_config, $theme, $lang, $phpEx, $phpbb_root_path, $nav_links, $gen_simple_header, $images, $userdata, $user_ip, $session_length, $starttime;
if(defined('HAS_DIED'))
{
die("message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?");
}
define('HAS_DIED', 1);
$sql_store = $sql;
//
// Get SQL error if we are debugging. Do this as soon as possible to prevent
// subsequent queries from overwriting the status of sql_error()
//
if ( DEBUG && ( $msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR ) )
{
$sql_error = $db->sql_error();
switch($msg_code)
{
case GENERAL_MESSAGE:
if ( empty($msg_title) )
{
$msg_title = $lang['Information'];
}
break;
case CRITICAL_MESSAGE:
if ( empty($msg_title) )
{
$msg_title = $lang['Critical_Information'];
}
break;
case GENERAL_ERROR:
if ( empty($msg_text) )
{
$msg_text = $lang['An_error_occured'];
}
if ( empty($msg_title) )
{
$msg_title = $lang['General_Error'];
}
break;
case CRITICAL_ERROR:
//
// Critical errors mean we cannot rely on _ANY_ DB information being
// available so we're going to dump out a simple echo'd statement
//
include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx);
if ( empty($msg_text) )
{
$msg_text = $lang['A_critical_error'];
}
//
// Add on DEBUG info if we've enabled debug mode and this is an error. This
// prevents debug info being output for general messages should DEBUG be
// set TRUE by accident (preventing confusion for the end user!)
//
if ( DEBUG && ( $msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR ) )
{
if ( !empty($debug_text) )
{
$msg_text = $msg_text . '<br /><br /><b><u>DEBUG MODE</u></b>' . $debug_text;
}
}
if ( $msg_code != CRITICAL_ERROR )
{
if ( !empty($lang[$msg_text]) )
{
$msg_text = $lang[$msg_text];
}
//
// This function is for compatibility with PHP 4.x's realpath()
// function. In later versions of PHP, it needs to be called
// to do checks with some functions. Older versions of PHP don't
// seem to need this, so we'll just return the original value.
// dougk_ff7 <October 5, 2002>
function phpbb_realpath($path)
{
global $phpbb_root_path, $phpEx;
// Redirect via an HTML form for PITA webservers
if (@preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')))
{
header('Refresh: 0; URL=' . $server_protocol . $server_name . $server_port . $script_name . $url);
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><m e t a http - e q u i v="Content-Type" content="text/html; charset=iso-8859-1"><m e t a http - e q u i v="refresh" content="0; url=' . $server_protocol . $server_name . $server_port . $script_name . $url . '"><title>Redirect</title></head><body><div align="center">If your browser does not support m e t a redirection please click <a href="' . $server_protocol . $server_name . $server_port . $script_name . $url . '">HERE</a> to be redirected</div></body></html>';
exit;
}
// Behave as per HTTP/1.1 spec for others
header('Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url);
exit;
}
function bblogin($nukeuser, $session_id) {
global $nukeuser, $userdata, $user_ip, $session_length, $session_id, $db, $nuke_file_path;
define("IN_LOGIN", true);
$c o o k i e = explode(":", $nukeuser);
$nuid = $c o o k i e[0];
$sql = "SELECT s.*
FROM " . SESSIONS_TABLE . " s
WHERE s.session_id = '$session_id'
AND s.session_ip = '$user_ip'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch : session_pagestar');
}
$logindata = $db->sql_fetchrow($result);
if( $nuid != $logindata['session_user_id'] ) {
$nusername = $c o o k i e[1];
$sql = "SELECT user_id, username, user_password, user_active, user_level
FROM ".USERS_TABLE."
WHERE username = '" . str_replace("\'", "''", $nusername) . "'";
$result = $db->sql_query($sql);
if(!$result) {
message_die(GENERAL_ERROR, "Error in obtaining userdata : login", "", __LINE__, __FILE__, $sql);
}
$rowresult = $db->sql_fetchrow($result);
$password = $c o o k i e[2];
if(count($rowresult) ) {
if( $rowresult['user_level'] != ADMIN && $board_config['board_disable'] ) {
header("Location: " . append_sid("index.php", true));
} else {
if( $password == $rowresult['user_password'] && $rowresult['user_active'] ) {
$autologin = 0;
$userdata = session_begin($rowresult['user_id'], $user_ip, PAGE_INDEX, $session_length, FALSE, $autologin);
$session_id = $userdata['session_id'];
if(!$session_id ) {
message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
} else {
}
} else {
$message = $lang['Error_login'] . "<br /><br />" . sprintf($lang['Click_return_login'], "<a href=\"" . append_sid("modules.php?name=Forums&file=login&$redirect") . "\">", "</a> ") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.php") . "\">", "</a> ");
message_die(GENERAL_MESSAGE, $message);
}
}
} else {
$message = $lang['Error_login'] . "<br /><br />" . sprintf($lang['Click_return_login'], "<a href=\"" . append_sid("modules.php?name=Forums&file=login&$redirect") . "\">", "</a> ") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.php") . "\">", "</a> ");
message_die(GENERAL_MESSAGE, $message);
}
}
}
Yeni kurmuşsan nükeyi upgrade dosyalarını çağır. Sanırım sorun upgradeleri çalıştırmamandan kaynaklanıyor olsa gerek sen upgrade.php olarak çalıştır siteni bir tekrar gir.
Yeni kurmadım bayadır var olan birsey.
Debug hatasında Line 384 diyor yani php deki satır sayısı 384 de hata var diyor.
Ben bu satırdakı sorunu çözemedim.
Çözebilecek bilen arkadaşlardan a-c-i-l YARDIM bekliyorum.
YARDIM Edelim Ancak Aldıgınız Hatayı Buraya Tam Olarak Kopyalayın
Kod:
DEBUG MODE
Line : 384
File : functions.php
Normalde böyle bir hata Yok var ancak Bu Hatanın Devamı Var
Örn: subsilver,Tema,Forum,Fuctions,Admin,Session V.s
Bize Gerekli Bilgileri Verinki Sorunun Çözümünde Yardımcı Olalım
Kayıt: Jun 14, 2006 Mesajlar: 190 Konum: weStanbuL
Tarih: 2008-03-06, 13:02:04 Mesaj konusu:
Yok çalışmıyor Hicran.net de Özel mesajlar okunamıyor Kayıtlı üyelere bakılamıyor.birde Admin Panelinde Forums da Grup Ayarlarına bakılamıyor hepsinde yukarıdaki belirttiğim hatayı veriyor.Sorunu 1 haftadır çözememiş bulunuyorum.YARDIM eden biri çıkmadı hayrına
Şimdi sorunu Anladım.
Eski üyeler yani bundan 1 hafta önceki tüm üyeler özel mesajalrına bakamıyorlar.Ama ondan sonra üye olan kişiler bakabiliyorlar.
Burda ProbLem Eski Üyelerimin Özel mesajlarına bakmalarını nasıl sağlayabilirim mevzusu.??
kardesim saolasın yardımların ıcın :)
Ama Sorun dil de degılmıs.Kullanıcı subsılver yerıne baska bır tema secmıs kendıne subsılverı alınca hallondu sorun..
Bu forumda yeni başlıklar açamazsınız Bu forumdaki başlıklara cevap veremezsiniz Bu forumdaki mesajlarınızı değiştiremezsiniz Bu forumdaki mesajlarınızı silemezsiniz Bu forumdaki anketlerde oy kullanamazsınız