有没有比重定向标头位置更好的解决方案?

时间:2018-01-31 18:27:32

标签: php forms duplicates submit refresh

目前我阻止重新提交重定向标头位置。但我认为页面加载速度较慢,因为去一个地方只是为了重定向到另一个地方是浪费时间。它为该过程增加了一个额外的步骤。

我还有哪些与PHP相关的选项?

是否有办法在提交时将表单数据发送到另一个文件/页面而不会“重定向”到该页面?并且可以在不需要重定向的情况下执行此操作,因为您从一开始就没有从那里发送过。只需将“表单数据”传递给另一页。

也可以打开其他解决方案,只要它是PHP。

小心

2 个答案:

答案 0 :(得分:0)

使用include将PHP包含在您将在没有重定向的情况下处理表单的其他页面中。

include 'YourFile.php';

这是一个结构性的例子。

 <?php
 include 'functions/db.php';// your db connection to process the form
 $error['last'] = '';
 $error['first'] = '';
 $error['user'] = '';
 if(isset($_POST['addUser'])){ // Check if form is submitted
 $LastImp = $_POST['LastImp'];
 $FirstImp = $_POST['FirstImp'];
 $UserImp = $_POST['UserImp'];
 if($LastImp == '' || $FirstImp == '' || $UserImp == ''){// Check if inputs are empty.
 if($streetImp == ''){$error['street'] = 'Must enter a Street';}
 if($LastImp == ''){$error['last'] = 'Must enter a Last Name';}
 if($FirstImp == ''){$error['first'] = 'Must enter a First Name';}
 if($UserImp == ''){$error['user'] = 'Must enter a Username';}  
 $error['alert'] = "All Fields are Required.";
 include 'views/employee_front.php';
 exit();
 } else {
 //Process the Form.
 }}
 include 'YourFile.php';// the php reads this first because all the other code is conditional upon submit.

这是YourFile Page

 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
 <title>Untitled 1</title>
 <body>

 <form method="post">
 <div class="rowContainer">
 <label class="User">Username</label>
 <input class="Userimp" name="UserImp" type="text"></div>
 <div class="error"><?php echo $error['user']; ?></div>
 <div class="rowContainer">
 <label class="First">First&nbsp;Name</label>
 <input class="Firstimp" name="FirstImp" type="text"></div>
 <div class="error"><?php echo $error['first']; ?></div>
 <div class="rowContainer">
 <label class="Last">Last&nbsp;Name</label> 
 <input class="Lastimp" name="LastImp" type="text"></div>
 <div class="error"><?php echo $error['last']; ?></div>
 <button class="addSubmitA" type="submit" name="addUser">Add&nbsp;User</button>
 </form>

答案 1 :(得分:0)

在表单标记<form method="POST" action="submit-data.php">的action属性中提供,并在submit-data.php中,在成功提交数据后给出header('Location:form.php')。它没有重新提交浏览器重新加载数据,对我来说很好。这是防止页面重新加载时重新提交数据的一种方法。第二种方法是使用Ajax Jquery方法提交数据。