2012-04-27 9 views
0

私はブラウザーをリフレッシュするたびにcontrianの$ _SESSION変数を空白に戻すという問題があります。私は2つのファイルをアップロードしてブラウザをリフレッシュすると言っています。別のファイルをアップロードすると、アップロードしていないファイルをアップロードしたときの名前が表示されます。ブラウザをリフレッシュすると空となるように配列とセッション変数を取得するにはどうすればよいですか?ブラウザをリフレッシュした後に配列とセッション変数を空に戻す方法を教えてください。

以下

コードです:フォームが送信したりした後

<?php 

    session_start(); 

    $result = 0; 
    $errors = array(); 
    $dirImage = "ImageFiles/"; 


if (isset ($_FILES ['fileImage']) && $_FILES ["fileImage"] ["error"] == UPLOAD_ERR_OK) { 

$fileName = $_FILES ['fileImage'] ['name']; 

$fileExt = pathinfo ($fileName, PATHINFO_EXTENSION); 
$fileExt = strtolower ($fileExt); 


$fileDst = $dirImage . DIRECTORY_SEPARATOR . $fileName; 

     if (count ($errors) == 0) { 
      if (move_uploaded_file ($fileTemp, $fileDst)) { 
       $result = 1; 


      } 
     } 

    } 

    ?> 

<script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result;?>);</script> 
+2

を見たことがありますか? $ _SESSIONは、そのセッション中に永続化するために*必要な*データに使用するためのものです。 –

+0

これで、アップロードしたファイルの名前が表示されます。 – user1359453

+0

$ _FILES ['fileImage'] ['name'];を使用してそれらを表示します。あなたはセッション –

答えて

0

、あなたは成功し、アップロード後に変数を設定解除して、特定の問題を解決することができます:

 if (success == 1) 
    { 
     result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>'; 

     for(var i=0;i<imageNameArray.length;i++) //LOOP THROUGH ALL UPLOADED FILE NAMES 
     { 
      $('.listImage').append(imageNameArray[i]+ '<br/>');//APPEND FILE NAME 

     } 

     $_SESSION ['fileImage'] = NULL; // or use unset() 
    } 
3

以下
function stopImageUpload(success){ 

      var imageNameArray = new Array(); 
// WHEN PAGE IS REFRESH, ARRAY SHOULD GO BACK TO BEING BLANK 

imageNameArray = <?php echo json_encode(isset($_FILES ['fileImage']['name']) ? $_FILES ['fileImage']['name'] : null); ?>; 
//RETRIEVES THE SESSION VARIABLE FROM THE PHP SCRIPT OF THE FILE NAMES WHICH HAVE BEEN UPLOADED 

      var result = ''; 



      if (success == 1){ 
      result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>'; 

       for(var i=0;i<imageNameArray.length;i++) //LOOP THROUGH ALL UPLOADED FILE NAMES 
     { 
      $('.listImage').append(imageNameArray[i]+ '<br/>');//APPEND FILE NAME 

     } 

      } 
      else { 
      result = '<span class="emsg">There was an error during file upload!</span><br/><br/>'; 
      } 

    return true; 

    } 

は、上記javascript関数から別のページ上にあるファイルをアップロードするPHPスクリプトですPHPは表示したいページに303リダイレクトする必要があります。ユーザーがページをリフレッシュすると、2番目のフォームの送信は行われません。例えば

:私は@Reza Sanaieのコメントに同意するものの

header('Location: ' . $_SERVER['PHP_SELF'], true, 303); 
+0

このコードはjavascript関数の下にありますか? – user1359453

+0

これはあなたのPHPの中にあり、何らかの作業が行われた後*使用されます。 –

0

はちょうどあなたを行いますPHPでエラーをチェックし、配列をHTMLページに渡して、アップロードされたファイルのリストをページに表示します。あなたはJavaScriptを必要としません。あなたが最初の場所で$ _SESSION VARを中にアップロードされていたファイルの名前を格納しますなぜ

How to upload files in PHP

+0

ファイルがアップロードされる、それは問題ではありません、私はちょうどファイルがjavascriptを使用して画面に追加されるアップロードされたときにサーバーに格納されているファイル名が必要です。 – user1359453

+0

アップロードされたファイルの名前の配列を作成し、HTMLに渡します。 Javascriptを使って行う必要がありますか? –

関連する問題