는
if (isset($_GET['lang'])){
$lang = $_GET['lang'];
if ($lang == 'en'){
$_GET['method']($lang);
} elseif ($lang == 'nl'){
$_GET['method']($lang);
} else {
$_GET['method']($lang);
}
} else {
$lang = '';
$_GET['method']($lang);
}
정확히 같은
if (isset($_GET['lang'])){
$lang = $_GET['lang'];
$_GET["method"]($lang);
} else {
$lang = '';
$_GET['method']($lang);
}
@Highmastdon으로는하지 않을 것이다 else
을 포함하여 모든 경우에 해당 조건을 모두 수행 할 필요는 없습니다. 똑같은 것; 그은을 얻기 위해 시작하지만 ...
$_GET['method'](isset($_GET['lang']) ? $_GET['lang'] : '');
을 :
$lang = isset($_GET['lang']) ? $_GET['lang'] : '';
$_GET['method']($lang);
당신은 심지어 같은 하나에 두 줄을 결합 할 수 있습니다 : 당신이 준 코드는 다음과 같이 간단하게 작성할 수 있습니다 비트를 읽을 수 없습니다.
그러나, 나는 브라우저에서 직접 지정 함수 이름을 호출하는 것은 주요 보안 위험이 될 수 있다는 @ Vilx-에 의해 만들어진 점을 에코 것이다, 그래서 당신은 * 정말 * method
의 내용 수의사에게 필요 lang
. 그러나, 는이를
'index.php? method = eval & lang = whatever()'를 허용한다면'isset'을 사용해서는 안됩니다. – mario
''배열 인덱스가 설정되지 않았습니다 '경고를 막기 위해'isset'에 대해 걱정해야합니다. 아니면 경고를 무시할 수도 있습니다. 그러나 가장 좋은 방법은'isset'을 사용하여 그것을 피하는 것입니다. – Spudley
@mario : 예제가 작동하지 않지만, eval은 함수가 아닙니다. 대신 컨텍스트 및 보안 문제를 고려할 때 assert;) – NikiC