2014-02-12 1 views
0

사용자가 연결된 경우 특정 app_id을 기반으로 두 가지 다른 콘텐츠를 표시하려는 응용 프로그램이 있습니다. app_id을 사용자에게 표시하고 싶지 않으므로 수정하지 못합니다. 따라서 나는 그것을 queryString으로 보내고 싶지 않다. 응용 프로그램 주 파일은 index.php입니다. 따라서 사용자가 index.php에 액세스 할 때 app_id에 따라 콘텐츠를 조정하고 싶습니다. 어떻게 내가 그 app_idindex.php에 사용자에게 보여줄 수 있습니까?사용자에게 app_id를 숨기고 그에 따라 콘텐츠를 조정하십시오.

내가 약 $_SESSION 생각했지만 단 하나의 index.php 파일이 있기 때문에, 정말 이런 식으로 뭔가를 할 수 없습니다

if($_SESSION['app_id'] == 1) 
{ 
    // call index.php file of app 1 
} 
else 
{ 
    // call index.php file of app 2 
} 

나는 내용을 복제하고 싶지 않아요. 모든 파일을 동일한 파일에 보관하고 조건을 사용하여 app_id을 기반으로 올바른 요소를 표시하려고합니다. HTTP 상태가없고, 쿼리 문자열에서 APP_ID를 통과

+0

어쨌든 앱 ID를 전송해야한다. 그 방법은 없다. 그리고 당신이 어떻게하는지에 상관없이, 그것은 볼 수 있습니다. 할 수있는 일은 난독 화를 시도하는 것이므로 명백하지 않은 방식으로 보내십시오. 아마도 가장 숨겨진 방법은 앱을 명시 적으로 전송하지 않고 앱의 다양한 동작을 구현하는 것입니다. 그런 다음 서버 측에서 해당 동작을 인식하고 이에 따라 동작 할 수 있습니다. 더 쉬운 대안은 버전 번호가있는 추가 HTTP 헤더를 보내는 것입니다. – arkascha

답변

0

때문에 어떤 도움

덕분에 나는 다음 개념을 제안 당신을위한 옵션이 아닙니다.

세션 또는 쿠키에 app_id를 저장하십시오. 사용자가 app_id를 수정할 수 없다는 생각이 들면 쿠키를 통한 세션을 제안합니다. 쿠키 값은 사용자가 수정할 수 있으므로 같은 문제가 발생합니다.

세션에 app_id를 저장하고 app_id 값을 팩토리 메소드 패턴으로로드하십시오.

"fatcory method"디자인 패턴에 대한 자세한 설명은 여기에서 확인하십시오. http://sourcemaking.com/design_patterns/factory_method.

기본적으로 디자인 패턴은 "app_id"인스턴스를 생성해야합니다. 새로운 app 클래스를 정의하고 팩토리 메소드 클래스로 정의하는 새로운 "app_id"를 가지고 있다면 코드를 훨씬 더 잘 정리할 수 있습니다. 그것은 앱 인스턴스 생성을 캡슐화하고 전체 코드베이스에서 인스턴스를 쉽게 사용할 수 있기 때문에 코드베이스 전체를 감염시키지 않습니다 (물론 필요하다면).

이 정보가 도움이되기를 바랍니다. 너

관련 문제