在多页上携带表单输入变量

时间:2018-07-05 16:40:35

标签: php forms session-variables

我有一个带有两个下拉菜单和一个文本输入字段的表单提交。我已经将值上载到可以正常工作的数据库中,但是在处理它们之后,我试图将$ _POST值传递到第三成功页面。无论研究如何,我似乎都无法使其正常工作。显然我在做错事,只需要一点点帮助即可查明。文件示例如下。预先感谢您的帮助。

index.php

<?php
session_start();
$_SESSION["mynext"] = $_POST["mynext"];
$_SESSION["city"] = $_POST["city"];
$_SESSION["comment"] = $_POST["comment"];
?>
<form action="scripts/process.php" method="post">
            <div class="col-md-5 col-lg-3">
                <div class="form-group">
                    <label for="mynext">Choose your language</label>
                    <select class="form-control" id="mynext" name="mynext" autocomplete="off" required>
                        <option class="engl" value="My Next" selected="selected">My Next</option>
                        <option class="span" value="Mi próximo">Mi próximo</option>
                        <option class="chin-simp" value="我的未來的">我的未來的</option>
                        <option class="chin-trad" value="我的未來的">我的未來的</option>
                        <option class="kore" value="나의 다음">나의 다음</option>
                        <option class="arme" value="ԻՄ ՀԱՋՈՐԴ">ԻՄ ՀԱՋՈՐԴ</option>
                        <option class="russ" value="МОЙ БУДУЩЕГО">МОЙ БУДУЩЕГО</option>
                        <option class="viet" value="TRONG TƯƠNG LAI CỦA TÔI">TRONG TƯƠNG LAI CỦA TÔI</option>
                        <option class="japa" value="私の次の">私の次の</option>
                        <option class="thai" value="ในอนาคตของฉัน">ในอนาคตของฉัน</option>
                        <option class="khmr-camb" value="របស់ខ្ញុំបន្ទាប់">របស់ខ្ញុំបន្ទាប់</option>
                    </select>
                </div> 
            </div>
            <div class="col-md-5 col-lg-3">
                <div class="form-group">
                    <label for="city">Select where you live, work, or play</label>
                    <select class="form-control" id="city" name="city" autocomplete="off">
                        <option value="LA" selected="selected">LA*</option>
                        <option value="Agoura Hills">Agoura Hills</option>
                    </select>
                </div> 
            </div>
            <div class="col-md-2 dynamic-is">
                <p class="engl">is</p>
                <p class="hidden span">es</p>
                <p class="hidden chin-simp">是</p>
                <p class="hidden chin-trad">是</p>
                <p class="hidden kore">는 입니다</p>
                <p class="hidden arme">-ն է՝</p>
                <p class="hidden russ">— это</p>
                <p class="hidden viet">là</p>
                <p class="hidden japa">は</p>
                <p class="hidden thai">คือ</p>
                <p class="hidden khmr-camb">-ն է՝</p>
            </div>
            <div class="col-md-10 col-lg-3 comment-wrapper">
                <div class="form-group">
                    <label for="comment">Tell us what you’d like to see</label>
                    <input type="text" class="form-control" id="comment" name="comment" placeholder="Type here" autocomplete="off" required>
                </div>
            </div>
            <div class="col-md-2 col-lg-1">
                <button type="submit" name="mynext-submit" class="btn btn-lg btn-primary submit">Submit</button>
            </div>
        </form>

提交表单后,将通过如下所示的process.php上传表单值

process.php

<?php 
$mynext = filter_input(INPUT_POST, 'mynext');
$city = filter_input(INPUT_POST, 'city');
$comments = filter_input(INPUT_POST, 'comment');

if(!empty($comments)){

        $host = 'localhost';
        $user = '';
        $password = '';
        $dbname = '';

        $conn = new mysqli ($host, $user, $password, $dbname);

        if(mysqli_connect_error()){
                die('Connect Error (' . mysqli_connect_error() . ') ' . mysqli_connect_error());
        }else{
            $sql = "INSERT INTO nextla (mynext, city, comment) VALUES ('$mynext', '$city', '$comments')";

            if ($conn->query($sql)){
                    echo "<br>Input data is successful";
            }
            else{
                    echo "Error: ". $sql ."<br>". $conn->error;
            }
            $conn->close();
        }

}else{

    echo 'Please add a comment';
    die();

}

header( 'Location: ../comment-success.php' );

?>

处理后,我想在下面的comment-success.php页面上显示表单字段信息。

comment-success.php

<?php include("includes/header.php"); ?>

        <div class="banner sub-banner sub-careers">
            <img src="<?php echo $siteroot; ?>img/banner/sub-contact.jpg" alt="">
            <div class="overlay"></div> 
            <h1><?php echo $page; ?></h1>       
        </div>

        <div class="email-sent-container container">
            <div class="row">
                <div class="col-12">
                    <h1 class="section-divider">Your Comments have been Submitted Successfully</h1>
                    <?php
                        echo $_SESSION["mynext"];
                        echo $_SESSION["city"];
                        echo $_SESSION["comment"];
                        session_unset();
                    ?>
                    <p>Thank you for your input. Click <a href="index.php">here</a> to return to the home page.</p>
                </div>
            </div>  
        </div>

<?php include ('includes/footer.php'); ?>

有人可以帮我找到解决方案吗?我敢肯定这很简单,而且我一直在盯着这段代码很长时间,但似乎只是忽略了它。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要输入以下代码:

session_start();
$_SESSION["mynext"] = $_POST["mynext"];
$_SESSION["city"] = $_POST["city"];
$_SESSION["comment"] = $_POST["comment"];

最上面的pf实际接收到POST的文件

process.php

<?php 
session_start();
$_SESSION["mynext"] = $_POST["mynext"];
$_SESSION["city"] = $_POST["city"];
$_SESSION["comment"] = $_POST["comment"];

$mynext = filter_input(INPUT_POST, 'mynext');
$city = filter_input(INPUT_POST, 'city');
$comments = filter_input(INPUT_POST, 'comment');
...

并在每个使用会话的文件的顶部添加一个session_start();

PS:您应使用prepared statements以避免SQL注入。