我看到另一个人在堆栈溢出中问这个问题,但我没有从'his post'得到任何明确的答案/想法。我想知道是否有办法通过POST将表单数据发送到当前的PHP页面addstudio.php
以验证输入的数据&如果输入的数据有效,它将被重定向到下一个PHP页面getstudio.php
。
要将表单数据发送到当前页面,我使用了以下行: -
<form action = "<?php $_PHP_SELF ?>" method = "post">
这样做只是为了验证表单信息,如果表单留空,则在同一个PHP页面中显示一条消息,其代码如下所示。
<?php
$valid = true;
$studioIdError = $studioNameError = $studioAddressError = $studioPCodeError = $studioTelNoError = "";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty($_POST["studioId"])){
$studioIdError = " *This Field Cannot Be Empty";
$valid = false;
}
if(empty($_POST["studioName"])){
$studioNameError = " *This Field Cannot Be Empty";
$valid = false;
}
if(empty($_POST["studioAddress"])){
$studioAddressError = " *This Field Cannot Be Empty";
$valid = false;
}
if(empty($_POST["studioPCode"])){
$studioPCodeError = " *This Field Cannot Be Empty";
$valid = false;
}
if(empty($_POST["studioTelNo"])){
$studioTelNoError = " *This Field Cannot Be Empty";
$valid = false;
}
}
?>
对于上面的代码,我想知道是否有一种方法可以在getstudio.php
时运行$valid = true
页面。
我无法使用代码include 'getstudio.php';
,因为我希望getstudio.php
在单独的页面上运行。
我无法使用代码header("Location:getstudio.php");exit();
运行,因为全局数组$_POST[]
中的值不会像直接从表单中调用页面那样发送到PHP页面(例如: - <form action = 'getstudio.php' method = 'post'>
)。
在getstudio.php
时将$_POST[]
数组中存储的值发送到getstudio.php
页面时,有没有办法运行$valid = true
页面?
答案 0 :(得分:2)
您有几个选择。
在任何情况下,在对用户数据采取行动之前不要忘记重新验证,除非绝对确定数据不会受到用户的影响(在上面的列表中,仅当在会话中存储数据时) ,仍然不推荐)。然后,如果再次进行验证,为什么还要单独使用页面呢?
答案 1 :(得分:1)
据我了解你想先发送数据Addstudio.php而不是Getstudio.php,但你想要第二个重定向。
将您的HTML设为:
<form action="getstudio.php" method="POST">
<!-- etc -->
</form>
使你的Javascript像这样(包括jQuery):
$(".your-form-class").on('submit',function(evt){
evt.preventDefault();
var instance = $(this);
var formData = new FormData($(".your-form-class")[0]);
$.ajax({
type:"POST",
data:formData,
url:"addstudio.php",
success:function(response){
instance.submit();
}
});
});
答案 2 :(得分:0)
这是您当前的页面
<?php
$_POST["studioName"] = 'testdata';
$valid = true;
if(empty($_POST["studioName"])){
$studioNameError = " *This Field Cannot Be Empty";
$valid = false;
}
// send data to getstudio.php if valid
if($valid){ ?>
<form method="post" action="getstudio.php" id="senddata">
<input type="hidden" name="postdata" value="<?php print_r($_POST); ?>">
</form>
<script>
document.getElementById("senddata").submit();
</script>
<?php } ?>
这是您的getstudio.php文件,用于接收经过验证的帖子数据
<?php
echo '<pre>';
print_r($_POST['postdata']);
die;