0

3 ページあります。

ページ 1: AJAX ファイル アップローダがあるメイン ページ

ページ 2: (ページ 1 からの AJAX 要求) ファイル アップローダーを処理し、セッションを開始して、ファイル名をセッションに保存します。複数のファイルがアップロードされた場合、このページは複数回呼び出されます。

ページ 3: (ページ 1 からの AJAX リクエスト) ページ 2 がすべてのファイルをアップロードすると、ページ 1 がこのページにリクエストを送信するため、このページはセッションに保存された 2 つのファイル名を含む電子メールを送信し、その後、これにより、ページ 1 のページ更新時に新しいアップロードの準備が整います。

今私が直面している問題は、ページ 3 でセッションがクリアされていないことです。そのため、以前のファイル名と現在そこに入れられたばかりのファイル名があるため、毎回セッション配列が 2 倍の大きさになります。 .

私が使用しているコードは次のとおりです。

ページ 1:通常の JS & Ajax リクエスト

ページ2:

これは実際にセッション内で配列を設定します

session_start();
send_nosniff_header();
nocache_headers();
//BLA BLA BLA - here is where the actual file uploader code is suppose to be

//Here is the session im setting and storing
if (!isset($_SESSION['arraystuff'])) {
$_SESSION['arraystuff'] = array();
}
$_SESSION['arraystuff'][] =  $uploads_dir.'/'.$filename;

ページ 3:

これは、セッション内に保存されているすべてのファイル名を含む電子メールを送信します

if(isset($_GET['uploadComplete'])){
session_start();
//Get foreach filenames inside session and send email
$_SESSION = array();
session_destroy(); 
}

ただし、電子メールが送信されるたびに、前のセッションの以前のファイル名も送信され、クリアされないため、次のセッションが正常に機能するためにセッションはクリアされません。

4

2 に答える 2

3

書いunset($_SESSION['arraystuff']);たり

session_unset();
session_destroy();

送信メールの最後に..電子メールの成功のメッセージ/変数の下に書きます..

于 2013-09-03T07:54:00.020 に答える
1

3ページ目でもセッションを開始していることを確認してください。次に、次のことを試してセッションを空にしてください。

unset($_SESSION);
于 2013-09-03T07:50:09.913 に答える