繁体   English   中英

表单处理后的PHP重定向

[英]PHP redirect after form processing

我一直在盯着代码太久了,但是当我使用一个简单的脚本来保存表单时:

endif;
header('Location: http:/mysite.com/evo/codesaveindex.php');
?>

最后,将页面重定向回自身就很好了,但是现在我在这里有了一个更长的脚本,我不太清楚在哪里或如何编写重定向代码:

<?php
  session_start();
  $directory = 'users/'.$_SESSION['username'].'/';
  //here you can even check if user selected 'Delete' option:
  if($_POST['Action'] == "DELETE"){
      $file_to_delete = $_POST['CodeList'];
      if(unlink($directory.'/'.$file_to_delete))
         echo $file_to_delete." deleted.";
      else
         echo "Error deleting file ".$file_to_delete;
  }
   if($_POST['Action'] == "SAVE"){
     //  If a session already exists, this doesn't have any effect.
session_start();
//  Sets the current directory to the directory this script is running in
chdir(dirname(__FILE__));
//  Breakpoint
if( empty($_SESSION['username']) || $_SESSION['username'] == '' ) echo 'There is no session username';
if( empty($_POST['CodeDescription']) || $_POST['CodeDescription'] == '' ) echo 'There is no POST desired filename';
//  This is assuming we are working from the current directory that is running this PHP file.
$USER_DIRECTORY = 'users/'.$_SESSION['username'];
//  Makes the directory if it doesn't exist
if(!is_dir($USER_DIRECTORY)):
    mkdir($USER_DIRECTORY);
endif;
//  Put together the full path of the file we want to create
$FILENAME = $USER_DIRECTORY.'/'.$_POST['CodeDescription'].'.txt';
if( !is_file( $FILENAME ) ):
    // Open the text file, write the contents, and close it.
    file_put_contents($FILENAME, $_POST['Code']);   
   endif;
   }
  ?>

可能是您应该在重定向时使用querystring变量。

if($_POST['Action'] == "DELETE") {
    $file_to_delete = $_POST['CodeList'];
    if(unlink($directory.'/'.$file_to_delete)) {
        header('Location: http:/mysite.com/evo/codesaveindex.php?deleted=1&file='.$file_to_delete);
    } else {
        header('Location: http:/mysite.com/evo/codesaveindex.php?deleted=0&              file='.$file_to_delete);
    }
}

在codesaveindex.php中:

if(isset($_GET['deleted'])&& $_GET['deleted']==1) {
    echo $file_to_delete." deleted.";
} elseif(isset($_GET['deleted'])&& $_GET['deleted']==0) {
    echo "Error deleting file ".$file_to_delete; 
}

如果输出html之后的页面,则无法重定向。 您需要使用输出缓冲或使用javascript重定向,或组织它以便在显示html之前进行重定向。

我有一个针对此类事情编写的类,应该非常容易使用class.route.php只需在您要重定向的位置执行此操作:route :: redirect('page',http_status);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM