2009-07-24 10 views
1

私はオンラインプロジェクト "今週の質問"を持っています。このプロジェクトにより、ユーザーは質問を提出することができます。これらの質問はmysqlテーブルに保存されます。質問はphpBBに質問を格納する別のsimplepost.phpにも送られます。 すべての質問にこのphpBBを使用して、その質問に関する議論をしたいと思います。URLから情報を取得しますか?

これで、私のプロジェクトは質問をSQLテーブルに保存するだけでなく、質問をphpBBに投稿します。

質問がphpBBに投稿されたとき、それは "http://servername.com/phpBB3/viewtopic.php?f=5&t=24"に格納されます。ここで、t = 24は質問です。

私は何とかこのURLをつかんで、t = 24を抽出したいので、私のプロジェクトで各特定のphpBBページの質問を指示する各質問に対してクリック可能なリンクを持つことができます。

私のプロジェクトがオンになっていると仮定します

と、この(これは、ユーザが質問を投稿することができますし、問題をSQLテーブルに挿入され、また、phpBBの/ simplepost.phpに呼び出すことはphpBBのに質問を投稿している)http://servername.com/qotw/profile.html PHPでの質問は、 "http://servername.com/phpBB3/viewtopic.php?f=5&t=24"

私に何を提案してください。どうすればこのURLから "t = 24"を取得できますか?

私のsimplepost.phpが呼び出されると、posting.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; 

$の結果2で来る応答:

simplepost.php内のコードは次のようになります。そしてURLから成分を抽出するためのページが

。「 http://servername.com/phpBB3/viewtopic.php?f=5&t=24にオーバー行くしかし、事は、すべてこれは、バックエンドで起こっているです。私のプロジェクトは、phpBBののviewtopic.phpページを示していません。

+0

どのようにsimplepost.phpに送信しますか? – seth

答えて

2

を私は間違っていない場合は、する必要がありますPHPを使用して$_GET['t']を使用してURLの 't'変数に格納された 'value'(24)を取得することができます。これはあなたが現在そのURLにいる場合にのみ機能します。参照:http://us2.php.net/manual/en/reserved.variables.get.php

あなたがその特定のページに表示されていないだけで、そのセクションをつかむしようとしている場合は、試みることができる:

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

そしてちょうど$での結果から「=トン」はがしRES配列についてどのように

1

、あなたが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 
?> 

(知られていない可能性があります。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']; 

すると、それを濾過し、それを何でも。