Перенаправление

Nameax

Новичок
Здравствуйте!

Подскажите пожалуйста по следующему вопросу! После нажатия на кнопку (Submit) - делаю перенаправление на страницу ok.html (там Спасибо! И до новых встреч!) с помощью заголовков -

Код:
if (mail($toEmail, $emailSubject, $body, $headers)) {

           header('Location: https://www.sitename.com/ok.html');

       } else {
Файл ok.html лежит там же в корне! И если обратиться по адресу sitename.com/ok.html - то там будет - Спасибо! И до новых встреч! Как же сделать так, чтобы этот файл открывался только после сабмита?


-
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну купи ты уже книгу, Котерова возьми, для тебя ее актуальность не потеряна.

Твой вопрос вообще мимо понимания:
1. то есть где находится это условие что ты привел?
2. как ты сабмитишь форму, как? методы разные бывают
3. Где остальная логика проверки формы и прочее, зачем тут непонятный if с почтой?
 

Nameax

Новичок
Честно говоря, сколько то времени назад мне друг подарил книгу PHP7 (автора не помню!). Я её прочитал и понял, что ничего не понял. Может быть потому что я её читал лёжа на диване. Потом я друга попросил подарить на днюху что-нибудь для общего понимания программирования, алгоритмов, но без математики! Потом друг пропал (до сих пор не знаю где он). Сейчас изучаю (автора не помню!), там в книге про базы данных, Php в целом и другое! Кевин Янг во! Возвращаясь к теме:

Это встроенный код для обработки контактной формы, метод пост. Привожу в целом:

Код:
$errors = [];
$errorMessage = '';

if (!empty($_POST)) {
   $name = $_POST['name'];
   $email = $_POST['email'];
   $message = $_POST['message'];

   if (empty($name)) {
       $errors[] = 'Name is empty';
   }

   if (empty($email)) {
       $errors[] = 'Email is empty';
   } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
       $errors[] = 'Email is invalid';
   }

   if (empty($message)) {
       $errors[] = 'Message is empty';
   }

   if (empty($errors)) {
       $toEmail = '';
       $emailSubject = '';
       $headers = ['From' => $email, 'Reply-To' => $email, 'Content-type' => 'text/html; charset=utf-8'];
       $bodyParagraphs = ["Name: {$name}", "Email: {$email}", "Message:", $message];
       $body = join(PHP_EOL, $bodyParagraphs);

       if (mail($toEmail, $emailSubject, $body, $headers)) {

           header('Location: https://sitename.com/ok.html');

       } else {
           $errorMessage = '';
       }

   } else {

       $allErrors = join('<br/>', $errors);
       $errorMessage = "<p style='color: red;'>{$allErrors}</p>";
   }
}
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну у тебя он и открывается после сабмита, если ты хочешь убрать его из публичной папки и показывать только содержимое - велкам в шаблонизацию, положишь шаблон вместе с кодом на уровень выше и будешь вызывать его когда надо вместо хедера.

Что-то типа $view->display('ok.php');

Ну или просто выведи ответ, что он через echo 'ok'; exit;
 

Nameax

Новичок
Спасибо за совет! С шаблонами немного знаком, но пока не очень их использую!

Сделал черновой вариант:

Код:
if (mail($toEmail, $emailSubject, $body, $headers)) {

           echo'
   <script>
   window.onload = function() {
      alert("Спасибо за отзыв!");
      location.href = "index.php";  
   }
   </script>
';
 

WMix

герр M:)ller
Партнер клуба
Сделал черновой вариант
это конечно совсем о другом не важно,

Подскажите пожалуйста по следующему вопросу!
PHP:
<?php
// index.php
session_start();
if(isset($_POST['do'])){
    $_SESSION['message'] = 'спасибо';
    header('Location: index.php');
}
elseif(isset($_SESSION['message'])){
    echo '<h1>'.$_SESSION['message'].'</h1>';
    unset($_SESSION['message']);
}
?>
<form method="post" action="index.php">
    <input type="submit" name="do" value="тырк">
</form>
такой простой hello world, надеюсь разберешься
сразу скажу не тестил
 
Сверху