مشكل در خروجي RDF سایت

A-Parsa

New Member
سلام
میخواستم بدونم دلیل بوجود اومدن مشکل زیر چی هست :

http://www.winbeta.net/modules.php?modname=backend&action=rdf&id=1

لینک بالا خروجی قسمت اخبار سایت که دارای "عنوان فارسی" هستند .
در حالی که در لینک زیر که خروجی قسمت نرم افزار با "عناوین انگلیسی" هست هیچ مشکلی وجود نداره :

http://www.winbeta.net/modules.php?modname=backend&action=rdf&id=2

در ضمن ، کدپیج کل سایت UTF-8 و محتوای فایل backend_xml به این صورت :
کد:
<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">

  <channel>
    <title>$sitename</title>
    <link>$homeurl</link>
    <description>Power by $sitename</description>
  </channel>

  <image>
    <title>$sitename</title>
    <url>$homeurl/$stylevar[logopath]</url>
    <link>$homeurl</link>
  </image>

$news_data</rdf:RDF>

ممنون
 

oxygenws

Active Member
خوب، اشكال رو كه خودش توضيح داده
-------------------
Reference to undefined entity 'Oslash'. Error processing resource 'http://www.winbeta.net/modules.php?modname=backend&action=rdf&id=1'. Line 18, Position 20
------------------
به جاي Oslash فكر كنم بايد بذاريد slash!!!!!! (اين فقط يه حدسه)

موفق باشيد، اميد
 

A-Parsa

New Member
سلام .. بله خطا رو نشون داده اما عبارت Oslash کجاست که من باید عوضش کنم ! 8O
 

A-Parsa

New Member
سلام ..
سايت از يك Module به نام Backend براي اينكار استفاده ميكنه كه شامل اين فايلها هست :
1- admin.php
2- index.php
3- install.php
4- writepages.php
من هر چهار فايل بالا --و بخصوص فايل index.php-- رو نگاه كردم و اينطور عبارتي توشون وجود نداشت . يك نكته هم اينكه فكر نميكنم خود فايل ها ايرادي داشته باشند که احتیاج به تغییر در اونها باشه چون همونطور كه می بینید خروجی RDF قسمت مثلاْ "نرم افزار" كه همه عناوينش انگليسي هست هيچ مشكلي نداره و فقط وقتي ميخواد عنوان يك قسمت كه فارسي هست رو بخونه قاط ميزنه :?
 

oxygenws

Active Member
شما خط 18 از فایل modules.php رو اینجا بنویس لطفا تا ذهن من بیشتر روشن بشه :) مرسی.
لطفا اگر خط 18 داخل یه if یا یک حلقه هست، کل اون رو بنویس.
 

A-Parsa

New Member
سلام .. اينم هرچي كه توي فايل Module.php هست .. این فایل اصلی سایته که کار مدیریت همه Module ها رو بر عهده داره *_*

کد:
<?php

require("global.php");

settype($modid,"integer");

if ($modid) {
  $sqlwhere = "id = $modid";
} else {
  $sqlwhere = "name = '" . mysql_escape_string($modname) . "'";
}

if ($data_arr = query_first("SELECT id,name,enable,description,options FROM news_module WHERE $sqlwhere")) {
  if ($data_arr[enable]) {
    $modid = $data_arr[id];
    $modname = $data_arr[name];
    $moddescription = $data_arr[description];
    $modoptions = getmodoptions($modid,"",$data_arr[options]);
    include("modules/$data_arr[name]/index.php");
  } else {
    standarderror("module_disabled");
  }
} else {
  standarderror("invalid_id");
}

?>

آقا منظور از خط 18 ظاهراً اینه : :idea: (حداقل الان میدونیم خط 18 کجاست)

http://feedvalidator.org/check.cgi?...t/modules.php?modname=backend&action=rdf&id=1
 

oxygenws

Active Member
آهان، فکر کنم فهمیدم :)
این خط رو اولین خط برنامه ات یعنی همین module.php بذار (البته بعد از <?php)

کد:
header('Content-type: application/rss+xml');

اگر این بالایی کار نکرد، این رو هم تست کن:

کد:
header('Content-type: application/rss+xml; charset=utf-8');

موفق باشید، امید
 

A-Parsa

New Member
توي اون فايل كه گفته بوديد گذاشتم ولي بعد وقتي كه روي لينك كليك ميكردم ميخواست فايل رو دانلود كنه !
فكر كنم بايد توي فايل index.php مخصوص به اين مودول قرار بگيره البته توي اين فابل هم كه كد بالا رو قرار ميدم باز مي خواد فايل رو دانلود كنه ..
کد:
<?php

if (preg_match("/(modules\/)(.*)(index.php)/i",$PHP_SELF)) {
  header("location:../../index.php");
  exit;
}

function returncatoption($category,$parentid=0,$level=0) {

  global $stylevar;

  if (($category[parentid] == $parentid) & $category[display] & $category[displaymain] & isuserallowed($category[allowview])) {

    if ($level == 3) {
      $category[name] = "------ $category[name]";
    } elseif ($level == 2) {
      $category[name] = "--- $category[name]";
    }

    eval("\$links .= \"".returnpagebit("backend_main_cat")."\";");

    if (($level == 1) | ($level == 2)) {

      $sub_arr = $GLOBALS[cat_arr];
      foreach ($sub_arr AS $key => $val) {
        $val[id] = $key;
        $links .= returncatoption($val,$category[id],$level+1);
      }
      unset($sub_arr);
    }
  }
  return $links;
}

switch($action) {

case "":

  unset($cat_options);

  if (!empty($cat_arr)) {
    foreach ($cat_arr as $key => $cat) {
      $cat[id] = $key;
      $cat_options .= returncatoption($cat,0,1);
    }
  }

  $navbar = makenavbar("Backend");
  include("modules/$modname/static/main_".$pagesetid.".php");

break;

case "rdf":

  settype($id,"integer");

  if ($id != 0) {

    if (empty($cat_arr[$id])) {
      standarderror("invalid_id");
    }

    if (!isuserallowed($cat_arr[$id][allowview])) {
      standarderror("category_hidden");
    }

    $cat_ids = $id;

    if ($cat_arr[$id][showsubcats]) {
      $temp = $cat_arr;
      foreach ($temp AS $key => $val) {
        if (($val[topid] == $id) | ($val[parentid] == $id)) {
          $cat_ids .= ",$key";
        }
      }
      unset($temp);
    }
  }

  unset($news_data);

  $getdata = query("SELECT id,catid,title,stickypost FROM news_news WHERE".iif($id != 0," (catid IN ($cat_ids)) AND")." (display = 1) AND (program = 0) ORDER BY stickypost DESC,time DESC LIMIT $backend_show");

  while ($news = fetch_array($getdata)) {
    if (isuserallowed($cat_arr[$news[catid]][allowview])) {

      $news[title] = htmlentities($news[title]);

      if ($news[stickypost] == 2) {
        eval("\$news_data .= \"".returnpagebit("backend_xml_post")."\";");
      } elseif ($news[stickypost] == 1) {
        eval("\$sticky .= \"".returnpagebit("backend_xml_post")."\";");
      } else {
        eval("\$news_data .= \"".returnpagebit("backend_xml_post")."\";");
      }
    }
  }

  if (!empty($sticky)) {
    $news_data .= $sticky;
    unset($sticky);
  }

  $sitename = htmlentities($sitename);
  $homeurl = htmlentities($homeurl);

 header("Content-Type: text/xml");
 eval("echooutput(\"".returnpageabit("backend_xml")."\");");

break;

default:
  standarderror("invalid_link");
}

?>
چهار خط بالاتر فكر كنم بايد كد رو قرار داد درسته ولي نميدونم چرا بعد كه روي لينكش كليك ميكنم شروع ميكنه به دانلود :n_anzar:
 

oxygenws

Active Member
دلیل دانلود کردن اینه که سرور این توسعه رو نمی شناسه.... و احتمالا جایی که header رو گذاشتیم درست بوده (فعلا بهش دست نزن)
خوب، پس شاید بد نباشه که این رو تست کنی....

کد:
header('Content-type: text/htmll; charset=utf-8');

موفق باشید، امید
 

oxygenws

Active Member
:) تو پیام قبلی جلوی html یه "l" اضافه گذاشته بودم، تو هم همونطوری گذاشتی؟!!
 

A-Parsa

New Member
آره من هم همونطور اشتباه كد رو وارد كردم :) اما الان كه كد رو درست كردم خيلي باحال شده فايل رو ديگه دانلود نميكنه اما :lol: هيچي نميشه يعني روي لينك كه كليك ميكنم ميخوام خروجيش رو نشون بده هيچ اتفاقي نمي افته :D
 

A-Parsa

New Member
واقعاْ ممنون و متشكر كه وقت گذاشتيد .. متاسفم كه بالاخره درست نشد .
 

جدیدترین ارسال ها

بالا