Следуйте советам Артефакто о внедрении SQL и хешировании паролей в базе данных. Другие вещи ...
echo "I'm sorry but the username you specified has already been taken. Please pick another one.";
unset($username);
header("Location: /registration?registration=false");
Не работает, потому что вы не можете эхо, а затем отправить заголовок. Заголовки должны быть отправлены перед любым выводом.
Кроме того, нет смысла делать это:
header("Location: /registration?registration=false");
echo "I'm sorry but the username you specified has already been taken. Please pick another one.";
unset($username);
Веб-браузер сразу же перенаправит пользователя, и пользователь не увидит удобное сообщение, которое вы напечатали.
Кроме того, обычно требуется запрашивать 2 поля пароля в регистрационных формах, если пользователь сделал опечатку и не заметил, потому что весь текст был * *. Вы сравниваете 2, и если они отличаются, вы предполагаете, что была сделана опечатка, и спрашиваете снова.