too long

I'm trying to create a "Email to friend" page using php. The objective of this page is that users can share the page that they are viewing with their friends.

When a user clicks on the 'share' link, it'll redirect user to a page that asks a user to input their own email address and a recipient email address. The subject will be the previous page title and the email body will be the URL of the previous page plus whatever a user may want to include.

I've got the whole concept here but I'm stuck on the implementation stage. I can't seem to figure the best way to pass the previous page title and the page URL to the share page.

Here's what I have thought of so far.

  • Using POST and GET method doesn't seem to fit in because there is no forms involved when a user clicks on the share link.
  • Using session and cookies would be very tedious as it requires assigning and modifying the cookie / session each time a user views a page.
  • Passing variables in URL would make simply make the URL long and somewhat undesirable.

Is there any other way that I could use to pass the page title and page url to the next page? I'm open for other suggestions on how I could implement this idea differently. Thanks in advance.

As far as I can see, passing the URL as a GET parameter is indeed the ideal solution.

http://example.com/share.php?url=http%3a%2f%2fwww.example.com

note that

  • You need to URL-encode the URL you are passing using urlencode()

  • the total resulting URL should not be longer than 2-4 kilobytes due to restrictions in some browsers.

I don't understand why POST and GET are not an option. Just because there isn't a form on the page doesn't mean you can't put one there. Can the link be turned into a button? If you don't like the look of a button, use CSS. Putting a form on the page would only take a few lines.

I would go for the session approach, even though you consider it tedious. This is called "flash messages" and it's quite commonspread. Zend Framework has these out of the box, CodeIgniter has a neat contributed library for it... Basically, you just need to write a few helper functions and you're set. To get the barebones functionality, you need:

  • adding a new message
  • retrieving a message/all messages
  • clearing messages (could be called after fetching messages)

The messages stored in the session will persist until you clear them, they are immune to redirecting and once you write your helper functions, it'll be as easy as:

//before redirect:
setFlash('You have successfully logged in!');

//after redirect
echo fetchFlash();
clearFlash(); //if fetchFlash doesn't call it automatically

So I wouldn't call it tedious, really. Rather a butt-saver.