表单中存在重定向后,验证不起作用



我正在尝试验证并重定向到另一个具有两个变量(日期(的页面。如果我不重定向页面,验证进展顺利。 如果我使用

action = "pagingstatic.php"

验证不起作用。

这是代码:

<!DOCTYPE html>
<html>
<head>
<title>Въвеждане на дата</title>
<link rel="stylesheet" type="text/css" href="style.css">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>   
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?php
// define variables and set to empty values
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$from_dateErr = $to_dateErr =  '';
$from_date = $to_date = '';
if ($_SERVER["REQUEST_METHOD"] == "GET")
{
$valid = true;
if (empty($_GET["from_date"]) or empty($_GET["to_date"])) {
$from_dateErr = "Задължително поле";
$to_dateErr = "Задължително поле";
} else {
$from_date = test_input($_GET["from_date"]);
$to_date = test_input($_GET["to_date"]);
// check if name only contains letters and whitespace
if (!preg_match("/[0-9\-]/",$from_date)or !preg_match("/[0-9\-]/",$to_date)) {
$from_dateErr = "формат: 0-9 и разделящи символи - и /";
$to_dateErr = "формат: 0-9 и разделящи символи - и /";
}    
}
}
?>
<div class = "login-box">
<p class="headp">Язовир Искър</p>
<div class = "login">
<!--
action = "pagingstatic.php"
LOGO NEK <div class="image"></div> -->
<p>Зареждане на таблица от PostgreSQL по зададена дата.</p>
<p><span class="error">* required field.</span></p>
<form  action = "pagingstatic.php" method = "GET">
<label for="odata">От дата</label>
<input type = "text" name = "from_date">
<span class="error">* <?php echo $from_dateErr;?></span>
<br />
<label for="odata">До дата</label>
<input type = "text" name = "to_date">
<span class="error">* <?php echo $from_dateErr;?></span>                
<input type = "submit" name = "submit" value = "Покажи таблица">
</form>
</div>
</div>
<?php
echo "<h2>Your Input:</h2>";
echo $from_date;
echo "<br>";
echo $to_date;
echo "<br>";
echo $act;
?>
</body>
</html>

你能给我任何建议吗?

感谢您的帮助!这是代码:

<!DOCTYPE html>
<html>
<head>
<title>Въвеждане на дата</title>
<link rel="stylesheet" type="text/css" href="style.css">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>   
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<?php
// define variables and set to empty values
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$from_dateErr = $to_dateErr =  '';
$from_date = $to_date = $act = '';
if ($_SERVER["REQUEST_METHOD"] == "GET")
{
$valid = true;
if (empty($_GET["from_date"]) or empty($_GET["to_date"])) {
$from_dateErr = "Задължително поле";
$to_dateErr = "Задължително поле";
$valid = false;
} else {
$from_date = test_input($_GET["from_date"]);
$to_date = test_input($_GET["to_date"]);
// check if name only contains letters and whitespace
if (!preg_match("/[0-9\-]/",$from_date)or !preg_match("/[0-9\-]/",$to_date)) {
$from_dateErr = "формат: 0-9 и разделящи символи - и /";
$to_dateErr = "формат: 0-9 и разделящи символи - и /";
$valid = false;
}    
}
//if valid then action redirect
if($valid){
header("location:pagingstatic.php?".$_SERVER['QUERY_STRING']);
exit();
}
}
?>
<div class = "login-box">
<p class="headp">Test</p>
<div class = "login">
<!--
action = "pagingstatic.php"
LOGO NEK <div class="image"></div> -->
<p>Зареждане на таблица от PostgreSQL по зададена дата.</p>
<p><span class="error">* required field.</span></p>
<form  method = "GET">
<label for="odata">От дата</label>
<input type = "text" name = "from_date">
<span class="error">* <?php echo $from_dateErr;?></span>
<br />
<label for="odata">До дата</label>
<input type = "text" name = "to_date">
<span class="error">* <?php echo $from_dateErr;?></span>                
<input type = "submit" name = "submit" value = "Покажи таблица">
</form>
</div>
</div>
<?php
echo "<h2>Your Input:</h2>";
echo $from_date;
echo "<br>";
echo $to_date;
echo "<br>";
echo $act;
?>
</body>
</html>

你应该使用会话来保存你的值。但现在你可以试试这个:

if($valid){
header("location:somepage.php?".$_SERVER['QUERY_STRING']);
exit();
}

最新更新