if ($row['rank'] == "Triumvir") print "<SPAN STYLE=\"color: #990000; font-weight: bold;\">".$row['rank']."</SPAN>";
elseif ($row['rank'] == "Officer") print "<SPAN STYLE=\"font-weight: bold;\">".$row['rank']."</SPAN>";
else print $row['rank'];
If you had classes that matched the rank you could reduce this to a single line:
echo "<span class=\"$row[rank]\">$row[rank]</span>";
And this code would not change should you later decide to mark up other ranks in some way; you'd just add the new style to the stylesheet under the appropriate class. (The class name need not be exactly the same as the rank; prefixes and/or suffixes could be used as well: "table$row['rank']" would produce, among other things, "tableOfficer" as a class name.)
While we're on the subject of using styles, they could be used to specify things like cell spacing, padding, borders, and widths, as well.
You may also find it easier to edit the HTML in membership.php if you don't have it inside multiple print statements. First, string literals are allowed to span multiple lines; and second, heredoc syntax<<<EOF
where the string is delimited by a custom sequence of characters identified when the string begins by the "<<<" sequence, and continues until the
EOF
sequence appears again makes it unnecessary to \escape either ' or" characters. (Of course, if the string is just being output and doesn't involve any additional PHP, then escaping out of PHP entirely for the duration is a third option.)
As Piranha already noted, using cookies to store authorisations means that you can't trust the authorisations you receive in the cookies. That said,
$_POST['auth'] == addslashes($authkey_2) ? setcookie("auth", 2, time()+3600, "/") : setcookie("auth", 1, time()+3600, "/");
could be shortened a bit to
setcookie("auth", ($_POST['auth'] == addslashes($authkey_2) ? 2 : 1), time()+3600, "/");
And why do the $authkey variables all have addslashes around them? If they came from a file you wrote, why not use addslashes() when you're writing the file so that you don't need to keep doing at again when reading it? Assuming you even need addslashes for some reason - which at present is unexplained.
I also note
if (mysql_num_rows($result) != 0)
{
$members_total = mysql_num_rows($result);
Which would be slightly more efficient as
$members_total = mysql_num_rows($result);
if($members_total!=0)
{