Before you can receive Trackbacks you must create a weblog. If you don’t
have a blog yet there’s no point in continuing.

Receiving Trackbacks is a little more complex than sending them, only
because you will need a database table in which to store them, and you
will need to validate the incoming trackback data. You are encouraged to
implement a thorough validation process to guard against spam and
duplicate data. You may also want to limit the number of Trackbacks you
allow from a particular IP within a given span of time to further
curtail spam. The process of receiving a Trackback is quite simple; the
validation is what takes most of the effort.

In order to accept Trackbacks you must display a Trackback URL next to
each one of your weblog entries. This will be the URL that people will
use to send you Trackbacks (we will refer to this as your “Ping URL”).

Your Ping URL must point to a controller function where your Trackback
receiving code is located, and the URL must contain the ID number for
each particular entry, so that when the Trackback is received you’ll be
able to associate it with a particular entry.

For example, if your controller class is called Trackback, and the
receiving function is called receive, your Ping URLs will look something
like this:

http://example.com/index.php/trackback/receive/entry_id

Where entry_id represents the individual ID number for each of your
entries.

The Trackback specification only requires four pieces of information to
be sent in a Trackback (url, title, excerpt, blog_name), but to make
the data more useful we’ve added a few more fields in the above table
schema (date, IP address, etc.).

Here is an example showing how you will receive and process a Trackback.
The following code is intended for use within the controller function
where you expect to receive Trackbacks.:

$this->load->library('trackback');$this->load->database();if($this->uri->segment(3)==FALSE){$this->trackback->send_error('Unable to determine the entry ID');}if(!$this->trackback->receive()){$this->trackback->send_error('The Trackback did not contain valid data');}$data=array('tb_id'=>'','entry_id'=>$this->uri->segment(3),'url'=>$this->trackback->data('url'),'title'=>$this->trackback->data('title'),'excerpt'=>$this->trackback->data('excerpt'),'blog_name'=>$this->trackback->data('blog_name'),'tb_date'=>time(),'ip_address'=>$this->input->ip_address());$sql=$this->db->insert_string('trackbacks',$data);$this->db->query($sql);$this->trackback->send_success();

The entry ID number is expected in the third segment of your URL. This
is based on the URI example we gave earlier:

http://example.com/index.php/trackback/receive/entry_id

Notice the entry_id is in the third URI segment, which you can retrieve
using:

$this->uri->segment(3);

In our Trackback receiving code above, if the third segment is missing,
we will issue an error. Without a valid entry ID, there’s no reason to
continue.

The $this->trackback->receive() function is simply a validation function
that looks at the incoming data and makes sure it contains the four
pieces of data that are required (url, title, excerpt, blog_name). It
returns TRUE on success and FALSE on failure. If it fails you will issue
an error message.

The incoming Trackback data can be retrieved using this function:

$this->trackback->data('item')

Where item represents one of these four pieces of info: url, title,
excerpt, or blog_name

If the Trackback data is successfully received, you will issue a success
message using:

$this->trackback->send_success();

Note

The above code contains no data validation, which you are
encouraged to add.