2014-01-19 2 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'는 절대로 초기화되지 않습니다. –

+0

'$ directory'는 $ _POST [ 'test']가 존재하는 경우에만 초기화됩니다. 그렇지 않으면 해당 코드 분기가 실행되지 않고 var가 결코 –

+0

[PHP, 브라우저에서 파일을 읽는 스크립트]로 복제되지 않습니다 (http://stackoverflow.com/questions/21212769/php-script-for -reading-files-in-browser) –

답변

0

if 문이 false이기 때문에.

$ directory = 'C :/Users/Oscar/Documents/test /';

+0

당신은 정말로 당신의 대답에 대해 자세히 설명해야합니다. 이것은 더 많은 논평입니다. – Mike

0

그래서 $ post [ 'test']는 false를 반환하고 $ directory는 정의되지 않습니다.

+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('..', '.')); 
    ..... 

에 코드를 변경

. 조건부는 기본적으로 (코드가 아닌 실제 논리의 관점에서) {else if}}

첫 번째 조건부 블록에서 공유되는 var을 이동하면 두 블록 모두에서 사용할 수 있습니다.

관련 문제