Jak zrobić, by po wypełnieniu formularza przekierowało na stronę główną?

Wrzuć to po ob_start

error_reporting(E_ALL);
ini_set('display_errors', 'On');

I powiedz czy wyświetlają się jakieś warning-i, error-y albo notice-y.

Wyświetlają się.

Dodałeś do inputów atrybut name ? Jeżeli tak to musiałeś popełnić jakąś literówkę.

@jacko1998

Olej ten poradnik - jeśli ktoś uczy innych w ten sposób powinien spotkać się z urządzeniem bardzo popularnym w czasach Rewolucji Francuskiej.

Nie bez powodu obecnie powszechnie używa się (H)MVC - pozwala to odizolować kod w logiczne fragmenty.

Nie ucz się stosować mysql_* - został wyparty (na szczęście) przez PDO i ORM-y.

Twój kod SQL to dziura w zabezpieczeniach, z resztą tak samo jak kod z postu #6.

Co do komunikatów z postu #22 - podejrzewam, że kod odpowiadający za logowanie jest w tym samym pliku.

Autor postu #21 jak najbardziej ma rację - kod powinien być na tyle dopracowany żeby pod żadnym pozorem nie pojawił się błąd/ostrzeżenie z głupich powodów jak brak zmiennej na stosie, a już ewentualne błędy powinny kończyć się stosownym komunikatem w postaci, “Wystąpił problem z działaniem serwisu, nasi technicy już nad tym pracują”, a sam powód błędu powinien zostać przekazany tylko i wyłączeni upoważnionym osobą (w innym przypadku wyplujesz np. nazwę i host użytkownika w bazie danych).

Taki kod:

echo 'Error!';die;

możesz zastąpić czymś takim:

die('Error!');

PS. Zastosuj się do porady kostek135.