wordpress php post / redirect / get

时间:2018-04-04 06:58:29

标签: php wordpress redirect

我构建了一些代码来将file(COPY_IF_DIFFERENT)文件导入csv数据库,但遇到了表单重新提交问题(刷新页面,再次上传文件)。我正在尝试使用MySQL模式来解决此问题,但在post/redirect/get中,由于重定向正常工作,它会变得棘手。

WordPress

我尝试了一些方法来重新指导,但还没有找到办法让事情发挥作用:

<?php
/***update csv file ***/

if(isset($_POST["submit"])) //if submit button is pressed 
{
  if($_FILES['file']['name']) //if file exists
  {
    $filename=explode('.', $_FILES['file']['name']);//seperate file into filename and csv
    if($filename[1]=='csv'){  //if file format is csv
      $handle= fopen($_FILES['file']['tmp_name'], "r");
      while($data=fgetcsv($handle)){
        $sql="INSERT INTO val_in (xxxx,xxxx,xxxx,xxxx,xxxx,xxxx) VALUES(?,?,?,?,?,?)";
        //prepared statement 
        $stmt=mysqli_stmt_init($conn);
        if(!mysqli_stmt_prepare($stmt,$sql)){
          echo "SQL prepared statement error";
        }


        else{
          echo gettype($data[0]);
          mysqli_stmt_bind_param($stmt,"issddi",$data[0],$data[1],$data[2],$data[3],$data[4],$data[5]);
          mysqli_stmt_execute($stmt);
        }
      }
      fclose($handle);
        print "import done";
    }
    else{
      echo "Incorrect file format. Please select a CSV file. ";
    }
  }    
}
<form method='POST' enctype='multipart/form-data'>

       <div align="center">  
          <label>Import CSV File:</label>
          <input type="file" name="file" id="csvFile1" />
          <input type="submit" name="submit" value="Import" class="btn btn-info" />
         </div>
    </form>  

这些都不起作用。 此外,如果我最后放入wp_redirect( site_url(),303 ); header("Location: http://localhost:8888/dm_toolkit/wordpress/validation-data-input/?file=val_in_test.csv&submit=Import"); header("Location: xxx.php"); wp_redirect(get_permalink($post->ID) . '?success=true'); "exit",则会转到不包含任何现有内容的网页。

1 个答案:

答案 0 :(得分:1)

您可以将操作附加到模板重定向挂钩。在那里,您可以检查您的帖子请求是否已设置并执行您的游行,然后进行重定向。

add_action('template_redirect', 'handle_post_csv_request');

function handle_post_csv_request() {

if (isset($_POST["submit"])) { //if submit button is pressed 
    if ($_FILES['file']['name']) { //if file exists
        //your code goes here

        wp_redirect(site_url(), 303);
    }
}

}