虽然我在这里发现了与这个问题类似的东西,但它并没有完全回答我的问题。
我已经设置了这个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>';