2012-03-18 3 views
0

У меня есть сайт, на котором я продаю цифровые загрузки, и пытался какое-то время настроить экспресс-проверку PayPal. Я, наконец, интегрирую его, но есть одна вещь, которую я не могу понять.PHP - Относительные пути! Легко для опытных разработчиков, я должен подумать

Мой код говорит get_script_uri ('buy.php')); Это означает, что при обработке платежа пользователь будет перенаправлен на «buy.php».

PayPal_Digital_Goods_Configuration::return_url(get_script_uri('buy.php')); 

Однако моя страница, которая включает в себя этот код (paypalbuy.php) находится в директории под названием «дл /». Когда платеж обрабатывается и пользователь перенаправляется на «buy.php», пользователь перенаправляется на «dl/buy.php» из-за пути.

Как это исправить? Как установить 'get_script_uri (' http://google.com '));' и пользователь перенаправляется на URL-адрес, а не на файл в пути.

EDIT: Вот моя get_script_uri функция:

function get_script_uri($script = 'index.php'){ 
// IIS Fix 
if(empty($_SERVER['REQUEST_URI'])) 
    $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; 

// Strip off query string 
$url = preg_replace('/\?.*$/', '', $_SERVER['REQUEST_URI']); 
//$url = 'http://'.$_SERVER['HTTP_HOST'].'/'.ltrim(dirname($url), '/').'/'; 
$url = 'http://'.$_SERVER['HTTP_HOST'].implode('/', (explode('/', $_SERVER['REQUEST_URI'], -1))) . '/'; 

return $url . $script; 
} 
+0

Почему бы не использовать фактический путь? – hjpotter92

+0

Как использовать фактический путь? извините, я noob. –

+0

@HugoCornellier: используйте 'PayPal_Digital_Goods_Configuration :: return_url ('http://google.com/buy.php');' (замените 'google.com' своим доменом, конечно). –

ответ

0

Не глядя на get_script_uri() исходный код, который я не могу быть уверен, но из структуры каталогов, которую вы описали, я делаю вывод, что путем изменения get_script_uri('buy.php') к get_script_uri('../buy.php') должен дать нужный URL-адрес, который вы ищете: ../ означает родительский каталог.

+0

' функция get_script_uri ($ скрипт = 'index.php') { \t // IIS Fix \t если (пусто ($ _SERVER [ 'REQUEST_URI'])) \t \t $ _SERVER [ 'REQUEST_URI'] = $ _SERVER ['SCRIPT_NAME']; \t // сдирать строки запроса \t $ URL = preg_replace ('/\?.*$/', '', $ _SERVER [ 'REQUEST_URI']); \t // $ url = 'http: //'.$_SERVER [' HTTP_HOST '].'/'. Ltrim (dirname ($ url),' /').//; \t $ url = 'http: //'.$_SERVER [' HTTP_HOST '] .implode ('/', (explode ('/', $ _SERVER [' REQUEST_URI '], -1))). '/'; \t return $ url. $ Сценария; } Вот оно. Однако я пытаюсь перенаправить URL. –

+0

@HugoCornellier: Это едва читаемый чувак, сообщение, которое правильно отформатировано в вашем вопросе. –

+0

@HugoCornellier: Вы пробовали, что я предложил? Он должен работать. –

Смежные вопросы