Datalife Engine RSS problem... please help me!

Discussion in 'PHP' started by Divvy, Mar 29, 2011.

  1. #1
    hi friends,

    my RSS feed is not working:
    http://www.celebridadesdespidas.com/rss.xml

    I got a error:
    Warning: Cannot modify header information - headers already sent by (output started at /home/celebs/public_html/language/Portuguese/website.lng:1) in /home/famosas/public_html/engine/rss.php on line 209
    Code (markup):
    Im using the Datalife Engine script, can someone help me fix this issue?
    Line 209 is:
    header( 'Content-type: application/xml' );
    Code (markup):
    <?php
    
    define( 'DATALIFEENGINE', true );
    define( 'ROOT_DIR', '..' );
    define( 'ENGINE_DIR', dirname( __FILE__ ) );
    
    @error_reporting( E_ALL ^ E_NOTICE );
    @ini_set( 'display_errors', true );
    @ini_set( 'html_errors', false );
    @ini_set( 'error_reporting', E_ALL ^ E_NOTICE );
    
    include ENGINE_DIR . '/data/config.php';
    
    if( $config['http_home_url'] == "" ) {
    	
    	$config['http_home_url'] = explode( "engine/rss.php", $_SERVER['PHP_SELF'] );
    	$config['http_home_url'] = reset( $config['http_home_url'] );
    	$config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];
    
    }
    
    require_once ENGINE_DIR . '/classes/mysql.php';
    include_once ENGINE_DIR . '/data/dbconfig.php';
    include_once ENGINE_DIR . '/modules/functions.php';
    require_once ENGINE_DIR . '/classes/templates.class.php';
    include_once ROOT_DIR . '/language/' . $config['langs'] . '/website.lng';
    
    check_xss();
    $_TIME = time() + ($config['date_adjust'] * 60);
    
    $tpl = new dle_template( );
    $tpl->dir = ROOT_DIR . '/templates';
    define( 'TEMPLATE_DIR', $tpl->dir );
    
    //####################################################################################################################
    //                    Îïðåäåëåíèå êàòåãîðèé è èõ ïàðàìåòðû
    //####################################################################################################################
    $cat_info = get_vars( "category" );
    
    if( ! $cat_info ) {
    	$cat_info = array ();
    	
    	$db->query( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
    	while ( $row = $db->get_row() ) {
    		
    		$cat_info[$row['id']] = array ();
    		
    		foreach ( $row as $key => $value ) {
    			$cat_info[$row['id']][$key] = $value;
    		}
    	
    	}
    	set_vars( "category", $cat_info );
    	$db->free();
    }
    //################# Îïðåäåëåíèå ãðóïï ïîëüçîâàòåëåé
    $user_group = get_vars( "usergroup" );
    
    if( ! $user_group ) {
    	$user_group = array ();
    	
    	$db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
    	
    	while ( $row = $db->get_row() ) {
    		
    		$user_group[$row['id']] = array ();
    		
    		foreach ( $row as $key => $value ) {
    			$user_group[$row['id']][$key] = $value;
    		}
    	
    	}
    	set_vars( "usergroup", $user_group );
    	$db->free();
    }
    
    $member_id['user_group'] = 5;
    
    if( isset( $_REQUEST['year'] ) ) $year = intval( $_GET['year'] ); else $year = '';
    if( isset( $_REQUEST['month'] ) ) $month = @$db->safesql( strip_tags( str_replace( '/', '', $_GET['month'] ) ) ); else $month = '';
    if( isset( $_REQUEST['day'] ) ) $day = @$db->safesql( strip_tags( str_replace( '/', '', $_GET['day'] ) ) ); else $day = '';
    if( isset( $_REQUEST['user'] ) ) $user = @$db->safesql( strip_tags( str_replace( '/', '', urldecode( $_GET['user'] ) ) ) ); else $user = '';
    if( isset( $_REQUEST['news_name'] ) ) $news_name = @$db->safesql( strip_tags( str_replace( '/', '', $_GET['news_name'] ) ) ); else $news_name = '';
    if( isset( $_REQUEST['newsid'] ) ) $newsid = intval( $_GET['newsid'] ); else $newsid = 0;
    if( isset( $_REQUEST['news_page'] ) ) $news_page = intval( $_GET['news_page'] ); else $news_page = 0;
    if( isset( $_REQUEST['category'] ) ) $category = @$db->safesql( strip_tags( str_replace( '/', '', $_GET['category'] ) ) ); else $category = '';
    if (isset ( $_REQUEST['catalog'] )) $catalog = @$db->safesql ( substr ( strip_tags ( str_replace ( '/', '', urldecode ( $_GET['catalog'] ) ) ), 0, 3 ) ); else $catalog = '';
    
    if( isset( $_REQUEST['category'] ) ) {
    	if( substr( $_GET['category'], - 1, 1 ) == '/' ) $_GET['category'] = substr( $_GET['category'], 0, - 1 );
    	$category = explode( '/', $_GET['category'] );
    	$category = end( $category );
    	$category = $db->safesql( strip_tags( $category ) );
    } else
    	$category = '';
    
    if( $category != '' ) $category_id = get_ID( $cat_info, $category );
    else $category_id = false;
    
    $view_template = "rss";
    
    $config['allow_cache'] = true;
    $config['allow_banner'] = false;
    $config['rss_number'] = intval( $config['rss_number'] );
    $config['rss_format'] = intval( $config['rss_format'] );
    $cstart = 0;
    
    if ( $user ) $config['allow_cache'] = false;
    
    if( $_GET['subaction'] == 'allnews' ) $config['home_title'] = $lang['show_user_news'] . ' ' . htmlspecialchars( $user ) . " - " . $config['home_title'];
    elseif( $_GET['do'] == 'cat' ) $config['home_title'] = stripslashes( $cat_info[$category_id]['name'] ) . " - " . $config['home_title'];
    
    $rss_content = <<<XML
    <?xml version="1.0" encoding="{$config['charset']}"?>
    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
    <title>{$config['home_title']}</title>
    <link>{$config['http_home_url']}</link>
    <language>ru</language>
    <description>{$config['home_title']}</description>
    <generator>DataLife Engine</generator>
    XML;
    
    if( $config['site_offline'] == "yes" or ! $config['allow_rss'] ) {
    	
    	$rss_content .= <<<XML
    <item>
    <title>RSS in offline mode</title>
    <guid isPermaLink="true"></guid>
    <link></link>
    <description>RSS in offline mode</description>
    <category>undefined</category>
    <dc:creator>DataLife Engine</dc:creator>
    <pubDate>DataLife Engine</pubDate>
    </item>
    XML;
    
    } else {
    	
    	if( $config['rss_format'] == 1 ) {
    		
    		$tpl->template = <<<XML
    <item>
    <title>{title}</title>
    <guid isPermaLink="true">{rsslink}</guid>
    <link>{rsslink}</link>
    <description><![CDATA[{short-story}]]></description>
    <category><![CDATA[{category}]]></category>
    <dc:creator>{rssauthor}</dc:creator>
    <pubDate>{rssdate}</pubDate>
    </item>
    XML;
    	
    	} elseif( $config['rss_format'] == 2 ) {
    		
    		$rss_content = <<<XML
    <?xml version="1.0" encoding="{$config['charset']}"?>
    <rss version="2.0" xmlns="http://backend.userland.com/rss2" xmlns:yandex="http://news.yandex.ru">
    <channel>
    <title>{$config['home_title']}</title>
    <link>{$config['http_home_url']}</link>
    <language>ru</language>
    <description>{$config['home_title']}</description>
    <image>
    <url>{$config['http_home_url']}yandexlogo.gif</url>
    <title>{$config['home_title']}</title>
    <link>{$config['http_home_url']}</link>
    </image>
    <generator>DataLife Engine</generator>
    XML;
    		
    		$tpl->template = <<<XML
    <item>
    <title>{title}</title>
    <link>{rsslink}</link>
    <description>{short-story}</description>
    <category>{category}</category>
    <author>{rssauthor}</author>
    <pubDate>{rssdate}</pubDate>
    <yandex:full-text>{full-story}</yandex:full-text>
    </item>
    XML;
    	
    	} else {
    		
    		$tpl->template = <<<XML
    <item>
    <title>{title}</title>
    <guid isPermaLink="true">{rsslink}</guid>
    <link>{rsslink}</link>
    <description>{short-story}</description>
    <category>{category}</category>
    <dc:creator>{rssauthor}</dc:creator>
    <pubDate>{rssdate}</pubDate>
    </item>
    XML;
    	
    	}
    	
    	$tpl->copy_template = $tpl->template;
    	
    	include_once ENGINE_DIR . '/engine.php';
    	
    	$rss_content .= $tpl->result['content'];
    }
    
    $rss_content .= '</channel></rss>';
    
    header( 'Content-type: application/xml' );
    echo $rss_content;
    
    ?>
    PHP:

     
    Divvy, Mar 29, 2011 IP
  2. skywebsol

    skywebsol Well-Known Member

    Messages:
    161
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    103
    #2
    try this one on very top of the code

    ob_start();
     
    skywebsol, Mar 29, 2011 IP
  3. Divvy

    Divvy Well-Known Member

    Messages:
    785
    Likes Received:
    7
    Best Answers:
    0
    Trophy Points:
    128
    #3
    wow, nice! It works :D

    thank you so much my friend!
     
    Divvy, Mar 29, 2011 IP
  4. vinoth.t

    vinoth.t Peon

    Messages:
    156
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #4
    Whenever you set the header in PHP. The header should be first line. For example if you code like
    
    
    <?php
    header( 'Content-type: application/xml' );
    ?>
    
    Code (markup):
    It will show error.
    This line should be like
    
    <?php
    header( 'Content-type: application/xml' );
    ?>
    
    Code (markup):
    Because In code1 we have started the PHP tag with newline(1.e second line). So when execute the code, apache will send the response to client when see the line1(just a empty line).
     
    vinoth.t, Mar 29, 2011 IP