> -----Original Message-----
> From: John Gostick
> Sent: 14/08/04 15:19

> I have a quick question about using the PHP die() function. 

[...]

> I changed the code to this:
> 
>   $connection = mysql_connect($host, $user, $password)
>    or die("Error connecting to SQL server");
>   $db = mysql_select_db($database, $connection)
>    or header('Location: ../errors/databaseselect.php');
> 
> Which works fine (tested by deliberately misnaming database so it can't
find it).
> 
> However if I then use the same approach for the server connection error,
> like below, it doesn't work.
> 
> 
>   $connection = mysql_connect($host, $user, $password)
>    or header('Location: ../errors/servererror.php');

On failure, this causes the header to be sent, but doesn't actually stop execution of 
your script, so...

>   $db = mysql_select_db($database, $connection)

this will now fail because you don't have a valid $connection.

>    or header('Location: ../errors/databaseselect.php');

The bottom line is, whenever you issue a header("Location: ....") call, you also need 
to cause the script to die if your logic demands that -- so the above should be 
written something like:

  if (!$connection = mysql_connect($host, $user, $password)):
    header('Location: ../errors/servererror.php');
    die();
  endif;

  if (!$db = mysql_select_db($database, $connection)):
    header('Location: ../errors/databaseselect.php');
    die();
  endif;

(And, BTW, the HTTP definition says that the Location: header should specify a full 
absolute URL, so that should be:

  header("Location: http://your.server.name/path/to/errors/servererror.php";);

etc.)

Cheers!

Mike

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to