2011-01-13 3 views
4

내 CMS는 사이트를 방문하는 모든 사용자에 대해 PHP 세션을 만듭니다. 난 단지 로그인하려는 사용자를위한 세션을 만드는 것에 대해 생각하고 있습니다. 여기에있는 문제는 로그인 한 사용자의 일부 UI 요소가 모든 페이지에 있다는 것입니다. 따라서 모든 페이지 요청시 시스템에 사용자가 있는지 확인해야합니다. 로그인하면 모든 페이지 요청에서 세션을 시작할 수있는 다른 옵션이 없다는 의미입니까? 아니면 내가 틀렸어? 로그인을 원하지 않더라도 모든 사용자에 대해 세션을 만드는 것이 일반적인 방법입니까?모든 사용자 또는 로그인하려는 사용자에 대해서만 PHP 세션을 만드시겠습니까?

간단히 말해서, A. 유스 케이스에 로그인하려는 사용자를위한 PHP 세션 만 만들 수있는 옵션이 있는지 알고 싶습니다. 모든 사용자에 대해 세션을 만드는 것이 바람직하지 않은 경우를 생각해보십시오. 그가 로그인할지 여부와 상관없이 이것이 사실이 아니라면, 나는 사실 그대로 그대로 남겨 둘 수 있습니다 ...

+1

세션 변수에 데이터의 기가 바이트를 저장하지 않는 한 세션이 좋지 않습니다 (세션 매개 변수에 megs의 데이터를 게시하는 사이트를 보았습니다) –

+0

감사합니다! 알아 둘만한! – wowpatrick

답변

3

당신은 (진짜) 선택이 없습니다. 사용자가 세션없이 로그인했는지 여부는 사용자가 알 수 없습니다.

+0

그래서 내가 처음에는 옳았습니다. 당신이 말했던 것처럼, 사용 사례에서는 어쨌든 다른 옵션이 없었습니다. 아직도, 이것이 일반적으로 "나쁜 습관"을 고려하고 있는지 아닌지에 대해 알고 싶습니다. – wowpatrick

+0

그게 내가 알고 싶었던 전부에 관한 것 같아, 고마워! – wowpatrick

1

빈 $ _SESSION 값이 로그인되어 있는지 확인할 수 없습니까?

+0

내가 틀렸다고 정정 해 주겠지 만, 세션을 시작하지 않으면 (예 : 일반 방문자와 같이 로그인하지 않으려는 모든 사용자를 피하고 싶었던 경우) $ _SESSION은 항상 존재하지 않습니다. 그래서 그것은 진짜 옵션이 아닙니다. – wowpatrick

+0

$ _SESSION이 있는지 확인하십시오. –

1

대부분의 경우 로그인은 세션을 통해 관리되므로 페이지가 시작할 때 로그인하여 로그인 여부를 확인해야합니다. 당신은 정말 선택의 여지가 없습니다. 그것은 나쁜 습관이 아니며 일반적인 관행입니다.

+0

답변 해 주셔서 감사합니다! 알아 둘만한! – wowpatrick

2

빠른 답변 :

모든 사용자에 대해 세션을 만드는 것이 좋습니다. 세션은 무시할만한 수준이며 성능에 관한 한 걱정할 부분이 없습니다 (귀하의 경우).

사용중인 방법은 전혀 나쁜 습관이 아닙니다. 사실 그것은 모범 사례에 가깝다고 말하고 싶습니다.

긴 답변 : 기업 세계에서 필자가 6 년 이상 PHP 프로그래머로서의 경험을 쌓은 상태에서 로그인 여부에 관계없이 모든 사용자에 대해 세션을 만드는 것이 일반적입니다. 세션은 로그인하지 않은 상태에서도 쇼핑 카트 등 사용자가 편리하게 사용할 수있는 많은 기능을 수행하는 데 사용할 수 있습니다. 성능을 최대한 높이고 싶다면 Google의 Pagespeed 및 Yahoo의 YSlow와 같은 도구를 사용하십시오. 웹 사이트의 모범 사례에 대한 팁을 제공합니다.

+0

설명해 주셔서 감사합니다! 정말 도움이되었습니다. 얼마나 많은 유익한 답변으로 여러 답을 표시 할 수 없습니까? – wowpatrick

1

은 언제나 세션을 만들지 않으므로입니다. 그렇다면 세션 파일이 작은 경우 어떻게해야합니까? 그것이 불필요 할 때 왜 증식 하는가?

이 나는 ​​본질적으로 할 것입니다 :

확인 들어오는 요청에 세션 쿠키의 존재를, 그리고 당신이 하나를받은 경우에만 session_start()을한다.

일반적으로 사이트를 탐색하는 로그 아웃 한 사용자는 세션 쿠키를 보내지 않으므로 session_start()을 트리거하지 않습니다. 단순한.

누군가가 귀하의 사이트에 로그인하고 세션 (응용 프로그램과 PHP 의미에서 논리적으로 세션 모두)을 시작하려면 쿠키 설정을 처리 할 session_start() 등을 사용하십시오.

그리고 일단 누군가 로그 아웃하면 PHP 세션 자체가 아닌 세션 쿠키도 파괴해야합니다.

분명히 사용자가 쿠키 작업을 막을 수 있고 문제를 일으킬 수 있지만 어쨌든이를 수행 할 수 있습니다.

관련 문제