2011-06-10 5 views
0

폼을 동일한 .php 파일에 POST 할 때 파일 범위 변수가 null 일 때 null입니다.폼 포스트가 파일 범위 변수를 지움

includefile.php :

<?php 

    $foo = " "; 
?> 

doIt.php :

<?php 

    echo $foo; 

echo <<<_END 
    <form action="doIt.php" method="post"><pre> 
    $nameLabel : <input type="text" name=$nameLabel /> 
    <input type="submit" name="addrecord" value="ADD RECORD" /> 

_END;

index.php를

<?php 
    require_once 'includefile.php'; 

    $foo = "Set now."; 

    require_once 'doIt.php'; 
?> 

이로드 처음의 index.php는 반향 $ foo는 원인과는 "지금 설정합니다."라는 그러나 양식의 제출 버튼을 누르면 - $ foo는 비어 있습니다. doIt.php에 다시 들어가서 $ foo 값을 죽이는 이유는 무엇입니까? 참고 : require_once는 아무 것도 변경하지 않았습니다. 여전히 동일한 문제입니다.

제 생각 엔 POST 양식과 같은 .php 파일에 결과가 다시 입력되는 것 같습니다 아무것도 설정하지 않고 스택에 새 호출 프레임을 설정합니다.

+0

형태는 기술적으로 같은 파일을 다시 게시하지 않습니다 - 오히려 'index.php를'당신이에서'require_once' 인 'doit.php'에 게시됩니다에 게시보다 색인 파일. 거기에 큰 문제가 있다고 생각하지 않지만 고려해야 할 것이 있습니다. – William

+0

게시 한 모든 코드가 변경되었습니다. – dqhendricks

+0

"파일 범위"와 같은 것이 없습니다. include 문은 include 문에서 포함 된 파일의 모든 코드를 복사하는 것과 같습니다. – dqhendricks

답변

1

양식을 'doit.php'가 아니라 'index.php'에 제출해야합니다. 'doit.php'파일에서 $foorequire_once 파일의 빈 문자열로 설정되며 예상대로 'index.php'를 통해 설정되지 않습니다. 그래서 :

<form action="index.php" method="post">

+0

좋아, 내가 정말로 원하는 것은 $ foo의 값을 일단 index.php (페이지가 처음으로로드 될 때) 안에 넣으면 $ Foo가 프로젝트의 다른 모든 파일에서 사용 가능하게되기를 바란다. 그 값이 '지금 설정'으로 설정되면 그래서 includefile.php에 $ foo를 넣었고 원래는 $ foo에 액세스해야하는 다른 모든 파일에 require_once 'includefile.php'가 있습니다. 하지만 POST 양식이 $ foo를 삭제한다는 것을 알았습니다. 왜 그런지 모르겠습니다. – wantTheBest

관련 문제