2011-10-18 3 views
0

내가 메시지를 설정하고이 같은 다른 위치로 리디렉션 위의 코드를 시도하고 내가드루팔 6 개의 부트 스트랩

example.com 

example.com/somewere/index.php 

에서 리디렉션 해요로 설정 메시지

제 문제는 example.com에 도착하면 drupal은 세션을 유지하지 않습니다. 메시지가 표시되지 않습니다.

어떤 아이디어라도 높이 평가할 것입니다.

chdir('../'); 
require_once './includes/bootstrap.inc'; 
require_once './includes/common.inc'; 
require_once './includes/module.inc'; 

$url = "http://".$_SERVER['SERVER_NAME']; 

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
drupal_set_message(t('Your message has been sent'), 'status', TRUE); 
drupal_goto($url); 

나는 페이지의 일부 요소를 가져 와서 세션 사용이 가능한 부트 스트랩에서 drupal 밖에 두었습니다. example.com/somewere/ 내 메시지

하지만 example.com/ 에 내가

서버가 나에게 는 내가 있기 때문에 될 수 diffrent 세션을 열고 메시지를 받게 해달라고입니다 example.com/somewere/에서 다른 htaccess 파일을 사용하십시오.

메시지가 세션 기반이라는 것을 알고 있습니다. 동일한 도메인과 동일한 drupal에 다른 액세스 위치가 있기 때문에 문제를 우회 할 수있는 방법이 있습니까?

답변

0

session_get_cookie_params을 실행하여 경로가 단지 /인지 확인합니다. PHP가 세션 쿠키에 대한 경로를 /somewhere으로 설정했기 때문에 설치의 Drupal 설치가 세션 쿠키를 가지고 있지 않을 수 있습니다.

+0

나는 그것을 점검 할 것입니다. – aViNoAm

0
당신은 정말 드루팔 페이지를 리디렉션 이러한 길이에 갈 필요가 없습니다

, 사용자 정의 모듈에서이 같은 간단한 그것을 할 것입니다 :

function mymodule_init() { 
    if ($_GET['q'] == 'index.php') { 
    $url = "http://".$_SERVER['SERVER_NAME']; 
    drupal_set_message(t('Your message has been sent'), 'status', TRUE); 
    drupal_goto($url); 
    } 
} 

내가 완전히 확실하지 않다 왜 것 이것이 당신의 메시지에서 양식 제출에 대한 응답으로 이것을 수집합니까? 그렇다면 양식의 제출 처리자에서 $form_state['redirect'] = $url을 설정하는 것이 좋습니다.

+0

하지만 왜 Drupal 외부에 넣으려고합니까? 왜 그냥 표준 Drupal 페이지 콜백을 사용하여 양식을 출력 한 다음'exit()'를 호출하여 즉시 표시 할 수 있습니까? 그런 식으로 드루팔 (Drupal을 부트 스트래핑하는 것)을 망칠 필요가 없으며 세션이 그대로 유지됩니다. – Clive

+0

나는 페이지의 폼과 다른 요소들을 가져 와서 세션이 가능한 부트 스트랩에 drupal 밖에 두었다. example.com/somewere/ 내 메시지 이 하지만 example.com/ 에 내가 가 서버가 나는 diffrent htaccess로 파일을 사용하기 때문에이 될 수 내게 diffrent 세션 을 열고 메시지를 받게 해달라고입니다 example.com/somewere/ 메시지가 세션 기반이라는 것을 알고 있습니다. 동일한 도메인과 동일한 drupal에 다른 액세스 위치가 있기 때문에이 문제를 우회하는 방법은 입니까? 아무런 관리가 없다면 ... 하지만 이것은 좋을 것입니다. – aViNoAm