2012-02-22 4 views
0
할당

에서 오류 :유식 I는 다음과 같이 지정 사용

$smarty->assign("akakak", $_POST[do]); 

는 경우에 따라 작업입니다하지만 어떤 경우

내가이 매개 변수를 추가

에서 작동되지

$smarty->assign("akakak", $_POST[do], true); 

항상 작동합니다.

왜요?

+0

할당하기 전에'if isset ($ _ POST [ 'do'])'명령을 먼저 확인 하시겠습니까? 'do'에 대해 따옴표를 붙이십시오. PHP가 상수를 문자열 배열 키로 해석하도록하고 있기 때문입니다. –

+0

yes 나는 그것을 검사한다 –

+0

'error_reporting (E_ALL)'은 당신의 친구 다. $ _POST [ 'do']'not'$ _POST [do]' –

답변

2

확인하거나 디폴트 값을 설정해야합니다 :

<?php 
//Check it or set default for $do 
$do=(isset($_POST['do']))?$_POST['do']:''; 

//Assign the $smarty var with $do 
$smarty->assign("akakak", $do); 
?> 
2

을 슈퍼 전역 변수의 값 할당 ($ _GET, $ _POST, $ _REQUEST, $ _SESSION, $ _COOKIE, $ _SERVER를, $ _ENV)는 중복이다. 템플릿의 {$smarty} 변수를 통해 {$smarty.post.do} 변수에 액세스 할 수 있습니다.

다음은 Smarty3 마찬가지입니다 : assign()

세 번째 인수는 NOCACHE 플래그입니다. 이에 대한 자세한 내용은 cacheability of variables을 참조하십시오. 이것이 실제로 문제를 해결하면 실제 문제는 캐싱에 달려 있습니다. $smarty->caching = true;을 설정했을 가능성이 높습니다.이 경우 템플릿은 모든 호출에서 렌더링되지 않지만 가능한 경우 캐시에서 읽습니다.

추가 지원이 필요하면 문제가있는 경우에 대해 자세히 설명하고 싶을 수 있습니다.

그 외에, $_POST[do] 이상 $_POST['do']을 제안 다른 의견에 가까운 모양과 isset() 또는 empty() 적용의 사용을하시기 바랍니다.

관련 문제