View Single Post
Old February 15th, 2008, 2:01 PM   #1 (permalink)
steelwidow
Registered User
Seasoned Poster
 
steelwidow's Avatar
 
Joined in Nov 2004
Lives in Columbus, Ohio
Hosted on Pass16
71 posts
Gave thanks: 1
Thanked 0 times
fopen - cURL help needed for new RSS cURL Newsfeed

Hi there. I've been using an rss script for a long time to import msn news to a website, but now I get this when using it: (according to surpass the fopen function has been disabled)

Quote:
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /home/USERNAME/public_html/newsfeed/inc2/id_rss.inc on line 65

Warning: fopen(Live Search News: pharmaceutical) [function.fopen]: failed to open stream: no suitable wrapper could be found in /home/USERNAME/public_html/newsfeed/inc2/id_rss.inc on line 65
could not open XML input
Here's the RSS script:

PHP Code:

<?php

/*
Created by SW Designs
http://www.swdesigns.biz
*/

set_time_limit(0);

$file "http://search.msn.com/news/results.aspx?q=pharmaceutical&form=QBNR&format=rss&count=2";

$rss_channel = array();
$currently_writing "";
$main "";
$item_counter 0;


function 
startElement($parser$name$attrs) {
       global 
$rss_channel$currently_writing$main;
       switch(
$name) {
           case 
"RSS":
           case 
"RDF:RDF":
           case 
"ITEMS":
               
$currently_writing "";
               break;
           case 
"CHANNEL":
               
$main "CHANNEL";
               break;
           case 
"IMAGE":
               
$main "IMAGE";
               
$rss_channel["IMAGE"] = array();
               break;
           case 
"ITEM":
               
$main "ITEMS";
               break;
           default:
               
$currently_writing $name;
               break;
       }
}

function 
endElement($parser$name) {
       global 
$rss_channel$currently_writing$item_counter;
       
$currently_writing "";
       if (
$name == "ITEM") {
           
$item_counter++;
       }
}

function 
characterData($parser$data) {
    global 
$rss_channel$currently_writing$main$item_counter;
    if (
$currently_writing != "") {
        switch(
$main) {
            case 
"CHANNEL":
                if (isset(
$rss_channel[$currently_writing])) {
                    
$rss_channel[$currently_writing] .= $data;
                } else {
                    
$rss_channel[$currently_writing] = $data;
                }
                break;
            case 
"IMAGE":
                if (isset(
$rss_channel[$main][$currently_writing])) {
                    
$rss_channel[$main][$currently_writing] .= $data;
                } else {
                    
$rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case 
"ITEMS":
                if (isset(
$rss_channel[$main][$item_counter][$currently_writing])) {
                    
$rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    
$rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}

$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($file"r"))) {
    die(
"could not open XML input");
}

while (
$data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
        die(
sprintf("XML error: %s at line %d",
                    
xml_error_string(xml_get_error_code($xml_parser)),
                    
xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

// output HTML
// print ("<div class=\"channelname\">" . $rss_channel["TITLE"] . "</div>"); 

if (isset($rss_channel["ITEMS"])) {
    if (
count($rss_channel["ITEMS"]) > 0) {
        for(
$i 0;$i count($rss_channel["ITEMS"]);$i++) {
            if (isset(
$rss_channel["ITEMS"][$i]["LINK"])) {
            print (
"\n<div class=\"itemtitle\"><a target=blank href=\"" "go.php?url=" $rss_channel["ITEMS"][$i]["LINK"] . "\">" $rss_channel["ITEMS"][$i]["TITLE"] . "</a></div>");
            } else {
            print (
"\n<div class=\"itemtitle\">" $rss_channel["ITEMS"][$i]["TITLE"] . "</div>");
            }
             print (
"<div class=\"itemdescription\">" $rss_channel["ITEMS"][$i]["DESCRIPTION"] . "</div><br />");         }
    } else {
        print (
"<b>There are no articles in this feed.</b>");
    }
}

?>
I asked Surpass why it wasn't working and they said because they disabled the f_open and I should use cURL for security reasons. Can anyone tell me what lines to change in this script to get it to work?

I think it's actually this area...

PHP Code:
$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($file"r"))) {
    die(
"could not open XML input"); 
Also within this little script I think we need to declare the path to cURL?????

Any help would be appreciated. Hey if we can get this to work this is a nice little script to share with others so they can easilly get RSS feeds to work on their sites as well.

If you know of another script that would work in it's place, please advise.

Thanks in advance for your help.
__________________
Pass16
http://www.swdesignshosting.com
steelwidow is offline   Reply With Quote