$ _POST 데이터 배열을 가져 와서 $ _SESSION 배열에 병합하는 방법이 있습니까? 현재 데이터를 그대로 유지하고 새 데이터를 삽입하거나 변경된 부분 만 업데이트하려고합니다. 나는 array_merge를 시도했지만, 내가 찾던 것을하지 않았다.
감사
$ _POST 데이터 배열을 가져 와서 $ _SESSION 배열에 병합하는 방법이 있습니까? 현재 데이터를 그대로 유지하고 새 데이터를 삽입하거나 변경된 부분 만 업데이트하려고합니다. 나는 array_merge를 시도했지만, 내가 찾던 것을하지 않았다.
감사
당신은 $ _SESSION [ 'postVars'] 변수를 만든 다음 거기에 $ _POST 정보를 저장하지 못했습니다. $ _SESSION을 $ _POST와 병합하지는 않겠지 만 나중에 응용 프로그램에 대한 보안 영향을 미칩니다. 나는 또한 $ _POST 글로벌에서 오는 모든 것을 절약하는 것에 조심할 것이라고 말한 바 있습니다. 어쨌든, 제 제안이 도움이되기를 바랍니다.
$_POST
을 $_SESSION
에 병합하는 것은 좋지 않습니다. 대신, 뭔가를 할 :
$_SESSION['lastPost']=$_POST;
또는, 당신은 다음과 같은
$_SESSION['lastPost']['thisKeysValueChanged'] = $_POST['thisKeysValueChanged'];
foreach ($_POST as $key => $val) {
if (!isset($_SESSION[$key]) || ($val !== $_SESSION[$key])) {
$_SESSION[$key] = $val;
}
}
에서, 변경 사항을 업데이트 $_SESSION['lastPost']
와 $_POST
을 비교하고 영향을받는 키 차이를 지정하고자하는 경우 즉, 현재 고려중인 POST 키 값에 SESSION arra에 해당 항목이 없거나 두 값이 다른 경우 POST 데이터를 SESSION에 복사합니다.
그러나 이렇게하면 악의적 인 사용자가 전체 세션 배열을 덮어 쓸 수 있습니다. $_SESSION['is_admin']
플래그를 유지하고 있음을 알고 있다면, 적절한 값으로 쉽게 덮어 쓰고 수퍼 유저 권한을 부여 할 수 있습니다.
사용자가 제공 한 데이터를 세션 변수에 직접 + 맹목적으로 전송하는 것은 결코 좋은 생각입니다.
array_merge는 작동하지만 배열을 수정하지 않습니다. 은 병합 된 배열을 반환합니다. 당신이하고 싶은 것은 : :) 당신이 시도 했는가
상기와
(보안 경고'array_merge'? 그것은 당신이 요구하는 것과 정확히 일치합니다. – ceejayoz
만약'array_merge()'가 당신이 원하는 것을하지 않는다면, 예제를 제시해야 할 수도 있습니다. 당신의 의견은 무엇이며 예상되는 결과는 무엇입니까? 단순하게 유지하십시오. – kba
$ _POST 데이터를 미리 필터링하지 않고 $ _SOSSION에 $ _POST 변수를 저장할 때 발생하는 보안 위험을 이해하시기 바랍니다. – stillstanding