Jump to content

PHP include with ?id=xx


tiffer

Recommended Posts

Hi

 

I have recently moved hosting providers;

 

I have a php include on my website, which feeds latest posts from my forums to my homepage.

 

The code I use is  

  <?php include ('../mb/getposts/posts.php?id=80')?>

 

Now, this code used to work on my old host, but no longer works on my new host, giving an error of

 

Warning: include(../mb/getposts/posts.php?id=80) [function.include]: failed to open stream: No such file or directory in /home/site/public_html/folder/page.php on line 41

Warning: include(../mb/getposts/posts.php?id=80) [function.include]: failed to open stream: No such file or directory in /home/site/public_html/folder/page.php on line 41

Warning: include() [function.include]: Failed opening '../mb/getposts/posts.php?id=80' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/site/public_html/folder/page.php on line 41

 

I can also include the script as

  <?php include ('../mb/getposts/posts.php')?>

and when I do this the script works as it should do, but showing the default option.

 

The ?id=xx bit allows me to choose what forum id I want the posts to be shown on my homepage as  I have lots of individual homepages (long story) and to try and keep files small, I decided to wrap the latest posts php file into something where i could use one file for all the forums IDs that I need to show

 

Does anyone know why this will not work?  I am thinking it's a problem with the php config of my new server, and have asked my hosts, but they are telling me that this is out of their scope of support..  Any ideas would be appreciated

 

Link to comment
Share on other sites

There there is something wrong with your posts.php file. You're probably doing this:

 

if(!isset($_GET['id'])){
   $id = 2;
}else{
   $id = $_GET['id'];
}

 

You'd want to be doing this now, because you're not declaring a $_GET superglobal, your declaring a standard variable.

 

if(!isset($id)){
   $id = 2;
}

 

You won't need to set it to itself again because it'll already be set.

Link to comment
Share on other sites

Hi,

 

The posts.php file for the ?id=xx is:

 

 

<?php 
/**
* VB Recent Topics - example usage and instructions
* @author George Gonzalez <webmaster@socaltrailriders.org>
* @version 2.0
* @package Recent_Topics
* @link http://www.vbulletin.org/forum/showthread.php?t=134320
*/


// THIS MUST BE CALLED FIRST. IF DOING FROM A DIFFERENT DIRECTLY, ADJUST THE FOLLOWING...
require_once('recent_topics.class.php');

$_GET[id] =  ereg_replace("[^0-9]","","$_GET[id]");
if($_GET[id] ==""){$_GET[id] = 2;}


/**
* DISPLAY OPTIONS
**/

/* 
Include_from and exclude_from are forum ID filters. Use one or the other but 
NOT both. List the forum ID's seperated by commas. Defaults to all forums if
nothing is present.

ex1) to include only forums with ID's 45, 47, and 50...
'include_from' => '45,47,50'

ex2) to exclude forums with ID's 11, 13, 18...
'exclude_from' => '11,13,18'

Quantity is how many topics to bring back. This is optional. Default is 10.

Time format is the same date() format. Refer to http://us.php.net/date for details. 
This is optional and defaults to 3:34 PM.
*/ 
$options = array(	'include_from' 	=> $_GET[id],
				'exclude_from' 	=> '',		
				'quantity'		=> '15',
				'time_format'	=> 'D j F, g:i A');

// initialize the recent_topics object and stick the options array into it						
$rt = new recent_topics($options);

/* 
From here, you have lots of options. If you're okay with PHP, use get_array()
to retrieve the raw topic data and format the output however you want...

ex3) $topics_array = $rt->get_array();

Use get_html_table() to return a string of the recent topics in table format...

ex4) 	$topics_table = $rt->get_html_table();
		echo $topics_table;

Use get_html_list() to return a string of the recent topics in list format...

ex5) 	$topics_list = $rt->get_html_list();
		echo $topics_list;

Or, directly output a table or list with either the display_html_table() or 
display_html_list() methods...

ex6) $rt->display_html_table();
ex7) $rt->display_html_list();			
*/

$rt->display_html_table();
// now, unset the object to close the db connection and clean it up
unset($rt);

// you may rinse and repeat however many times you want ...

?>

 

Would I just need t change

 

$_GET[id] =  ereg_replace("[^0-9]","","$_GET[id]");
if($_GET[id] ==""){$_GET[id] = 2;}

 

to the sample you mentioned below?

 

Link to comment
Share on other sites

Ah, yeah. Easy, instead of doing it like this:

$id = 80;
include('path/to/file.php');

Use:

$_GET['id'] = 80;

 

Then the code I showed you before in posts.php can be almost changed back, but we'll use something a bit different.

 

if(isset($_GET['id']) && preg_match('/[0-9]+/', $_GET['id'])){
  $id = $_GET['id'];
}else{
  $id = 2;
}

 

That checks to see if the ID has been set and that it is a number, you could also use is_numeric if you wanted to instead of the regular expression.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.