I just wanted to let know I figured out my last issue (last as in, for now). In my navigation.php include file, I had if ($page = about) echo href.... I changed it to if ($page == about) echo.... and it suddenly worked! Imagine that... Thanks all for you help, you are celebrities in my book now. On Wed, Aug 5, 2009 at 1:44 PM, Martin Scotta <martinscotta@xxxxxxxxx>wrote: > You are using a value-filled array as a key-filled. Try this snippet > and look the results... > > $pages = array('about' , 'services', 'portfolio', 'contact'); > $page = array_key_exists( 'page', $_GET ) ? $_GET[ 'page' ] : 'about'; > /*if*/ false === array_search( $page, $pages, true ) && ( > $page = 'about' > ); > > # note the sintax used to avoid if-statement > # this has the same behaviour, but with less performance > $pages = array('about' , 'services', 'portfolio', 'contact'); > $page = array_key_exists( 'page', $_GET ) ? $_GET[ 'page' ] : 'about'; > if( false === array_search( $page, $pages, true )) > { > $page = 'about'; > } > > > > On Wed, Aug 5, 2009 at 5:36 PM, Allen McCabe<allenmccabe@xxxxxxxxx> wrote: > > Okay, I see how href="?page=contact" would work, and I do indeed have > only > > one file (which loads includes), but it still is not working. Clicking a > > link, be href=?page=contact, href=?page=services, whatever, it still > loads > > the page with the ?page=whatever attached to the URL, but it is not > > subsituting the $page variable within the include snippets, and it just > > loads the 'about' versions of all includes > (/phpincludes/about_content.php > > as opposed to /phpincludes/services_content.php or whichever). > > > > This is really stumping me and try as I might I cannot see why it will > not > > work. Here is some of my code as it is currently: > > > > On default.php: > > > > [code=default.php] > > > > <html> > > <head> > > <?php > > > > $pages = array( > > // list of includes: > > 'about' , 'services', 'portfolio', 'contact' > > ); > > $page = isset($_GET['page']) && isset($pages[$_GET['page']]) ? > > $_GET['page'] : 'about'; > > // about is default page here > > > > ?> > > <title> > > > > [/code] > > > > then in the body tags > > > > [code=default.php] > > > > <td><?php include('phpincludes/' . $page . '_centerbar.php'); ?></td> > > </tr> > > <?php include('phpincludes/nav2.php'); ?> > > <tr> > > > > [/code] > > [code=nav2.php] > > > > <a href="?page=services">SERVICES</a> > > > > [/code] > > > > It is surprisingly little code and I am starting to wonder if any php > > settings on my server are inhibiting this. What do you think? > > > > > > > > 2009/8/5 ollisso <ollisso@xxxxxxxxxx> > > > >> On Wed, 05 Aug 2009 22:08:30 +0300, Allen McCabe <allenmccabe@xxxxxxxxx > > > >> wrote: > >> > >> You can do something like that: > >> > >> links: > >> <a href='?page=contact'>Contact</a> > >> > >> This will work if you have only one file, all the time and it is default > >> one for current folder. (normally that is index.php, might be > default.php in > >> your case) > >> > >> Second option is to use more harder approach: > >> > >> $pos = > >> > min(strpos($_SERVER['QUERY_STRING'],'&'),strpos($_SERVER['QUERY_STRING'],'=')); > >> $act = ($pos!==false) ? substr($_SERVER['QUERY_STRING'], 0, $pos) : > >> $_SERVER['QUERY_STRING']; > >> $page = strtolower($act); > >> > >> then you can use links like: > >> href='?contact' > >> or if you need: > >> href='?contact=1' (in case of GET forms) > >> > >> > >> Third option is to use mod_rewrite, but this is slightly harder :) > >> > >> But then you will be able to use links like: > >> www.domain.com/contact/ > >> (which will work like: index.php?page=contact internally) > >> > >> About checking what is included: > >> Imagine following scenario: > >> > >> $page = isset($_GET['page']) ? $_GET['page'] : 'about'; > >> > >> include 'modules/'.$page.'.php'; > >> > >> Problem here is that you can include ANY file. > >> For example: > >> ?page=../index > >> will work as: > >> include 'modules/../index.php'; > >> > >> Which is crearly not what is intended. > >> > >> There is also much more dangerous scenarios of this. > >> > >> I hope this explains something :) > >> > >> > >> > >> Excellent, your snippet is working nicely. Thank you! > >>> > >>> Unfortunately, when I click a link ( <a href=" > >>> http://uplinkdesign.hostzi.com/default.php?page=contact"> ), > >>> deafult.php?contact shows in the browser, but the default (about) > content > >>> is > >>> loading. > >>> > >>> Also, I don't know what you mean by checking what is included. > >>> > >>> 2009/8/5 ollisso <ollisso@xxxxxxxxxx> > >>> > >>> On Wed, 05 Aug 2009 20:19:00 +0300, Allen McCabe < > allenmccabe@xxxxxxxxx> > >>>> wrote: > >>>> > >>>> Sure. > >>>> > >>>>> > >>>>> When I load my site, default.php loads ( displaying: > >>>>> http://uplinkdesign.hostzi.com/ in the browser as expected). > $thisPage > >>>>> is > >>>>> set to "about" via: > >>>>> > >>>>> <?php > >>>>> if (!isset($thisPage)) { > >>>>> $thisPage="about"; > >>>>> } else { > >>>>> $thisPage = addslashes($_GET['page']); > >>>>> } > >>>>> ?> > >>>>> > >>>>> in the <head> tags. > >>>>> > >>>>> > >>>>> I am seeing this: > >>>>> > >>>>> The first 2 includes work just fine, loading to proper middle section > >>>>> and > >>>>> proper right-hand-side page content, the navigation include also > loads, > >>>>> but > >>>>> all the of "tabs" (background images) are the currentpage image, as > >>>>> opposed > >>>>> to not, as they should be (the the exception of the About Us > background > >>>>> image). > >>>>> > >>>>> It seems that $thisPage is equal to all four values, so all the if > >>>>> statements within navigation tell PHP to load the current page image > for > >>>>> all > >>>>> 4 links. > >>>>> > >>>>> Does this help? > >>>>> > >>>>> > >>>> Looks like you need something like that: > >>>> $pages = array( > >>>> // list of modules you have, for example: > >>>> 'about' , 'help', etc > >>>> ); > >>>> $page = isset($_GET['page']) && isset($pages[$_GET['page']]) ? > >>>> $_GET['page'] : 'about'; > >>>> // about is default page here > >>>> > >>>> then just: > >>>> include 'modules/'.$page.'.php'; > >>>> > >>>> Always remember that you have to check what is included. > >>>> Best approach(if possible) to have a predefined list of all modules > which > >>>> can be included. > >>>> > >>>> Else, there is some nasty things like: > >>>> ?page=../index.php > >>>> (infinity recurssion) > >>>> > >>>> ?page=http://otherhost.com/hacker. > >>>> (inclusion of malicious script) > >>>> and so on. > >>>> > >>>> > >>>> > >>>> > >>>> On Wed, Aug 5, 2009 at 10:10 AM, Jerry Wilborn < > jerrywilborn@xxxxxxxxx > >>>> > >>>>> >wrote: > >>>>> > >>>>> Look > >>>>> > >>>> > >>>> > >>>> I'm having trouble understanding your description of the problem. > Can > >>>> > >>>>> you > >>>>>> tell us what you're seeing and what you expect to see? > >>>>>> Jerry Wilborn > >>>>>> jerrywilborn@xxxxxxxxx > >>>>>> > >>>>>> > >>>>>> > >>>>>> On Wed, Aug 5, 2009 at 12:00 PM, Allen McCabe < > allenmccabe@xxxxxxxxx > >>>>>> >wrote: > >>>>>> > >>>>>> I am trying to generate pages by importing content in includes, and > >>>>>> using > >>>>>> > >>>>>>> my > >>>>>>> navigation include to tell PHP to replace a $thisPage variable > which > >>>>>>> all > >>>>>>> the > >>>>>>> includes use <?php include('phpincludes/' . $thisPage . '.php') ?> > >>>>>>> > >>>>>>> The idea behind it (I know tons of people do it, but I'm new to > this > >>>>>>> concept), is to have a 'layout' page where only a variable changes > >>>>>>> using > >>>>>>> $_GET on an href (index.php?page=services or index.php?page=about) > to > >>>>>>> load > >>>>>>> the new 'pages'. > >>>>>>> > >>>>>>> PROBLEM: > >>>>>>> All my links are displaying the current page state, and links are > not > >>>>>>> building around the link text (hrefs are built conditionally with > if > >>>>>>> $thisPage != services then build the link, otherwise leave it as > >>>>>>> normal > >>>>>>> text). Same thing with the background image behind the link text > (to > >>>>>>> indicate a page's current position). If the condition is not true, > all > >>>>>>> the > >>>>>>> links (except the true current 'page') are supposed reload > index.php > >>>>>>> and > >>>>>>> pass a variable to itself to place into $thisPage using > >>>>>>> href="index.php?page=" (after which I have a variable which stores > >>>>>>> "about" > >>>>>>> or "services" within the if statement near the link text. > >>>>>>> > >>>>>>> If this sounds like something you are familiar with (former issues > and > >>>>>>> whatnot) please let me know what I'm doing wrong. I would be happy > to > >>>>>>> give > >>>>>>> you any code you want to look at (index.php or navigation.php, > >>>>>>> whatever). > >>>>>>> > >>>>>>> Thanks again for your help PHP gurus! > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>> > >>>> > >>> > >>> > >> > >> > > > > > > -- > Martin Scotta >