2017-06-20 39 views
0

我試圖將會話變量傳遞到在我的PHP腳本中打開的新選項卡,以便可以以相同的順序多次循環腳本。但是,$ _SESSION數據似乎沒有傳遞到新選項卡。將會話變量傳遞到新選項卡

下面是從原來的標籤代碼:

if ($dir = opendir($filefolder)) { 
     $fileCount = 0; 
     while (($file = readdir($dir)) !== false) { 
      echo "filename: " . $file . " " . filemtime($filefolder . $file); 
      $fileInfo = new SplFileInfo($file); 
      if (filemtime($filefolder . $file) > $lastcheck &&*/ $fileInfo->getExtension() == '7z') { 
       copy($filefolder . $file, $workingFolder . $file); 
       $_SESSION{'filename'} = $file; 
       $_SESSION['filepath'] = $workingFolder . $file; 
       ?> 
        <script> 
         workingWindow = window.open("<?php xecho($set->url); ?>/?module=upload&mode=automatic&step=0"); 
        </script> 
       <?php 
       $fileCount++; 
      } 
     } 

這裏是新標籤的代碼:

$filefolder = $_SESSION['filepath']; 
$filename = $_SESSION['filename']; 
$filepath = $filefolder . $filename; 

,我發現了新的選項卡上的錯誤是:

Notice: Undefined index: filepath in C:\xampp\htdocs\datascrape\lib\functions\modules\upload\automatic\automaticStep0.php on line 22 

Notice: Undefined index: filename in C:\xampp\htdocs\datascrape\lib\functions\modules\upload\automatic\automaticStep0.php on line 23 
+0

會話是否開始?我只問b/c,如果不是,會話變量還沒有初始化,而且如果會話還沒有持久(提交),那麼新的設置值不可用。這就是爲什麼在使用這些值之前,您需要首先驗證對會話變量的期望。注意腳本的併發性。 – hakre

+0

是的,會話已啓動。實際上,啓動多個會話是因爲它會將會話啓動從前一頁中抽出,並且每次頁面加載都會被調用。 (我意識到這一點,因爲我得到了多個會話已經開始在上面的頁面上發佈通知) –

+0

並且整個會話在第二個腳本中是空的?要在作業完成之前提前完成會話,請使用http://php.net/manual/en/function.session-write-close.php - 如果解決了您的問題,您可以嘗試,但我有點猜測 – hakre

回答

0
$_SESSION{'filename'} = $file; 
$_SESSION['filepath'] = $workingFolder . $file; 

不應該代碼把$文件放到SESSION中有方括號?

$_SESSION['filename'] = $file; 
$_SESSION['filepath'] = $workingFolder . $file; 
+0

糟糕。謝謝你收到。 ;-)我只是將它切換到方括號中,但我仍然得到未定義的錯誤,所以除了錯字之外,還必須有其他事情發生。 –

+0

它可能是錯誤輸入的,但在PHP中,可以使用方括號和大括號括起來作爲數組。花括號只是不常見,但代碼是有效的。 - http://php.net/manual/en/language.types.array.php#language.types.array.syntax.accessing(該部分末尾的註釋) – hakre

+0

@EricLaRue您正在收到的通知是您在條件語句中分配$ filepath和$ filename。因爲它只是一個通知,它可能是他們需要在條件語句之外進行定義?或添加代碼以檢查變量是否已設置。看看另一個問題的答案[看看這篇文章的答案](https:// stackoverflow。COM /問題/ 18731693 /未定義指數與 - PHP的會話)。 – Gmiles