php - 在 php 文件之间发送 $_POST 数据
问题描述
我有一个 HTML 表单,它的 action 元素是指 php 本身。单击提交按钮后,php 被重新加载,我验证输入“search”不为空(如果为空,则没有任何反应,如果不是,则加载pag1.php)。
问题是,如果我使用header()函数加载pag1.php文件,我无法向它发送 $_POST 数据。
这是我的代码:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' ){
$uncomplete;
foreach($_POST as $val){
if(empty($val)){
$uncomplete = true;
break;
}
}
if(!$uncomplete){
header("Location: pag1.php");
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Form</title>
<meta charset = "UTF-8">
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<input type="text" name="search"><br><br>
<input type="submit" name="submit" value="Send">
</form>
</body>
</html>
这是pag1.php文件:
<?php
echo $_POST['search'];
?>
我见过类似的方法,但我不想在 iframe 上加载pag1.php,我想在我的实际窗口上加载它。
编辑:我知道我可以将表单标记中的 action 元素更改为pag1.php,但这是一个基本示例,以防我需要在将数据发送到pag1.php文件之前验证同一文件中的 $_POST 数组.
解决方案
您可以包含 pag1.php 并设置标志以显示表单
<?php
$showForm = true;
if($_SERVER['REQUEST_METHOD'] == 'POST' ){
$uncomplete;
foreach($_POST as $val){
if(empty($val)){
$uncomplete = true;
break;
}
}
if(!$uncomplete){
include("pag1.php");
$showForm = false;
}
}
?>
<?php if($showForm): ?>
<!DOCTYPE html>
<html>
<head>
<title>Form</title>
<meta charset = "UTF-8">
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<input type="text" name="search"><br><br>
<input type="submit" name="submit" value="Send">
</form>
</body>
</html>
<?php endif; ?>
推荐阅读
- python - 如何使用 .replace 或 regex 将 URL 编码替换为空或空格
- javascript - 可靠地处理响应式设计的最佳方式
- python - 打印命令的结果,然后比较两个文件
- python-3.x - 尝试在 google colab 上永久安装库时出错
- javascript - 为什么当我使用 addEventListener 时复选框停止工作
- c# - 在 ASP.NET Core WEB API 中同时 POST Image 和 Body Data
- c# - 如何在 C# 中并行运行多个单独的线程?
- python-3.x - Python 请求 - 发布方法 - 从 CV2 发送图像 - ndarray 不起作用
- c# - 应用过滤器 GridFS MongoDb C#
- nginx - nginx:[警告] 0.0.0.0:443/0.0.0.0:80 上的服务器名称“www.site.com”冲突,忽略