【发布时间】:2018-12-09 22:08:40
【问题描述】:
我尝试制作一个页面供用户输入一些信息(名字、姓氏);但是,用户也可以选择不在 HTML 表单中输入任何信息,并且可以单击提交按钮将其留空。如果用户将 HTML 表单留空并将其输入到 MySQL 表中,该页面将获取用户给定的数据或创建默认数据。
处理完 MySQL 数据后,它使用 PHP 标头重定向到另一个页面。另一个页面具有相同的目标,但数据不同(职位、雇主名称)。第二页的不同之处在于它有两个提交按钮——一个允许用户添加另一组数据(职位、雇主名称),另一个将其重定向到下一页。
我已经成功收集了第一页的用户创建数据,如果留空,它会处理默认的 MySQL 数据。然后它成功地重定向到下一页。在第 2 页上,它只能处理 HTML 表单中已完成的用户数据,但如果有任何内容留空(或者如果表单完全为空白),它将不会处理默认数据,并且只会重定向回自身而不处理 MySQL。
不知道为什么第2页不会处理默认数据,然后重定向到第3页。
每个页面开头的require(pdo.php)只是简单地创建pdo对象和连接。
我在这里简化了代码:
第 1 页:
<?php
session_start();
require_once "pdo.php";
if (isset($_POST['first_name']) &&
isset($_POST['last_name']))
{
$sql1 = "INSERT INTO Users (first_name,
last_name)
VALUES(:first_name,
:last_name)";
$stmt1 = $pdo->prepare($sql1);
$stmt1->execute(array(
':first_name' =>
(empty($_POST['first_name']))
? 'NoFirstNameGiven' :
$_POST['first_name'],
':last_name' =>
(empty($_POST['last_name']))
? 'NoLastNameGiven' :
$_POST['last_name']));
header("Location: page2.php");
exit;
}
?>
第 2 页:
<?php
session_start();
require_once "pdo.php";
if (isset($_POST['job_title']) &&
isset($_POST['employer_name']))
{
$sql = "INSERT INTO Employment
(job_title, employer_name)
VALUES(:job_title, :employer_name)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':job_title' =>
(empty($_POST['job_title']))
? 'NoJobTitleGiven' :
$_POST['job_title'],
':employer_name' =>
(empty($_POST['employer_name']))
? 'NoEmployerGiven' :
$_POST['employer_name']));
if(isset($_POST['nextButton'])){
header("Location: page2.php");
exit;
}
if(isset($_POST['add_job'])){
header("Location: page3.php");
exit;
}
}
?>
【问题讨论】:
标签: php mysql redirect post header