Arkadaşlar Onarcade 2.2.0 versiyonunda SEF linklerde Türkçe karakterler çıkması üzerine Functions.php den karakterleri ayarladım. acak .htaccess i ayarlayamıyorum. linkleri ayarladım ancak linklere tıklayınca not found uyarısı geliyor. acaba ben biyerlerde yanlış mı yaptım diye Functions.php ve .Htaccess dosyalarımı buraya ekliyorum. kontrol ederseniz veya düzeltirseniz çok sevinirim. teşekkür ederim.


HTACCESS Kodları

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^game/([0-9]+)/.+\.html$ file.php?f=$1
RewriteRule ^category/([0-9]+)/.+/([0-9]+)\.html$ browse.php?c=$1&p=$2
RewriteRule ^category/([0-9]+)/.+/?$ browse.php?c=$1
RewriteRule ^profile/([0-9]+)/.+\.html$ profile.php?u=$1
RewriteRule ^page/([0-9]+)\.html$ page.php?p=$1
RewriteRule ^scores/([0-9]+)/([0-9]+)\.html$ scores.php?f=$1&p=$2
RewriteRule ^game/[0-9]+/(newscore|index)\.php$ $1.php
RewriteRule ^game/[0-9]+/arcade/gamedata/(.*)$ arcade/gamedata/$1 [L]
</IfModule>

Functions.php Kodları

<?php
/**
 * onArcade 2.2.0
 * Copyright © 2006-2009 Hans Mäesalu & Eveterm OÜ, All Rights Reserved
 **
 * ONARCADE IS NOT FREE SOFTWARE!
 * http://www.onarcade.com
 **
 * Global onArcade functions are located here.
 **/

// Strip HTML dags
function nohtml($message) {
	$message = preg_replace("#&(?!\#[0-9]+;)#si", "&amp;", $message);
	$message = str_replace("<","&lt;", $message);
	$message = str_replace(">","&gt;", $message);
	$message = str_replace("\"","&quot;", $message);
	return $message;
}

// Generate file URL
function fileurl($file_id, $file_title) {
	global $settings;

	if ($settings['sefriendly'] == 1) {
		$replace = array(' ', '\'', ':', '(', ')', '&', 'ä', 'ö', 'ü', 'ğ', 'ş', 'ç', 'ı', 'Ö', 'Ü', 'Ğ', 'Ş', 'Ç', 'İ', );
		$replacement = array('_', '', '-', '8', '9', 'and', 'a', 'o', 'u', 'g', 's', 'c', 'i', 'O', 'U', 'G', 'S', 'C', 'I');
		$file_title = str_replace($replace, $replacement, $file_title);

        return $settings['siteurl'] .'/'. $settings['fileurl'] .'/'. $file_id .'/'. $file_title .'.html';
    } else
	    return $settings['siteurl'] .'/file.php?f='. $file_id;
}

// Generate category URL
function categoryurl($category_id, $category_title, $page = 1) {
	global $settings;

	if ($settings['sefriendly'] == 1) {
		$replace=array ("!","^","'","%","&","[","]","(",")","?","=","*",",",".","~","%","#","@","ç","Ç","ş","Ş","ğ","Ğ","ü","Ü","İ","ı","ö","Ö","ı","Å?","ü","ç","ö","Ä?","ÅŸ","Ç","İ","ÄŸ","Å?","Ö","Ü","ı","Å?","ç","ö","Ä?","ÅŸ","Ç","İ","ÄŸ","Å?","Ö","Ü","ü","ÄŸ","@",";","~","=");  
        $replacement=array("","","","","","","","","","","","","","","","","","","c","C","s","S","g","G","u","U","i","i","o","O","i","s","u","c","o","g","s","C","i","g","S","O","U","i","s","c","o","g","s","C","i","g","S","o","U","u","g","","","","-");  
		$category_title = str_replace($replace, $replacement, $category_title);

        return $settings['siteurl'] .'/'. $settings['categoryurl'] .'/'. $category_id .'/'. $category_title .'/'. $page .'.html';
    } else
	    return $settings['siteurl'] .'/browse.php?c='. $category_id .'&amp;p='. $page;
}

// Generate profile URL
function profileurl($userid,$username) {
	global $settings;

	if ($settings['sefriendly'] == 1) {
		$replace=array ("!","^","'","%","&","[","]","(",")","?","=","*",",",".","~","%","#","@","ç","Ç","ş","Ş","ğ","Ğ","ü","Ü","İ","ı","ö","Ö","ı","Å?","ü","ç","ö","Ä?","ÅŸ","Ç","İ","ÄŸ","Å?","Ö","Ü","ı","Å?","ç","ö","Ä?","ÅŸ","Ç","İ","ÄŸ","Å?","Ö","Ü","ü","ÄŸ","@",";","~","=");  
        $replacement=array("","","","","","","","","","","","","","","","","","","c","C","s","S","g","G","u","U","i","i","o","O","i","s","u","c","o","g","s","C","i","g","S","O","U","i","s","c","o","g","s","C","i","g","S","o","U","u","g","","","","-");  
		$username = str_replace($replace, $replacement, $username);

	    $profileurl = $settings['siteurl'] .'/'. $settings['profileurl'] .'/'. $userid .'/'. $username .'.html';
	} else {
		$profileurl = $settings['siteurl'] .'/profile.php?u='. $userid;
    }
    return $profileurl;
}

// Generate score URL
function scoresurl($scores_id, $scores_page = 1) {
	global $settings;

	if ($settings['sefriendly'] == 1)
        return $settings['siteurl'] .'/'. $settings['scoresurl'] .'/'. $scores_id .'/'. $scores_page .'.html';
    else
	    return $settings['siteurl'] .'/scores.php?f='. $scores_id .'&amp;p='. $scores_page;
}

// Get avatar URL
function avatar_url($avatar, $avatar_uploaded) {
	global $settings;

	if (empty($avatar))
		$avatar_url = $settings['siteurl'] .'/images/noavatar.gif';
	else {
		if ($avatar_uploaded == '1')
			$avatar_url = $settings['siteurl'] .'/images/avatars/'. $avatar;
		elseif ($avatar_uploaded == '2')
			$avatar_url = $settings['siteurl'] .'/images/avatars/galleries/'. $avatar;
		else
			$avatar_url = $avatar;
	}
	return $avatar_url;
}

// file image URL
function file_image_url($image_name, $image_location) {
	global $settings;

	if ($image_location == 1)
		return $settings['siteurl'] .'/files/image/'. $image_name;
	else
		return $image_name;
}

// BB Code
function bbcode($text, $extended = false) {
	global $settings;

	$text = preg_replace('/\[b\](.*?)\[\/b\]/is', '<b>$1</b>', $text);
	$text = preg_replace('/\[u\](.*?)\[\/u\]/is', '<u>$1</u>', $text);
	$text = preg_replace('/\[i\](.*?)\[\/i\]/is', '<i>$1</i>', $text);
	$text = preg_replace('/\[s\](.*?)\[\/s\]/is', '<s>$1</s>', $text);
    $text = str_replace(':)','<img src="'. $settings['siteurl'] .'/images/happy.gif" alt="" />',$text);
    $text = str_replace(':(','<img src="'. $settings['siteurl'] .'/images/sad.gif" alt="" />',$text);
    $text = str_replace(';)','<img src="'. $settings['siteurl'] .'/images/wink.gif" alt="" />',$text);
    $text = str_replace(':@:','<img src="'. $settings['siteurl'] .'/images/@.gif" alt="" />',$text);
    $text = str_replace(':8','<img src="'. $settings['siteurl'] .'/images/cool.gif" alt="" />',$text);
    $text = str_replace(':wave:','<img src="'. $settings['siteurl'] .'/images/wave.gif" alt="" />',$text);
    $text = str_replace(':think:','<img src="'. $settings['siteurl'] .'/images/think.gif" alt="" />',$text);
    $text = str_replace(':clap:','<img src="'. $settings['siteurl'] .'/images/clap.gif" alt="" />',$text);
    
    // some extra BB code, we only want this on some pages
    if ($extended == true) {
		while (preg_match('/\[quote\](.*?)\[\/quote\]/is', $text))
			$text = preg_replace('/\[quote\](.*?)\[\/quote\]/is', '<div class="quote">$1</div>', $text);
		$text = preg_replace('/\[img\]([a-z0-9_\-?\/:\.]*?)\[\/img\]/is', '<img src="$1" />', $text);
		$text = preg_replace('/\[url=([a-z0-9_\-?\/:\.]*?)\](.*?)\[\/url\]/is', '<a href="$1" target="_blank">$2</a>', $text);
	}

    return $text;
}

// Filter bad words
function word_filter($text) {
	global $settings;

	if ($settings['bad_word_filter'] == 1) {
    	$text = preg_replace('/('. $settings['bad_words'] .')/i', '***', $text);
    }

    return $text; 
}

// shorten file description
function shorten_description($description, $length) {
	if (strlen($description) > $length)
		return substr($description , 0, ($length - 3)) .'...';
	else
		return $description;
}

// Generate real date from UNIX timestamp
function mod_date($time, $format = 1) {
	global $lang;

	switch ($format) {
	case 1:
		$day = date('j', $time);
		$month = $lang['datetime'][date('F', $time)];
		$year = date('Y', $time);
		return $day .' '. $month .' '. $year;
		break;
	case 2:
		$day = date('j', $time);
		$month = $lang['datetime'][date('F', $time)];
		return $day .' '. $month .' '. date('Y G:i', $time);
		break;
	case 3:
		return date('r', $time);
		break;
	case 4:
		return date('d-m-Y G:i', $time);
		break;
	}
}

// generate stars
function rating_stars($rating) {
	global $settings;

	$rating_b = $rating + 0.25;
	$rating_c = (int)($rating + 0.75);
	$stars = '';
	for ($i = 1; $i <= 5; ++$i) {
		if ($i <= $rating_b)
			$stars .= '<img src="'. $settings['siteurl'] .'/images/star.png" id="rate_'. $i .'" alt="'. $rating .'" /> ';
		elseif ($i == $rating_c)
			$stars .= '<img src="'. $settings['siteurl'] .'/images/star_half.png" id="rate_'. $i .'" alt="'. $rating .'" /> ';
		else
			$stars .= '<img src="'. $settings['siteurl'] .'/images/star_empty.png" id="rate_'. $i .'" alt="'. $rating .'" /> ';
	}
	return $stars;
}

// Get the number of stars (index page)
function stars($stars) {
	if ($stars < 0.50)
		$stars = 0;
	elseif ($stars < 1.50)
		$stars = 1;
	elseif ($stars < 2.50)
		$stars = 2;
	elseif ($stars < 3.50)
		$stars = 3;
	elseif ($stars < 4.50)
		$stars = 4;
	else
		$stars = 5;
	return $stars;
}

// Load categories
function menu_categories() {
	global $tbl_prefix, $settings, $session;

	$menu_categories = get_cache('menu_categories_'. $session->info['status']);
	if (!$menu_categories) {
		if ($session->info['status'] == 1)
			$categories_menu_query = mysql_query("SELECT name, catid FROM ". $tbl_prefix ."categories WHERE status = '1' && parentcategory = 0 ORDER BY catorder, name");
		else
			$categories_menu_query = mysql_query("SELECT name, catid FROM ". $tbl_prefix ."categories WHERE status = '1' && permissions = '1' && parentcategory = 0 ORDER BY catorder, name");

		$menu_categories = array();
		while ($categories_menu_row = mysql_fetch_assoc($categories_menu_query)) {
    		$menu_categories[] = array (
				'url'	=>	categoryurl($categories_menu_row['catid'], $categories_menu_row['name'], 1),
				'title'	=>	$categories_menu_row['name'],
				'last'	=>	false
			);
		}

		// last category in array
		$last = count($menu_categories) - 1;
		if ($last >= 0)
			$menu_categories[$last]['last'] = true;

		// Write cache file
		write_cache('menu_categories_'. $session->info['status'], $menu_categories);
	}

	return $menu_categories;
}

// Get news
function news() {
	global $tbl_prefix, $settings;

	$news = get_cache('news');
	if (!$news) {
		if ($settings['news'] == 2)
			$news_query = mysql_query("
				SELECT
					r.title, r.message, r.date_posted AS date
				FROM
					". $tbl_prefix ."forums_topics AS t
					LEFT JOIN ". $tbl_prefix ."forums_replies AS r ON (t.topic_id = r.topic_id && first_post = 1)
				WHERE
					t.forum_id = ". $settings['news_forum'] ."
				ORDER BY t.topic_id DESC
				LIMIT ". $settings['news_index']
			);
		else
			$news_query = mysql_query("SELECT title, message, date FROM ". $tbl_prefix ."news WHERE status = '1' ORDER BY newsid DESC LIMIT ". $settings['news_index']);
		$news = array();
		while ($news_row = mysql_fetch_assoc($news_query)) {
			$news[] = array (
				'title'	=>	nohtml($news_row['title']),
				'text'	=>	bbcode(nl2br(nohtml($news_row['message'])), true),
				'date'	=>	mod_date($news_row['date'])
			);
		}

		write_cache('news', $news);
	}

	return $news;
}

/**
* onArcade 2.2 cache engine
**/
function get_cache($file_name) {
	global $settings, $u_time;
	$cache_file = 'cache/'. $file_name .'.cache';

	if ($settings['cache'] == 1 && file_exists($cache_file) && filemtime($cache_file) > ($u_time - ($settings['cache_expire'] * 60))) {
    	return unserialize(file_get_contents($cache_file));
	} else
    	return false;
}
function write_cache($file_name, $file_content) {
	global $settings;
	if ($settings['cache'] == 1) {
		// Some important variables
		$cache_file = 'cache/'. $file_name .'.cache';
		$file_content = serialize($file_content);

		// And lets write the file
		$open_cache_file = fopen($cache_file, "w");
		fwrite($open_cache_file, $file_content);
		fclose($open_cache_file);
	}
}

// make sure username is valid
function verify_username($username) {
	if (preg_match('#^[a-zA-Z0-9._-]{3,25}$#', $username))
		return true;
	else
		return false;
}

// make sure email is valid
function verify_email($email) {
	if (preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,4}$#', $email))
		return true;
	else
		return false;
}

// new PM notification
function new_pm() {
	global $lang, $session, $header_add, $tbl_prefix;
	
	if ($session->info['newpm'] == 1) {
		$header_add .= '
<script type="text/javascript">
  addLoadEvent(function() { if (window.confirm("'. $lang['new_pm_click_ok_cancel'] .'")) window.location = siteurl + "/privatemessages.php"; });
</script>';

		mysql_query("UPDATE ". $tbl_prefix ."users SET newpm = '0' WHERE userid = ". $session->info['id'] ." LIMIT 1");
	}

	if ($session->info['new_friend'] == 1) {
		$header_add .= '
<script type="text/javascript">
  addLoadEvent(function() { if (window.confirm("'. $lang['new_friend_ok_cancel'] .'")) window.location = siteurl + "/usercp.php?a=friends&type=invites"; });
</script>';

		mysql_query("UPDATE ". $tbl_prefix ."users SET new_friend = '0' WHERE userid = ". $session->info['id'] ." LIMIT 1");
	}
}

// check if we have correct HTTP_REFERER
function http_referer($alternative = '') {
	global $settings;
	if (substr($_SERVER['HTTP_REFERER'], 0, strlen($settings['siteurl'])) == $settings['siteurl'])
		return $_SERVER['HTTP_REFERER'];
	else
		return $settings['siteurl'] . $alternative;
}

// count the number of rows in database
function count_rows($table_name, $variables = null) {
	if ($variables == NULL)
		$sql = "SELECT count(*) FROM ". $table_name;
	else
		$sql = "SELECT count(*) FROM ". $table_name ." WHERE ". $variables;
	$query = mysql_query($sql);
	$row = mysql_fetch_assoc($query);

	return $row['count(*)'];
}

// make "unserializing" easier
function unserialize2($data) {
	if (strlen($data))
		return unserialize($data);
	else
		return array();
}

// convert json data to array
function json_array($json) {
	$json = str_replace('\\/', '/', $json);
	$json = str_replace(array('":', '{', '}', '[', ']'), array('"=>', 'array(', ')', 'array(', ')'), $json);
	@eval("\$json_array = ". $json .";");
	return $json_array;
} 

// JSON output
function json_o($json_array) {
	header("Content-type: text/json; charset=utf-8"); // header
	echo json_encode($json_array); // output
	exit(); // and exit
}

?>