[英]Sending Form Data Using POST To The Current Page And Another PHP Page At The Same Time
我看到另一個人在堆棧溢出中問這個問題,但我沒有從'他的帖子'得到任何明確的答案/想法。 我想知道是否有辦法通過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;
}
}
?>
對於上面的代碼,我想知道是否有一種方法可以在$valid = true
時運行getstudio.php
頁面。
我不能使用include 'getstudio.php';
的代碼include 'getstudio.php';
因為我希望getstudio.php
在一個單獨的頁面上運行。
我不能使用代碼header("Location:getstudio.php");exit();
運行要么是因為全局數組$_POST[]
值沒有發送到PHP頁面,就像從表單直接調用頁面時那樣(例如: - <form action = 'getstudio.php' method = 'post'>
)。
當$valid = true
時,有沒有辦法運行getstudio.php
頁面,同時將存儲在$_POST[]
數組中的值發送到getstudio.php
頁面?
你有幾個選擇。
在任何情況下都不要忘記在對用戶數據采取行動之前重新驗證,除非絕對確定數據不會受到用戶的影響(在上面的列表中,僅在會話中存儲數據時,仍然不推薦)。 然后,如果再次驗證,為什么還要單獨使用一個頁面呢?
所以據我所知你想先發送數據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();
}
});
});
這是您當前的頁面
<?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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.