2014-01-19 32 views
0

我真的不明白爲什麼這個var沒有被定義。PHP,var沒有定義

if(isset($_POST['test'])) 
{ 
    $directory = 'C:/Users/Oscar/Documents/test/'; 
    $files = array_diff(scandir($directory), array('..', '.')); 


    foreach($files as $file):?> 

    <table border="2px"> 
     <tr> 
      <td> 
       <form method="post"> 
        <input type="submit" value="<?php echo $file; ?>" name="file" />  
       </form> 
      </td> 
     </tr> 
    </table> 

    <?php endforeach; 


} 
if(isset($_POST['file'])) 
{ 
    //print_r($_POST['file']); 
    echo file_get_contents($directory.$_POST['file']); 
} 

該目錄var沒有被定義,即時通訊調用它的最後一個「if」。不知道爲什麼

+0

如果'$ _POST ['test']'沒有設置,'$ directory'永遠不會被初始化。 – 2014-01-19 04:23:38

+0

如果$ _POST ['test']存在,'$ directory'只會被初始化。如果不是,該代碼分支從來沒有運行,而VAR永遠不會被設置 –

+0

可能重複[PHP,腳本讀取文件瀏覽器(http://stackoverflow.com/questions/21212769/php-script-for - 瀏覽器中的文件) –

回答

0

因爲if語句是錯誤的。

Put $ directory ='C:/ Users/Oscar/Documents/test /';上面這條線:如果(isset($ _ POST [ '測試']))

+0

你應該真的詳細說明你的答案。這更多的是評論。 – Mike

0

所以$信息[ '測試']返回false和$目錄就是不確定的。

+0

if語句塊在php中沒有自己的範圍。 http://stackoverflow.com/a/4110430/1967396 – Floris

+0

哦,對了。我會修改我的答案。謝謝@弗洛里斯 –

3

更改您的代碼

$directory = 'C:/Users/Oscar/Documents/test/'; 
if(isset($_POST['test'])) 
{ 
    $files = array_diff(scandir($directory), array('..', '.')); 
    ..... 

我希望你明白這裏發生了什麼。你條件句是基本上(在實際的邏輯代碼不計)若{}否則如果{}

移動其共享了第一條件塊的確保它是在兩個塊中可用的變種。