2009-07-24 2 views
1

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

Итак, мой проект хранит вопрос в таблице 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-адреса.

Когда вызывается my 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.

+0

как вы отправляете simplepost.php? – seth

ответ

2

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

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

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

затем просто сдирать «т =» из результата в $ Рез массив

1

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

Затем, чтобы получить Params/значения из строки запроса, вы можете посмотреть на 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 
?> 

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

+0

ах, ты избил меня на это .. –

1

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

Учитывая URL в $url вы могли бы сделать это:

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

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

$t = $_GET['t']; 
0

Как насчет:

$var = $_GET['t']; 

фильтр и делать все, что с ним.

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