1

私はオンラインプロジェクト「今週の質問」を持っています。このプロジェクトでは、ユーザーが質問を送信できます。これらの質問はmysqlテーブルに保存されます。質問は、phpBBに質問を保存する別のsimplepost.phpにも送信されます。この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 "

どうしたらいいか教えてください。このURLからこの「t=24」を取得するにはどうすればよいですか。

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 "に移動します。

しかし、問題はこれがすべてバックエンドで起こっているということです。私のプロジェクトでは、phpBBのviewtopic.phpページが表示されません。

4

4 に答える 4

2

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

その特定のページにいないときにそのセクションだけを取得しようとしている場合は、次のことを試すことができます。

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

次に、$res配列の結果から「t=」を削除します。

于 2009-07-24T19:48:21.927 に答える
1

URLからコンポーネントを抽出するには、次を使用できます。parse_urlクエリ文字列のみを取得する場合は、問題なく実行$_SERVER['QUERY_STRING']できます。

次に、クエリ文字列からparams / valuesを取得するために、次の項目を確認できます。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変数が挿入されないようにするために、おそらく2番目の方法を好むでしょう。

于 2009-07-24T19:37:49.093 に答える
1

何が欲しいのかよくわかりませんが、私は愚かかもしれません。

のURLが与えられると、$urlこれを行うことができます:

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

ページにGETパラメーターが渡された場合、次のことができます。

$t = $_GET['t'];
于 2009-07-24T19:40:15.313 に答える
0

どうですか:

$var = $_GET['t']; 

それをフィルタリングし、それで何でもします。

于 2009-07-24T19:51:56.037 に答える