Search code examples
phphtmlajaxhref

Determine if the user typed an address or clicked a href


Ok so I have a basic website and the links on the page for about, contact and services load through ajax content from about.php, contact.php and services.php into a main div on my page. All works well.

The way I have it coded is when someone clicks, say, #about I have the following code:

  $.address.change(function(event) {  
      $('#main').load('../' + event.value + '.php');  
  });  
  $('a').click(function() {  
      $.address.value($(this).attr('href'));  
  });

and in about.php I have:

<?php
    // render form
    require("../templates/about_form.php");
?>

All works well, however lets say a crafty user types in domain.com/about.php then they just get served up the content of about_form.php without the rest of my page around it.

Can I determine if a user does this and if so redirect the page to domain.com#about ...

Any advice appreciated.


Solution

  • Wrap your existing pages with

    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        /*page code goes here*/
    
    }else
    {
     header('Location: http://www.domain.com/#yoursection');
    }
    

    What this does is check if the request is an ajax request if not redirects the user to the proper page.