ホームページ >バックエンド開発 >PHPチュートリアル >PHP と AJAX_PHP を使用して RSS アグリゲーターを作成するチュートリアル

PHP と AJAX_PHP を使用して RSS アグリゲーターを作成するチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:34:23843ブラウズ

単純な HTML ファイルを使用してサーバー側スクリプトにリクエストを送信し、そのリクエストに基づいてカスタム XML ファイルを受信し、ブラウザを更新することなくそれをユーザーに表示できることを想像してみてください。この記事の著者は、通常の Web アプリケーションで PHP と AJAX テクノロジを組み合わせて、ブラウザを更新せずにリアルタイムのデータ送信を作成する方法を一緒に検討します。

この記事では PHP を使用していますが、サーバー側の言語はどれでも問題なく動作することに注意してください。この記事を理解するには、JavaScript と PHP、または同様のサーバーサイド言語についての基本的な理解があることを前提としています。

この記事の例では、AJAX を使用して、RSS フィードからカスタム PHP オブジェクトにリクエストを送信します。この PHP オブジェクトは、ローカル サーバー上のフィードをコピーし、このパスを返します。リクエスト オブジェクトはこのパスを受け取り、解析し、データを HTML 形式でユーザーに表示します。これは多くのステップのように思えますが、実際には 4 つの小さなファイルだけで構成されています。 4 つの小さなファイルが使用される理由は、それぞれの固有の長所のバランスをとり、システム全体のプロセスを非常に効率化するためです。

読者の中には、なぜ元のフィードを解析するのではなく、ローカル サーバー上にフィードのコピーを作成するのか疑問に思う人もいると思います。その理由は、これにより、XML HTTP リクエスト オブジェクトによって課せられるクロスオリジン制限をバイパスできるためです。このカスタム PHP オブジェクトの作成方法については後で説明しますが、まずフォームの作成から始めましょう。

リクエストを行うためのフォームを作成します

最初に行う必要があるのは、HTML の head タグの間に使用する JavaScript および CSS ファイルを含めることです。アグリゲーターの最終レイアウトを実装するためのスタイルシートと、リクエストを作成してフィード分析を行うための JavaScript ファイルを含めました。

<link href="css/layout.css" rel="stylesheet" type="text/css" />
<script src="js/request.js"></script>
次に、選択した RSS フィードをリクエストするフォームを作成します。私が作成したフォームは、入力フィールドとリクエストを送信するボタンのみで構成されています。このリクエストのクエリは、フィード入力値とサーバー側で検証されるパスワードで構成される文字列です。例として、次の形式を使用しました。


「パスワード=私のパスワード」 このコードは、ページが読み込まれるたびにリクエストを作成します。したがって、ページが更新されると、ページの読み込み時に入力フィールド内の既存のフィード文字列がリクエストされます。以下は、分析されたフィードの特定のノードを表示するためのいくつかの div タグを伴うフォーム データの例です:



<body onload="javascript:makeRequest(request.php?request= + document.feedForm.feed.value + "password=mypassword);"> <form name="feedForm" method="post" action="javascript:makeRequest(request.php?request= + document.feedForm.feed.value + "password=mypassword);">
私が作成した 3 つの div タグは、logo、copy、details で、それぞれにレイアウト スタイル シート内でスタイルが関連付けられています。フィードを分析するときにこれらを使用しますが、最初に要求したフィードにアクセスできるようにする必要があります。これは、前に説明した PHP オブジェクトを使用して実行できます。
カスタム PHP オブジェクトを作成する

PHP で小さな RSS クラスを作成しました。このクラスはローカル サーバー上にリクエスト フィードのコピーを作成し、後で作成する XML HTTP リクエスト オブジェクトからアクセスできるようにします。通常、ドメインを越えてファイルをリクエストすることはできません。つまり、リクエストしているファイルはローカル サーバー上にある必要があります。このクラスは、ローカル サーバー上でリクエストされたフィードのコピーを作成し、フィードへのローカル パスを返し、その後 Request オブジェクトによってアクセスされるため、クロスオリジン問題の解決策となります。

このクラスの唯一のメソッドはリクエスト メソッドであり、リクエストされた RSS フィードの URL を指すパラメータが 1 つだけあります。次に、ディレクトリがローカル サーバー上に存在するかどうかを RSS 名で確認します。存在しない場合は、作成してそのアクセス許可モードを 0666 に設定します。これは、ディレクトリが読み取りおよび書き込み可能であることを意味します。読み取り可能に設定すると、ディレクトリに後でアクセスできます。書き込み可能に設定すると、フィードのコピーをローカル サーバー上のディレクトリに書き込むことができます。

フィードを入力します:
<input type="submit" name="submit" value="フィードを追加">
</フォーム>
<div id="ロゴ"></div>


<div id="コピー"></div>
<div id="詳細"></div>
</本文>

//ディレクトリが存在しない場合は作成します
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666);
}
注意

Windows マシンでは、PHP 4.2.0 以降ではモード設定は必要ありません。ただし、存在しても無視されるため、プロジェクトが UNIX または Linux サーバーに移動された場合に備えて保存しておきました。

フィードをこのサーバーにコピーする前に、一意のファイル名が必要です。すべてのフィード名が一意であることを保証するために、完全な URL で md5 暗号化を使用しています。この新しいファイル名を使用すると、フィードのコピーを作成するときに使用される、ファイルを指すディレクトリを説明する文字列を連結できます。


//一意の名前を作成します $file=md5($rss_url); ここで、上で定義したパスと、要求された元のフィード URL への参照を使用して、ファイルのコピーを作成できます。最後に、リクエストに応じて新しいファイルへのパスを返します:
$path="$dir/$file.xml";




//フィードをローカルサーバーにコピーします copy($rss_url,"$path");
この PHP クラスのメソッドにアクセスするには、クラスへのインターフェイスとして機能するリクエスト ファイルが必要です。これはまさに私たちがリクエストしているファイルです。このファイルは、最初にリクエストからクエリされたパスワード変数を検証し、リクエスタが許可されたユーザーではないことを示すメッセージを返すか、RSS フィード (リクエスト メソッドによって処理された後にローカル サーバーにコピーされる) を指します。応答するためのパス。この RSS フィードに応答するには、この RSS オブジェクトをインクルードしてインスタンス化し、要求されたフィードの URL をパラメーターとして使用してリクエスト メソッドをアクティブにする必要があります:

$path を返します;
以下は、小さいながらも強力な RSS クラス全体です:
<?php
クラスRSS
{
関数get($rss_url)
{
if($rss_url != "")
{
// ディレクトリが存在しない場合は作成します
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666);
}
//一意の名前を作成します
$file = md5($rss_url);
$path = "$dir/$file.xml";
//フィードをローカルサーバーにコピーします
コピー($rss_url, "$path");
$path を返します;
}
}
}
?>

<?
if($パスワード == "私のパスワード")
{
require_once(classes/RSS.class.php);
$rss = 新しい RSS();
echo $rss->get($request);
}
それ以外
{
echo "あなたは不正なユーザーです";
}
?>
AJAX と組み合わせた GET/POST

POST リクエストを行うには、まずリクエスト オブジェクトを作成する必要があります。リクエスト オブジェクトの作成経験がない場合は、私の記事「AJAX の使用方法」を読むか、この記事のサンプル ソース コードを勉強してください。リクエスト オブジェクトが作成されたら、sendFeed メソッドを呼び出して、フォームで作成された URL を渡すことができます:

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508480.html技術記事単純な HTML ファイルを使用してサーバー側スクリプトにリクエストを送信し、そのリクエストに基づいてカスタム XML ファイルを受信し、それをほとんどスワイプせずにユーザーに表示することを想像してください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。