Использование функций для выхода при ошибке.

Crionis

Новичок
Всем привет! Я новичок в PHP, и меня интересует вопрос по использованию функций для обработки ошибок, есть два варианта (см. ниже), по моему первый вариант удобней, но я почти не вижу таких приёмов в других скриптах, в основном встречаются приёмы реализации как в варианте 2.
Объясните мне чем так плох первый вариант реализации подобных задач?

Вариант 1.
PHP:
function UserLogin()
{
global $user_name;

	$user_name = $_POST['_login'];
	if(($_POST['_login'] != "admin")) { return "Пользователя ".$_POST['_login']." не существует!"; }
	if(($_POST['_pass'] != "pass")) { return "Неверный пароль!"; }

	if(isset($_POST['_remember']))
	{
		setcookie("vx", "info", time()+1000, "/", "", "0");
	}
	else
	{
		$_SESSION['user_logined'] = true;
		$_SESSION['user_name'] = $user_name;
	}
	
	header("Location:index.php");
}

if(isset($_POST['_loginform'])) { $error = UserLogin(); }
Вариант 2.
PHP:
if(isset($_POST['_loginform']))
{
	$user_name = $_POST['_login'];
	if(($_POST['_login'] == "admin"))
	{
		if($_POST['_pass'] == "pass")
		{
			if(isset($_POST['_remember']))
			{
				setcookie("vx", "info", time()+1000, "/", "", "0");
			}
			else
			{
				$_SESSION['user_logined'] = true;
				$_SESSION['user_name'] = $user_name;
			}

			header("Location:index.php");
		}
		else
		{
			$error = "Неверный пароль!";
		}
	}	
	else
	{
		$error = "Пользователя ".$_POST['_login']." не существует!";
	}	
}
 

DiMA

php.spb.ru
Команда форума
это все говнокод, поэтому не важно, что выбрать
хотя бы дырку с header убери и добавь exit() после нее
 

Crionis

Новичок
Этот код не используется, он написан в качестве примера.
Если это всё говнокод, тогда какой метод архитектуры вы можете посоветовать для подобных задач?
 

igortik

Новичок
Во-первых, ты пошел верным путем, что ищешь решение и сравниваешь.

Во-вторых, забудь теперь все готовые решения и подумай сам, что должен делать твой код и как вести себя в случае, например, неверно введенного пароля.
Построй для себя краткий алгоритм поведения программы и сам попробуй написать решение, ведь в твоем примере обычная работа со строками и передача состояния их сравнения.

P.S. И да.. почитай про header(). Лично я сделал для себя ф-ию-хелпер

PHP:
function location($location)
{
 header('Location: '.$location);
 exit();
}
Конструкция языка exit(); очень важна в данном случае, чтобы прекратить выполнение скрипта, а так как ты будешь очень часто использовать location заголовок для перенаправления на "другую страницу", то exit можешь попросту забыть поставить. Потому, как вариант - такая нехитрая функция.
 

Духовность™

Продвинутый новичок

Фанат

oncle terrible
Команда форума
А чем первый удобнее? Я правильно понимаю, что ты не собираешься оставлять функцию там, где она есть, а засунешь ее в какой-то файл (в какой, кстати)?
Ну так представь, тебе понадобилось что-то поменять в коде. И куда лезть? А зачем?
Почему не размещать код именно там, где он работает? Зачем его неоправданно разделять на куски?
 

Crionis

Новичок
А чем первый удобнее? Я правильно понимаю, что ты не собираешься оставлять функцию там, где она есть, а засунешь ее в какой-то файл (в какой, кстати)?
Ну так представь, тебе понадобилось что-то поменять в коде. И куда лезть? А зачем?
Почему не размещать код именно там, где он работает? Зачем его неоправданно разделять на куски?
В данном случае эта функция представляет из себя некий сегмент кода в скрипте, выполнение которого всегда можно прервать командой "return".
 
Сверху