Php 页面刷新时表单重新提交问题-在wordpress预览页面时
我将wordpress作为CMS运行。我已经建立了一个简单的多部分表单,它工作得很好,允许从前端发布。这是一个由两部分组成的表单,第一部分是他提交数据的地方,第二步是他获得他刚刚提交的数据的预览。提交的数据如预期的那样在wp中创建了一个不错的草稿帖子 下面是表单页面模板中的第一段代码,用于显示表单。在代码的下半部分,您将看到一个预览部分(阅读代码中的注释),其中显示了刚刚提交的数据。所有这些工作都非常好,我甚至能够,在提交之后Php 页面刷新时表单重新提交问题-在wordpress预览页面时,php,wordpress,forms,Php,Wordpress,Forms,我将wordpress作为CMS运行。我已经建立了一个简单的多部分表单,它工作得很好,允许从前端发布。这是一个由两部分组成的表单,第一部分是他提交数据的地方,第二步是他获得他刚刚提交的数据的预览。提交的数据如预期的那样在wp中创建了一个不错的草稿帖子 下面是表单页面模板中的第一段代码,用于显示表单。在代码的下半部分,您将看到一个预览部分(阅读代码中的注释),其中显示了刚刚提交的数据。所有这些工作都非常好,我甚至能够,在提交之后 <?php global $
<?php
global $wpdb;
$this_page = $_SERVER['REQUEST_URI'];
$page = $_POST['page'];
if ( $page == NULL ) { ?>
<form method="POST" id="test_form" name="test_form" enctype="multipart/form-data" action="">
<div>LOCATION : <input type="text" name="location" id="location"/></div>
<div>DESCRIPTION : <textarea id="details" cols="80" rows="10 maxlength="600" name="details" rows="20"></textarea></div>
<div>UPLOAD IMAGE : <input type="file" name="loc-image" id="loc-image" tabindex="25" /></div>
<input type="hidden" value="1" name="page" />
<input type="hidden" name="action" value="post_action" />
<input type="submit" name="submit" id="submit" value="PROCEED"/>
</form>
<?php
} else if ( $page == 1 ) { ?>
<?php include_once('validate_first_step.php'); ?>
<?php if (isset($_POST['submit']) && (!empty($error))) { ?>
<h3>Submission Failed. Errors highlighted below.</h3><br/>
<a href="javascript:history.go(-1)">GO BACK</a><br/><br/>
<?php echo $error . '</br>';
} else { ?>
<?php echo 'h2>'.'YOUR SUBMISSION IS ACCEPTED. PREVIEW.'. '</h2>';?>
<?php //PREVIEW SECTION OF THE FORM BEGINS
$location=$_POST['location'];
$description=$_POST['details'];
?>
<?php
echo 'Location : ' . $location . '</br>';
echo 'Details : ' . $description . '</br>';
?>
<?php echo wp_get_attachment_image( $newupload,'medium' ); ?>
<?php //PREVIEW ENDS
}
}
?>
现在在处理器中,我检查meta_键“full_name”的meta_值是否已经存在。如果出现错误,表单将显示错误并简单地停止该过程。希望它能帮助别人
$existingMeta = get_posts( $args );
if(!empty($existingMeta)){
$error .= 'Bummer, ' .$location. ' is already in database.</br>';
return;
}
else {
//check for rest of the errors
}
$existingMeta=get_posts($args);
如果(!empty($existingMeta)){
$error.='Bummer',.$location.'已在数据库中。';
返回;
}
否则{
//检查其余的错误
}
可能有两种方法:
if(isset($\u POST['submit'])){
if (isset($_POST['submit'])) {
$error = "";
session_start(); // just to make sure you have an active session
if ($_POST['details'] != null) {
$_SESSION['description'] = trim(strip_tags($_POST['details']));
} else {
$error .= 'Put description.</br>';
}
if ($_POST['location'] != null) {
$_SESSION['location'] = trim(strip_tags($_POST['location']));
} else {
$error .= 'Put location.</br>';
}
}
$error=“”;
会话_start();//只是为了确保您有一个活动会话
如果($\u POST['details']!=null){
$_SESSION['description']=trim(strip_标签($_POST['details']);
}否则{
$error.='Put description.';
}
如果($_POST['location']!=null){
$_SESSION['location']=trim(strip_标签($_POST['location']);
}否则{
$error.='Put location.';
}
}
我们并不是在第一步向数据库提交数据。只需将其保存在会话中,以便在步骤2中使用
<?php echo 'h2>'.'YOUR SUBMISSION IS ACCEPTED. PREVIEW.'. '</h2>';?>
<?php //PREVIEW SECTION OF THE FORM BEGINS
$location=$_SESSION['location'];
$description=$_SESSION['description'];
?>
<?php
echo 'Location : ' . $location . '</br>';
echo 'Details : ' . $description . '</br>';
?>
<?php echo wp_get_attachment_image( $newupload,'medium' ); ?>
<?php //PREVIEW ENDS
}
}
?>
在第二步中,您可以将数据提交到数据库第一步在会话中保存数据,第二步检索数据以显示预览效果如何?我正在尝试执行您的建议,但无法获取图像,我只知道wordpress挂钩。不知道如何从会话中存储和提取映像。有什么想法吗?在会话中存储图像是复杂的,不建议使用,因为它会占用更多内存。。您可以在会话中存储图像的url,并在保存数据时使用它检索图像。您可以在会话中存储图像的url,并在保存数据时使用它检索图像,我如何做到这一点?最好举个例子,或者给我指出一个说明线程。感谢当我们提交多部分表单时,通过表单发送的所有文件都保存在全局变量
$\u文件中
,类似于$\u POST
对变量所做的操作。这是温度。将图像存储在某个本地目录中,以便您可以将上载的文件移动到所需位置,并将该位置存储在会话中。(听起来比实际情况更复杂。我选择了第一个解决方案和viola。请看更新。@gurung第一个解决方案很容易想出,但并不完美,当用户意外刷新页面时,丑陋的“你想再次提交吗?”尽管如此,我认为最好结合这两种方法来增加额外的安全性。这只是让您开始使用会话变量的想法,因为您将获得更少的服务器负载。干杯!
if (isset($_POST['submit'])) {
$error = "";
session_start(); // just to make sure you have an active session
if ($_POST['details'] != null) {
$_SESSION['description'] = trim(strip_tags($_POST['details']));
} else {
$error .= 'Put description.</br>';
}
if ($_POST['location'] != null) {
$_SESSION['location'] = trim(strip_tags($_POST['location']));
} else {
$error .= 'Put location.</br>';
}
}
<?php echo 'h2>'.'YOUR SUBMISSION IS ACCEPTED. PREVIEW.'. '</h2>';?>
<?php //PREVIEW SECTION OF THE FORM BEGINS
$location=$_SESSION['location'];
$description=$_SESSION['description'];
?>
<?php
echo 'Location : ' . $location . '</br>';
echo 'Details : ' . $description . '</br>';
?>
<?php echo wp_get_attachment_image( $newupload,'medium' ); ?>
<?php //PREVIEW ENDS
}
}
?>