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

时间:2015-03-12 02:28:54

标签: php html validation html-form

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

我已经设置了这个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>

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

我需要将此表单中的信息发送到目前为止,但我不确切知道如何执行此操作,任何帮助都将受到极大的赞赏。

3 个答案:

答案 0 :(得分:2)

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

对于cookies,您可以使用

等值设置Cookie
setcookie('name',$name);

在下一页中读取这些cookie数据

对于会议:

 $_SESSION['name']= $name;

用于从cookies中读取数据&amp;会话:

 $name = $_COOKIE['name'];

 $name = $_SESSION['name'];

要使用会话,您必须添加

session_start();

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

和网址

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

Read more on using session

答案 1 :(得分:1)

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

session_start();

$_SESSION['somename'] = $somevariable;

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

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

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

答案 2 :(得分:0)

您可以使用隐藏字段和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>';