Перенаправление страницы не работает в php при доступе без браузера - PullRequest
2 голосов
/ 12 декабря 2011

Я занимаюсь разработкой приложения, в котором я получаю ввод через шлюз SMS (а не через браузер). Мне нужно обработать данные, полученные с помощью SMS, и передать их в другой файл PHP, который завершит обработку и отправит SMS обратно на шлюз SMS.

Однако, когда я пытаюсь перенаправить с page1.php на page2.php, он не работает со следующим кодом:

page1.php:

$url = "location:http://www.iweavesolutions.com/$extra?sms=".$msg."&keyword=".$key."&num=".$msg_num."&src=".$source;
header($url);

page2.php:

$msg = $_GET['sms'];
$msg_num = $_GET['num'];
$keyword = $_GET['keyword'];
$src = $_GET['src'];
send_sms($msg,$msg_num);

Однако вызов заголовка на первой странице, похоже, не работает. В документации php говорится, что заголовок используется для действий, связанных с браузером. В моем приложении нет браузера вообще. Итак, мне нужно изменить механизм передачи значений между файлами? Пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 12 декабря 2011

см. "CURL"

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,"http://www.iweavesolutions.com");     
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'variable1=abc&variable2=123');     
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 
curl_setopt($ch,CURLOPT_MAXREDIRS,1); 
$buffer = curl_exec($ch); 
curl_close($ch);

что-то вроде этого

0 голосов
/ 12 декабря 2011

Шлюз SMS, вероятно, не поддерживает HTTP должным образом. IME это не редкость.

В качестве примечания, ваш первый скрипт (при условии, что он завершен) написан при условии, что register_globals включен - он устарел в течение длительного времени и не кодирует URL-адреса значений - что может быть причиной проблемы Вот. Если нет, вам нужно либо:

  • исправить смс шлюз
  • изменить конечную точку, зарегистрированную на шлюзе SMS, чтобы исключить необходимость перенаправления
  • включить код из перенаправленного скрипта в текущий скрипт конечной точки
  • прокси-запрос от шлюза в скрипте конечной точки.
0 голосов
/ 12 декабря 2011

Отправка заголовка location:[someUrl] в качестве ответа на запрос просто указывает запрашивающему клиенту выполнить еще один запрос в этом месте.Клиент сам должен следовать этому перенаправлению или нет.Браузеры обычно делают это, другие клиенты не могут.

Если клиент, с которым вы имеете дело (шлюз SMS), не выполняет перенаправления заголовка местоположения, вам необходимо проверить документацию клиентов, если есть какой-то механизмчтобы заставить его сделать это.Если нет способа перенаправить клиента, вам нужно изменить логику на стороне сервера, чтобы избавиться от необходимости перенаправления, то есть вам нужно вызывать логику обработки в вашем 'page2.php' непосредственно из 'page1.php'без перенаправления перенаправления (или объединения всей логики в один файл и т. д.).

...