【发布时间】:2018-11-12 02:52:18
【问题描述】:
我对 PHP 很陌生,并且已经设法自己学习了一点,但是我在这个问题上陷入了困境。我有一个表单可以验证自我并在同一页面上显示错误。填写并验证信息后,我需要通过单独的 PHP 脚本对其进行处理,该脚本将向我发送电子邮件,将信息发布到 .csv 文件,并显示确认页面。我目前有这两个方面的工作,但没有一起工作。换句话说,我的表单将验证自我,但信息无处可去。这显然是没有用的。另外,通过将操作设置为我的 PHP 脚本,我可以让表单执行所有其他功能,但是字段是否填写并不重要,它会发送任何内容。我已经尝试了从会话、函数到包含的所有内容,我什至不记得还有什么可以让它工作的。我什至尝试将我的错误设置为一个数组,然后在结果上调用一个 TRUE/FALSE 函数,以使其验证然后重定向。我已经在同一页面上进行了验证,但无论如何发送所有信息都只是显示在空白页面上。
请不要回复说这是重复的。这是我至少一个星期以来一直在研究和研究的问题。我已经阅读了本网站和其他网站上的许多主题,但没有找到有效的答案。
我不希望在客户端进行验证,然后通过 PHP 发送。我还需要在同一页面验证并确保保留任何先前输入的响应(我的表单当前所做的),因为有许多字段是必需的。
我发布了我的部分代码以保留必要的信息。正如我所说,如果我将操作设置为运行它,我的验证和 PHP 脚本一样独立工作。
这是验证的一部分:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["childsfirstname"])) {
$childsfirstnameErr = "Child's first name is required.";
} else {
$childsfirstname = test_input($_POST["childsfirstname"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$childsfirstname)) {
$childsfirstnameErr = "Only letters and white space allowed";
die;
}
}
if (empty($_POST["childslastname"])) {
$childslastnameErr = "Child's last name is required.";
} else {
$childslastname = test_input($_POST["childslastname"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$childslastname)) {
$childslastnameErr = "Only letters and white space allowed";
die;
}
}
if (empty($_POST["month"])) {
$monthErr = "Child's birthday is required.";
} else {
$month = test_input($_POST["month"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[0-9]*$/",$month)) {
$monthErr = "Only numbers allowed";
die;
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
这是表格的一部分:
<div id="Field" style="left: 0px; top: 0px"><strong>Youth's:</strong>
First Name:
<input type="text" name="childsfirstname" style="width: 220px" value="<?php echo $childsfirstname;?>"/>
Last Name:
<input type="text" name="childslastname" style="width: 300px" value="<?php echo $childslastname;?>"/>
</div>
<div id="parent" class="error">
<div id="error1a" style="right: 561px"> <?php echo $childsfirstnameErr;?></div>
<div id="error1b"> <?php echo $childslastnameErr;?></div>
</div>
虽然我意识到这里没有代码表明我正在尝试重定向以发送信息,但请相信我已经进行了多次尝试,并且我正在寻找的只是最好的方式执行此操作以及有关如何执行此操作的一些实际指导。只要它有效,它是否包含或需要,会话或其他对我来说都无关紧要,只要它是 PHP 和 验证自我,然后在验证完成且表单无错误后提交到另一个 PHP 脚本。
非常感谢任何和所有帮助,特别是因为我是自愿这样做的。提前感谢所有可以提供帮助的人。
这是我的 PHP 脚本的开始和结束 - 我将省略中间部分,因为总共有 16 个基本相同的书面验证。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["childsfirstname"])) {
$Err[1] = "Child's first name is required.";
}else {
$childsfirstname = test_input($_POST["childsfirstname"]);
if (!preg_match("/^[a-zA-Z ]*$/",$childsfirstname)) {
$Err[1] = "Only letters and white space allowed";
}
}
if (empty($_POST["childslastname"])) {
$Err[2] = "Child's last name is required.";
} else {
$childslastname = test_input($_POST["childslastname"]);
if (!preg_match("/^[a-zA-Z ]*$/",$childslastname)) {
$Err[2] = "Only letters and white space allowed";
}
}
。 . .
if (empty($_POST["date"])) {
$Err[15] = "Date required.";
}else {
$date = test_input($_POST["date"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[0-9]*$/",$date)) {
$Err[15] = "Letters are not allowed";
}
}
if (empty($_POST["checkbox"])) {
$Err[16] = "VALIDATION REQUIRED";
}else {
$checkbox = test_input($_POST["checkbox"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
目前没有任何尝试传递表单信息 - 仅在验证工作的情况下。我不断地恢复到正在工作的东西,这样我就不会破坏正在工作的东西。
【问题讨论】:
-
将第二个脚本中的代码插入第一个脚本或通过调用
require(php.net/manual/en/function.require.php) 执行它 -
请编辑您的问题以显示您的提交按钮。还有您的第二个(电子邮件)php 例程的名称。我可以编辑我的答案以减少侵入性 - 我想我的目的是让你挑选出重要的部分。
-
我的提交按钮只是一个提交按钮的运行。这与信息的去向无关。这是通过函数完成的。它看起来像这样: 我尝试使用会话传递信息。这行得通,但是我的表单是否经过验证并不重要,它会发送所有内容 - 甚至是空白的必填字段。但是,我的实际问题与如何使其工作有关。
-
“还有您的第二个(电子邮件)php 脚本的名称。”
-
我编辑了我的答案,为您提供“让它工作”的说明。
标签: php forms validation send