验证后将 PHP 变量数据传递到另一个页面


Passing PHP variable data onto another page after validation

虽然我在这里发现了与这个问题类似的东西,但它并没有完全回答我的问题。

我已经设置了这个php脚本来验证表单数据,它可以工作,在验证后,我希望它将信息传递到另一个脚本页面,让用户验证他们的输入数据,然后邮寄数据。在这种状态下,我遇到了麻烦。在过去的几天里,我一直在试图找到解决这个问题的方法,不幸的是,我遇到了不足。

        <?php
            $name_error = '';
            $email_error = '';
            $comments_error = '';
            $error = false;
            if (!empty($_POST['submitted']))
                { //if submitted, the validate.
                    $name = trim($_POST['name']);
                    if (empty($name))
                        {
                            $name_error='Name is required';
                            $error = true;
                        }
                    $email = trim($_POST['email']);
                    /* If e-mail is not valid show error message */
                    if (!preg_match("/(['w'-]+'@['w'-]+'.['w'-]+)/", $email))
                        {
                            $email_error='E-mail address not valid';
                            $error = true;
                        }
                    $comments = trim($_POST['comments']);
                    if (empty($comments))
                        {
                            $comments_error='Comments are required';
                            $error = true;
                        }
                    if ($error == false)
                        {
                            $name_send = $name;
                            $email_send = $email;
                            $comments_send = $comments;
                            /* Redirect visitor to the thank you page */
                            header('Location: /mail.php');
                            exit();
                        }
                }

此表格附在:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
<label>Your Name</label><br />
<input type="text" name="name" style="width:95%" class="text" value='<?php echo htmlentities($name) ?>' />
<br/>
<span class='error'><?php echo $name_error ?></span>
<br />
<label>Email</label><br />
<input type="email" name="email" style="width:95%" class="text" value='<?php echo htmlentities($email) ?>' />
<br/>
<span class='error'><?php echo $email_error ?></span>
<br />
<label for="comments" style="font-size:16px;">Feedback Comments</label><br />
<textarea name="comments" style="width:95%;" rows="8" value='<?php echo htmlentities($comments) ?>'></textarea>
<br />
<span class='error'><?php echo $comments_error ?></span>
<br />

<input type="checkbox" name="allowCommentPublish" checked="checked" />
<label for="allowCommentPublish" style="font-size:10px;">Allow these comments to be used on our website</label>
<fieldset class="optional">
    <h2>[ OPTIONAL ]</h2>
    <label>Company Name</label><br />   
    <input type="text" name="companyName" style="width:95%" class="text" />
    <br/>
    <label>Phone</label><br />
    <input type="text" name="phone" style="width:95%" class="text" /><br/>
    <div style="margin:5px 0px;">
            <input type="checkbox" name="incmarketing" />
            <label style="font-size:10px;"> Yes, you can email me specials and promotions.</label>
        <br/>
    </div>
</fieldset>
<fieldset>
    <input type="submit" name="submitted" value="Send" />
</fieldset>

我将指出我专注于主要数据输入:姓名电子邮件和评论。

我需要从此表格中发送信息,但我不知道该怎么做,任何帮助将不胜感激。

要将值传递到下一页,您必须使用三种方法之一。1. 使用数据设置 Cookie。2. 使用全局变量会话。3.在网址中传递数据。

对于 Cookie,您可以使用以下值设置 Cookie

setcookie('name',$name);

在您的下一页中阅读这些 Cookie 数据

对于会话:

 $_SESSION['name']= $name;

对于从 Cookie 和会话读取数据:

 $name = $_COOKIE['name'];
 $name = $_SESSION['name'];

要使用会话,您必须添加该行

session_start();

在发送或接收(使用)数据的两个页面的开头

和网址

header('Location: /mail.php?name=$name&email=$email&comment=$comments');

阅读有关使用会话的更多信息

如果需要将值从一个脚本传递到另一个脚本,可以使用 $_SESSION 变量。要启动会话使用:(在 php 脚本的顶部)

session_start();
$_SESSION['somename'] = $somevariable;

要访问或获取相同的变量,您可以使用以下内容:

 session_start();
 $some_other_variable = $_SESSION['somename'];

或者,您可以使用隐藏的输入字段。

您可以使用隐藏字段和 javascript 来提交表单。但是,由于这是与原始表单相同的php页面,因此您将需要一个if语句

echo '<form name="newForm" action="newpage.php" method="POST">';
echo '<input type="hidden" name="name2" value"' . $name . '">;
echo '<input type="hidden" name="email2" value"' . $email . '">;
echo '<input type="hidden" name="comments2" value"' . $comments . '"></form>;
echo '<script> if (document.getElementById("name2").value != ""){window.onload = function(){ window.document.newForm.submit(); }} </script>';