views:

43

answers:

1

I'm trying to standardize the way I handle exceptions in my web application (homemade framework) but I'm not certain of the "correct" way to handle various situations. I'm wondering if there is a best practice from UI/ user-friendly point of view.

  1. User logs into application and opens two tabs showing the same screen. On one tab they issue a delete command on object FOO. Then, in the other tab they then click the edit command on FOO (which no longer exists); e.g. a GET request for editObject.php?object_id=FOO. What should I do when they issue the edit request for this nonexistent object?

    -Currently I am redirecting these "missing" objects to the previous page with an error message like "object does not exist".

  2. User issues a GET request to search for Objects with color=Red, e.g. searchObjects.php?color=Red. The query returning these results blew up because somebody dropped the OBJECTS table. This is an unexpected exception and isn't quite the same as 1).

    -Currently I am redirecting to errorPage.php with a message "Unexpected error"

  3. In general, what should I do if GET/POST parameters that should be there are instead mysteriously missing. Perhaps somebody is trying to inject something?

    -Currently I am treating these the same as 2)


What should I be doing in each of the above 3 cases?

  1. Render a "Object does not exist" view at the url editObject.php?object_id=FOO
  2. Redirect to a controller that displays an error view: header('Location: errorPage.php')
  3. Serve a 404: not sure of the syntax for doing this in PHP/Apache
  4. Other
A: 

I'd say render it and serve a 404. That way, the user has the chance to see where they went wrong in the URL, or copy & paste it. If you redirect to a generic error page, they don't have that chance.

The PHP way to serve a 404 is

header("HTTP/1.0 404 not found");
Pekka