Ошибка многостраничной формы php

Информация страницы 1 успешно передается на страницу 2, однако после того, как страница 2 заполнена и отправлена, страница 3 открывается как страница с ошибкой 404. Я не знаю, что не так (я использую Wordpress, и страница 3 существует, но не открывается после отправки страницы 2). Вы можете проверить это вживую здесь. Первая страница находится по адресу offer/ страница вторая находится на offer/details/ страница третья находится на offer/details/results/

Итак, код для страницы 1: -

<form action="details/" method="post">
    Loan Calculator
    <select name="loan_amount" class="form-inline" style="width:200px;">
        <option value="1000">$1,000 Loan</option>
        <option value="25000" selected="selected">$25,000 Loan</option>
    </select>
    <select name="loan_tenure" class="form-inline" style="width:125px;">
        <option value="4">4 Years</option>
        <option value="5" selected="selected">5 Years</option>
    </select>
    <input type="submit" value="Calculate" class="form-inline">
</form>

Код для страницы 2: -

session_start();

foreach ($_POST as $key => $value) {
    $_SESSION[$key] = $value;
}

echo '<form action="results/" method="post">';
echo '<strong>Who should we send this quote to?</strong><br>';
echo '<input type="hidden" name="loan_amount2" value="' . $_POST["loan_amount"] . '" />';
echo '<input type="hidden" name="loan_tenure2" value="' . $_POST["loan_tenure"] . '" />';
echo '<input style="width:320px; margin-left:16px; margin-top:15px;" type="text" name="name" placeholder="Name*"><br>';
echo '<input style="width:320px; margin-left:16px;" type="email" name="email" placeholder="Email*"><br>';
echo '<input style="width:320px; margin-bottom:7px; height:50px; padding-left:7px;" type="phone" name="phone" placeholder="Phone*"><br>';
echo '<input type="submit" value="Get My Monthly Repayments">';
echo '</form>';

Код для страницы 3: -

session_start();

foreach ($_POST as $key => $value) {
    $_SESSION[$key] = $value;
}

var_dump($_SESSION);

у вас есть страничка results?

Vel 11.04.2018 13:08

да, он находится в testwebsitepage.club/offer/details/results, если вы открываете его напрямую, он открывается нормально.

Grey-lover 11.04.2018 13:13

изменить этот URL-адрес <form action="results" method="post"> и второй шаг попробовать еще раз?

Vel 11.04.2018 13:15

Пробовал, все еще такая же проблема. Я не понимаю, как он может открыть правильную страницу, но отобразить ошибку 404 и не отобразить страницу, тогда как страница, открытая напрямую с URL-адресом, открывается нормально.

Grey-lover 11.04.2018 13:22

что печатать? извините, как вы имеете в виду?

Grey-lover 11.04.2018 13:32

подожди, позволь мне проверить это на xampp.

Grey-lover 11.04.2018 13:35

хорошо, я только что проверил, и да, значения страницы 1 и страницы 2 печатаются нормально на странице 3.

Grey-lover 11.04.2018 13:41

страница 1 - родительский шаблон страницы 2, а страница 2 - родительская страница 3.

Grey-lover 11.04.2018 13:42

да, безусловно, стоит попробовать

Grey-lover 11.04.2018 13:59
1
9
40
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

использовать скрытое поле

echo '<input type="hidden" name="page_2_valid_0987" value="page_2_valid_0987" />';

на шаге 2

у вас functions.php должен быть таким.

if(isset($_POST['page_2_valid_0987'])){
    store_values_of_page_two($_POST);
}

function store_values_of_page_two($_POST) { 
    session_start(); 

    foreach ($_POST as $key => $value) { 
        $_SESSION[$key] = $value; 
    } 

    $newURL = site_url(); . "/offer/details/results/"; 
    wp_redirect( $newURL );
    exit;
}

Распечатать сеанс на странице результатов

session_start();

var_dump($_SESSION);
Ответ принят как подходящий

Я нашел ошибку (Спасибо @vel). На самом деле это очень глупо. В коде формы страницы 2 имя поля input дается как name, что недопустимо, поскольку это специальное ключевое слово. Это было причиной ошибки.

Другие вопросы по теме