Julia: Cutenews: Fatal error: Cannot redeclare replace_title()

Beitrag lesen

Hallo,

ich benutze Cutenews für meine Seite und heute habe ich zum ersten Mal den Mod-Rewrite Hack ausprobiert. Er ermöglicht mir die Links Suchmaschinenfreundlicher zu gestalten:

index.php/t=title => index/comments/title

Allerdings habe ich zwei News auf der gleichen Seite, ohne den Hack funktioniert alles wunderbar. Ich kann Kommentare unanbhängig voneinander verfassen und senden.

Ohne Hack sieht es so aus:

<?PHP
 $template = "blog";
 $number = "2";
 $category = "111";
 include("post/show_news.php");
?>

Mit Hack so:

<?PHP
 $template = "blog";
 $number = "2";
 $category = "110";
 ob_start();

$path_to_data = "post/data/";

$url = $_GET['url'];
$test = find_archive(title_to_id($url));
$id = title_to_id($url);
$ucat = title_to_ucat($url);
 include("post/show_news.php");
 function replace_title($title){
$letter_replacements = array('ö' => 'oe', 'ä' => 'ae');
 $result = strtolower(strip_tags(html_entity_decode($title)));
 $result = strtr($result, $letter_replacements);
 $result = preg_replace('/\W/', "-", strip_tags($result));

return $result;
}

function title_to_id($title){
global $path_to_data;

if($handle = opendir($path_to_data."/archives"))
  while (false !== ($file = readdir($handle))){
   if($file != "." and $file != ".." and eregi("news", $file)){
    $files_arch[] = $path_to_data."/archives/$file";
   }
  }
 $files_arch[] = $path_to_data."/news.txt";

foreach($files_arch as $file){
 $all_news = file($file);
 foreach($all_news as $news_line){
  $news_arr = explode("|", $news_line);
  if(replace_title($news_arr[2]) == $title){

return $news_arr[0];
  }
 }
}
}

function title_to_ucat($title){
global $path_to_data;
 $all_news = file($path_to_data."/news.txt");
 foreach($all_news as $news_line){
  $news_arr = explode("|", $news_line);
  if(replace_title($news_arr[2]) == $title){
   return $news_arr[6];
  }
 }
}

function find_archive($id){
global $path_to_data;

if($handle = opendir($path_to_data."/archives"))
  while (false !== ($file = readdir($handle))){
   if($file != "." and $file != ".." and eregi("news", $file)){
    $files_arch[] = $path_to_data."/archives/$file";
   }
  }
 $files_arch[] = $path_to_data."/news.txt";

foreach($files_arch as $file){
  $all_news_db = file("$file");
  foreach($all_news_db as $news_line){
   $news_arr = explode("|", $news_line);
   if($news_arr[0] == $id){
    if(ereg("([[:digit:]]{0,}).news.arch", $file, $regs)){ $archive = $regs[1]; }
    return $archive;
   }
  }
 }
}

function id_to_title($id, $archiv = false, $type, $page = ''){
global $path_to_data;

if($archiv){
 $all_news = file($path_to_data."/archives/".$archiv.".news.arch");
 }
 else{
 $all_news = file($path_to_data."/news.txt");
 }

foreach($all_news as $news_line){
  $news_arr = explode("|", $news_line);
  if($news_arr[0] == $id){
   $title = replace_title($news_arr[2]);
   if($type == "commentspage"){
    return "commentspage/".$page."/".$title.".html";
   }
   else
   return $type."/".$title.".html";
  }
 }
}

$show_news = ob_get_contents();
ob_get_clean();

$script_file = end($script_url = explode("/", $HTTP_SERVER_VARS['SCRIPT_NAME']));
$path = substr($HTTP_SERVER_VARS['SCRIPT_NAME'], 0, -strlen($script_file));

$find = array( /*post*/   "#".$script_file."?subaction=showfull&amp;id=(.*?)&amp;archive=&amp;start_from=&amp;ucat=(.*?)&amp;#ie",
    /*postcomments*/ "#".$script_file."?subaction=showcomments&amp;id=(.*?)&amp;archive=&amp;start_from=&amp;ucat=(.*?)&amp;#ie",
    /*postpage*/  "#".$script_file."?start_from=(.*?)&amp;ucat=&amp;archive=&amp;subaction=&amp;id=(.*?)&amp;#i",
    /*archiveindex*/ "#".$script_file."?archive=(.*?)&subaction=list-archive#i",
    /*archive*/   "#".$script_file."?subaction=showfull&amp;id=(.*?)&amp;archive=(.*?)&amp;start_from=&amp;ucat=(.*?)&amp;#ie",
    /*archivepage*/  "#".$script_file."?start_from=(.*?)&amp;ucat=&amp;archive=(.*?)&amp;subaction=list-archive&amp;id=&amp;#i",
    /*archivecomments*/ "#".$script_file."?subaction=showcomments&amp;id=(.*?)&amp;archive=(.*?)&amp;start_from=&amp;ucat=(.*)&amp;#ie",
    /*searchnews*/  "#".$script_file."?misc=search&subaction=showfull&id=(.*?)&archive=&cnshow=news&ucat=(.*?)&start_from=&#ie",
    /*searcharchives*/ "#".$script_file."?misc=search&subaction=showfull&id=(.*?)&archive=(.*?)&cnshow=news&ucat=(.*?)&start_from=&#ie",
    /*ncommentspage*/ "#".$script_file."?comm_start_from=(.*?)&amp;archive=&amp;subaction=showcomments&amp;id=(.*?)&amp;ucat=(.*?)&amp;#ie",
    /*acommentspage*/ "#".$script_file."?comm_start_from=(.*?)&amp;archive=(.*?)&amp;subaction=showcomments&amp;id=(.*?)&amp;ucat=(.*?)&amp;#ie",
   );

$replace = array( "id_to_title('\1', false, 'post')",
     "id_to_title('\1', false, 'comments')",
     "postpage/\1.html",
     "archiveindex/\1.html",
     "id_to_title('\1', '\2', 'archive')",
     "archivepage/\2/\1.html",
     "id_to_title('\1', '\2', 'comments')",
     "id_to_title('\1', false, 'post')",
     "id_to_title('\1', '\2', 'archive')",
     "id_to_title('\2', false, 'commentspage', '\1')",
     "id_to_title('\3', '\2', 'commentspage', '\1')",
    );

$show_news = preg_replace($find, $replace, $show_news);
$show_news = str_replace("&url=".$url, '', $show_news);

if(!file_exists('.htaccess')){
$htaccess = "RewriteEngine On\n";
$htaccess .= "RewriteBase ".$path."\n\n";
$htaccess .= "RewriteRule ^post/(.*).html(.*)$ ".$script_file."?subaction=showfull&url=$1$2 [L,NC]\n";
$htaccess .= "RewriteRule ^postpage/(.*).html(.*)$ ".$script_file."?start_from=$1$2 [L,NC]\n\n";
$htaccess .= "RewriteRule ^comments/(.*).html(.*)$ ".$script_file."?subaction=showcomments&url=$1$2 [L,NC]\n";
$htaccess .= "RewriteRule ^commentspage/(.*)/(.*).html(.*)$ ".$script_file."?comm_start_from=$1&subaction=showcomments&url=$2$3 [L,NC]\n\n";
$htaccess .= "RewriteRule ^archiveindex/(.*).html(.*)$ ".$script_file."?archive=$1&subaction=list-archive$2 [L,NC]\n";
$htaccess .= "RewriteRule ^archive/(.*).html(.*)$ ".$script_file."?subaction=showfull&url=$1$2 [L,NC]\n";
$htaccess .= "RewriteRule ^archivepage/(.*)/(.*).html(.*)$ ".$script_file."?start_from=$2&archive=$1&subaction=list-archive$3 [L,NC]";

$file = fopen(".htaccess", "w");
fwrite($file, $htaccess);
fclose($file);
}

echo $show_news;
?>

Nun bekomme ich die Fehlermeldung:
Fatal error: Cannot redeclare replace_title() (previously declared in /data/apache/users/kilu.de/toast/www/index.php:18) in /data/apache/users/kilu.de/toast/www/index.php on line 188

Zwei Funktionen treffen aufeinander und es kommt zum Fehler. Gibt es eine Möglichkeit den Fehler zu beheben?