Задать вопрос
@thegodzila

Как заставить работать POST запрос формы на VPS, если на хостинге все норм работает?

Здравсвуйте, уже третий день боюсь на проблемой. Есть форма с пост запросом для регистрации человека:

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
	<title>Курсы ЕГЭ и ОГЭ - Регистрация</title>
	<link rel="stylesheet" href="/cms/template/vendors/mdi/css/materialdesignicons.min.css">
	<link rel="stylesheet" href="/cms/template/vendors/base/vendor.bundle.base.css">
	<link rel="stylesheet" href="/cms/template/css/style.css?4">
	<link rel="shortcut icon" href="/cms/template/images/favicon.png" />
</head>
<body>
	<div class="container-scroller">
		<div class="container-fluid page-body-wrapper full-page-wrapper">
			<div class="content-wrapper d-flex align-items-center auth px-0">
				<div class="row w-100 mx-0">
					<div class="col-lg-4 mx-auto">
						<div class="auth-form-light text-left py-5 px-4 px-sm-5">
							<div class="brand-logo text-center">
								<img src="/cms/template/images/logo.png" alt="logo">
							</div>
							<h4 class="text-center">Регистрация нового ученика</h4>
							<form method="post" class="pt-3" action="/register/controller.php" >
								<div class="form-group">
									<input type="text" name="fio" class="form-control form-control-lg" placeholder="Ф.И.О." required>
								</div>
								<div class="form-group">
									<input type="email" name="email" class="form-control form-control-lg" placeholder="E-mail" required>
								</div>
								<div class="form-group">
									<input type="text" name="phone" class="form-control form-control-lg" placeholder="Телефон">
								</div>
								<div class="form-group">
									<textarea name="parents" class="form-control form-control-lg" rows="2" placeholder="Родители"></textarea>
								</div>
								<div class="form-group">
									<textarea name="parents_phone" class="form-control form-control-lg" rows="2" placeholder="Телефоны родителей"></textarea>
								</div>
								<div class="form-group">
									<input type="password" name="password" class="form-control form-control-lg" placeholder="Пароль" required>
								</div>
								<div class="mt-3">
									<button type="submit" class="btn btn-block btn-primary btn-lg font-weight-medium auth-form-btn">РЕГИСТРАЦИЯ</button>
								</div>
								<div class="text-center mt-4 font-weight-light">
									Уже есть аккаунт? <a href="/login/" class="text-primary">Войдите</a>
								</div>
				
							</form>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
	<script src="/cms/template/vendors/base/vendor.bundle.base.js"></script>
	<script src="/cms/template/js/off-canvas.js"></script>
	<script src="/cms/template/js/hoverable-collapse.js"></script>
	<script src="/cms/template/js/template.js"></script>
	<?php showAlert(); ?>
</body>
</html>

Далее этот скрипт должен передавать POST запрос этому скрипту:
<?php

	class CMS_Controller_Register extends CMS_Abstract_Controller {
		public function __construct() {
			parent::__construct();
		}

		public function main() {
			if (CMS::post('fio')) {
				try {
					$this->_register();
				} catch (Exception $e) {
					$this->error = $e->getMessage();
				}
			}
			$this->_default();
		}

		protected function _register() {
			global $pdo;
			$fio = htmlspecialchars(trim(CMS::post('fio')));
			$email = htmlspecialchars(trim(CMS::post('email')));
			$phone = htmlspecialchars(trim(CMS::post('phone')));
			$password = hash('sha256', htmlspecialchars(trim(CMS::post('password'))));
			$parents = htmlspecialchars(trim(CMS::post('parents')));
			$parents_phone = htmlspecialchars(trim(CMS::post('parents_phone')));
			$reg_date = date('Y-m-d H:i:s');
			$activity_date = date('Y-m-d H:i:s');
			$role = 'student';
			$activation = hash('crc32', $reg_date);
			if (!empty($fio) && !empty($email) && !empty($password)) {
				$query = $pdo->query("SELECT * FROM users WHERE email=\"$email\"");
				$dbuser = $query->fetchAll(PDO::FETCH_ASSOC);
				if (count($dbuser) < 1) {
					$query = $pdo->query("INSERT INTO users SET fio=\"$fio\", email=\"$email\", phone=\"$phone\", parents=\"$parents\", parents_phone=\"$parents_phone\", reg_date=\"$reg_date\", activity_date=\"$activity_date\", password=\"$password\", role=\"$role\", activation=\"$activation\"");
					$to = $email;
					$headers = "MIME-Version: 1.0\r\n";
					$headers .= "Content-type: text/html; charset=utf-8\r\n";
					$headers .= "From: Курсы подготовки к ЕГЭ и ОГЭ <info@ege-lab.online>\r\n";
					$headers .= "To: $to\r\n";
					$headers .= "Reply-To: info@ege-lab.online\r\n";
					$headers .= "Return-path: info@ege-lab.online\r\n";
					$headers .= "X-Mailer: ".phpversion();
					$subject = 'Вы успешно зарегистрировались на сайте Курсы подготовки к ЕГЭ и ОГЭ';
					$message = "Активируйте аккаунт, перейдя по ссылке: <a href=\"//new.ege-lab.online/activate/?hash=$activation\">активировать аккаунт</a>";
					mail($to, $subject, $message);
					CMS::redirect('finish');
				} else {
					setcookie('alert', 'user_exist', time()+100, '/');
					CMS::redirect('register');
				}
			}
		}

		protected function _default() {
			$this->_view();
		}
	}

?>

Так вот на хостинге все работает. А на VPS вообще нет. То есть как будто у формы нет атрибута action. Он не отправляет по моему тупо Post запрос. Возможно что то в настройках сервака: Apache2.0 и ngigx. Освоено потому что через cloudfire работает? возможно ли такое вообще? Что делать ума не приложу уже и php.ini смотрел и функцию mail проверил. Не фига. ПАМАГИТЕ))
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@FEDKOTV
Попробуйте заместо <button type="submit"> использовать <input type="submit">
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы