$ _SERVER ['PHP_SELF']不起作用?

Everything works out just fine until I changed the below code from

    <form method='post' action='re.php'>

to

    <form method='post' action='<?php echo $_SERVER["PHP_SELF"];?>'>

It gives me HTTP error 500. I have done some googling but still have no idea why this is happening! Thanks so much for help!

Below is the whole script

<?php

$hostname = 'localhost';
$username = 'Ciara';
$password = 'mypass';
$database = 'users';        

$conn = mysqli_connect($hostname,$username, $password, $database);
if (!$conn) {
    die ("Databas connect failed: " . mysqli_connect_error());
} else {
    echo "Connected successfully. <br>";
}

echo <<<_END
<html>
    <head>
        <title>Register</title>
    </head>
    <body><center>
        <form method='post' action='<?php echo $_SERVER["PHP_SELF"];?>'>
        Firstname: <input type='text' name='firstname'><br>
        Lastname: <input type='text' name='lastname'><br>
        E-mail: <input type='text' name='email'><br>
        Gender: <input type='radio' value='female' name='gender'>Female
                <input type='radio' value='male' name='gender'>Male<br>
        Username: <input type='text' name='username'><br>
        Password: <input type='text' name='password'><br>
        <input type='submit' value='Submit Form'>
        </form></center>

_END;

if (isset($_POST['firstname']) && 
    isset($_POST['lastname']) &&
    isset($_POST['email']) &&
    isset($_POST['gender']) &&
    isset($_POST['username']) &&
    isset($_POST['password'])) {

    $firstname = get($conn, 'firstname');
    $lastname = get($conn, 'lastname');
    $email = get($conn, 'email');
    $gender = get($conn, 'gender');
    $username = get($conn, 'username');
    $password = get($conn, 'password');

    $query = "insert into useracc values" . "(null, '$firstname','$lastname','$email','$gender','$username','$password')";

    if (mysqli_query($conn, $query)) {
        echo "You have successfully registered! <br>";
    } else {
        echo "Failed to register." . mysqli_error($conn);
    }
}

mysqli_close($conn);
echo "</body></html>";

function get($conn, $var) {
     return mysqli_real_escape_string($conn, $_POST[$var]);
}
?>

You can't add PHP inside your HTML when you're using echo

<?php

$hostname = 'localhost';
$username = 'Ciara';
$password = '0950767';
$database = 'users';        

$conn = mysqli_connect($hostname,$username, $password, $database);
if (!$conn) {
    die ("Databas connect failed: " . mysqli_connect_error());
} else {
    echo "Connected successfully. <br>";
}

?>
<html>
    <head>
        <title>Register</title>
    </head>
    <body><center>
        <form method='post' action='<?php echo $_SERVER["PHP_SELF"];?>'>
        Firstname: <input type='text' name='firstname'><br>
        Lastname: <input type='text' name='lastname'><br>
        E-mail: <input type='text' name='email'><br>
        Gender: <input type='radio' value='female' name='gender'>Female
                <input type='radio' value='male' name='gender'>Male<br>
        Username: <input type='text' name='username'><br>
        Password: <input type='text' name='password'><br>
        <input type='submit' value='Submit Form'>
        </form></center>

<?php
if (isset($_POST['firstname']) && 
    isset($_POST['lastname']) &&
    isset($_POST['email']) &&
    isset($_POST['gender']) &&
    isset($_POST['username']) &&
    isset($_POST['password'])) {

    $firstname = get($conn, 'firstname');
    $lastname = get($conn, 'lastname');
    $email = get($conn, 'email');
    $gender = get($conn, 'gender');
    $username = get($conn, 'username');
    $password = get($conn, 'password');

    $query = "insert into useracc values" . "(null, '$firstname','$lastname','$email','$gender','$username','$password')";

    if (mysqli_query($conn, $query)) {
        echo "You have successfully registered! <br>";
    } else {
        echo "Failed to register." . mysqli_error($conn);
    }
}

mysqli_close($conn);
echo "</body></html>";

function get($conn, $var) {
     return mysqli_real_escape_string($conn, $_POST[$var]);
}
?>

Check this code :).