Получение информации с URL-адреса?

У меня есть он-лайн проект "Вопрос недели"; этот проект позволяет пользователям задавать свои вопросы. Эти вопросы сохраняются в таблице mysql; вопрос также отправляется на другой файл simplepost.php, который сохраняет вопрос в phpBB. Я хочу использовать этот phpBB для каждого вопроса, для обсуждения этого вопроса.

Итак, теперь мой проект сохраняет вопрос в таблице sql, а также публикует вопрос в phpBB.

Но когда вопрос публикуется в phpBB, он сохраняет в нем "http://servername.com/phpBB3/viewtopic.php?f=5&t=24", где t=24 – вопрос.

Я каким-то образом хочу получить этот URL-адрес и извлечь t = 24, чтобы у меня была ссылка, которую можно щелкнуть для каждого вопроса в моем проекте, которая направляет вопрос о его конкретной странице phpBB.

Предположим, мой проект находится на: http://servername.com/qotw/profile.html ( это позволяет пользователю опубликовать вопрос, и вопрос вставляется в таблицу sql, а также вызывается в phpBB/simplepost.php, который публикует вопрос в phpBB)

и этот вопрос в php можно увидеть на: "http://servername.com/phpBB3/viewtopic.php?f=5&t=24"

Пожалуйста, предложите мне, что мне делать. как я могу получить это «t = 24» с этого URL-адреса.

Когда вызывается мой simplepost.php, он отправляет вопрос с помощью posting.php, и возвращаемое значение отправляется обратно.

Код в simplepost.php выглядит так:

$title = "This is the title of the message.";
//$body = "This is the message body.";
$post_fields = array(
             'subject'   => $title,
             'addbbcode20' => 100,
             'message' => $body,
             'lastclick'          => $lclick[0],
             'post'   => 'Submit',
             'attach_sig'        => 'on',
             'creation_time'      => $lclick[0],
             'form_token'   => $security123[1],
             'filecomment' => '',
             );

//Wait (you might also do this by setting lastclick in the past by 3 seconds
sleep(3);

//Set up curl session for posting the message
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL,$purl);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch1, CURLOPT_HEADER, false );
curl_setopt($ch1, CURLOPT_COOKIE,'cookie.txt');
curl_setopt($ch1, CURLOPT_COOKIEJAR,'cookie.txt');
curl_setopt($ch1, CURLOPT_COOKIEFILE,'cookie.txt');
$result2= curl_exec ($ch1);
//$result3= curl_exec ($ch1, CURLOPT_URL,$purl);
curl_close ($ch1);

echo $result2;

Ответ приходит в $result2. и страницы переходят на http://servername.com/phpBB3/viewtopic.php?f=5&t=24".

Но дело в том, что все это происходит в задней части. В моем проекте не отображается страница viewtopic.php phpBB.


person Zeeshan Rang    schedule 24.07.2009    source источник
comment
как вы отправляете на simplepost.php?   -  person seth    schedule 24.07.2009


Ответы (4)


Если я не ошибаюсь, вы должны иметь возможность использовать PHP для получения «значения» (24), хранящегося в переменной «t» в URL-адресе, используя $_GET['t']. Это будет работать только в том случае, если вы в данный момент находитесь по этому URL-адресу. См.: http://us2.php.net/manual/en/reserved.variables.get.php

если вы пытаетесь захватить только этот раздел, когда вы не на этой конкретной странице, вы можете попробовать:

ereg("t=[0-9]+", $url, $res)

затем просто удалите "t=" из результата в массиве $res

person Phil    schedule 24.07.2009

Чтобы извлечь компоненты из URL-адреса, вы можете использовать parse_url — хорошо , если вы хотите получить только строку запроса, $_SERVER['QUERY_STRING'] тоже подойдет.

Затем, чтобы получить параметры/значения из строки запроса, вы можете взглянуть на parse_str : есть пример, который показывает именно то, что вы хотите:

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>

Очевидно, вы, вероятно, предпочтете второй способ, чтобы избежать внедрения переменных (неизвестных и потенциально опасных, таких как register_globals) в ваш скрипт.

person Pascal MARTIN    schedule 24.07.2009

Не совсем уверен, что вы хотите, но я могу быть глупым.

Учитывая URL-адрес в $url, вы можете сделать это:

$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $params);
$t = $params['t'];

Если странице передается параметр GET, вы можете сделать:

$t = $_GET['t'];
person Tom Haigh    schedule 24.07.2009

Как насчет:

$var = $_GET['t']; 

Отфильтруйте его и делайте с ним что угодно.

person Elzo Valugi    schedule 24.07.2009