Наговнокодил, на сколько все плачевно?
Классическая sql-инъекция.
Пароль в md5.
Сначала делается запрос, а потом проверяется, что логин и пароль заполнены.
Сначала используются данные запроса, потом проверяется, что он был успешен.
Блоки условий не обёрнуты в скобки.
Пароль и логин зачем-то сохраняются в куки.
У кук нет флага http-only.
Спасать здесь нечего, нужно выбросить и сделать нормально в соответствии с современными стандартами и практиками.
Скажу сразу, пхп почти забыл.
Но сделал бы я иначе, и через ФВ хотя бы. Хотя тут зависит от проекта. Если это был бы код ФБ, то все очень плохо. А если сайта с фотками твоих любимых кошей - и так сойдет. 
Прям в коде не разбирался, но что бросается мне в глаза:
мд5, отсутствие ООП, неадаптивность(mysql), устаревшие функции(mysql_query), сомнительная проверка данных, отсутствие подготовленных запросов в БД, что за лимит 1(то есть можно создать копию чужого аккаунта? )if($active == $sql['login']){
    $namecookie = 'login';
  }elseif($active == $sql['email']){
    $namecookie = 'email';
  }
Зачем это делать? Можно же с помощью 1/0 указать. Или  более красиво. ИМХО
Почему проверка на пустые значения происходит после обращения к БД и указания названия куки? То есть с помощью чтения кук я могу шерстить базу данных на существования пользователя с таким ником или почтой? Кука же создаться, если совпадет. А доступа не будет, да. 
Почему хэш пароля в куке хранится - табу. Почему не айди сессии или токен?
Почему переадресация на главную страницу, а не предыдущую страницу перед требование авторизации?