今回は、他サイトを利用してみます。
自分のサイトで他サイトの画面を表示する方法としては、
フレーム機能を使う場合がほとんどだと思います。
ただし、フレーム機能は内容の変更まではできません。
今回は、他サイトの内容の流用に加えて、
内容も変更してしまう、というものです。
あくまでも実験として楽しんでくださいね。
利用するサイトはなんでもよいですが、
デフォルトとしてyahooを利用してみます。
そして、文字列の変換もしてみます。
こちらをクリックしてください。
フォームの下にヤフーの画面が表示され、
該当の文字列が変換されました。
作り方によっては、偽装サイトができてしまうので、
あくまでも個人で実験する範囲でお願いします。
今回使用したcfhttpタグは、cfmailタグと同様に衝撃的でした。
このように便利なタグが標準でたくさんあります。
他の言語でも別途ライブラリを追加すれば対応可能ですが、
標準で装備されているものは、たぶんほとんどないと思います。
個人でいろいろアイデアだしてツールを作ってみるのも
いいかもしれませんね。
<cfset title="他サイトの表示"> <cfparam name="url.sts" default=""> <cfparam name="form.moto_list" default="自動車,掲示板,ブログ,ビューティー,ビジネス"> <cfparam name="form.saki_list" default="car,bbs,blog,beauty,biz"> <cfparam name="form.url1" default="http://www.yahoo.co.jp/"> <cfparam name="form.url2" default="http://www.samuraiz.co.jp/coldfusion/"> <cfoutput> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>#title#</title> </head> <body> ■#title#<br><br> <form action="index.cfm?sts=1" method="post"> <table> <tr> <td>URL1</td> <td> <input type="text" name="url1" size="30" value="#form.url1#"> </td> </tr> <tr> <td>URL2</td> <td> <input type="text" name="url2" size="30" value="#form.url2#"> </td> </tr> <tr> <td>変換元文字列</td> <td> <input type="text" name="moto_list" size="30" value="#form.moto_list#"> </td> </tr> <tr> <td>変換先文字列</td> <td> <input type="text" name="saki_list" size="30" value="#form.saki_list#"> </td> </tr> </table> <input type="submit" value="send"> </form> </body> </html> <cfif url.sts neq ""> <!---解説 「url.stsがヌルでない場合」 この条件は、sendボタンを押した場合に <form action="index.cfm?sts=1" method="post"> によって、 url.sts=1が生成されるので、 この条件に該当します。 ---> <cfhttp url="#form.url1#" resolveURL="yes" result="ret1" method="get"> <!---解説 注目のcfhttpタグです。 resolveURL="yes"により、 リンク部分がヤフーサイトと同様になります。 noの場合は、リンクは自分のサイト名がついた状態なので リンクをクリックしてもエラーが発生します。 ---> <cfhttp url="#form.url2#" resolveURL="yes" result="ret2" method="get" charset="shift_jis"> <!---解説 「charset="shift_jis"」は呼び出すサイトで同じ指定がされている場合、 使用すると文字化けしません。 なにも指定しない場合はutf-8がデフォルトです。 ---> <cfset content = ret1.fileContent & ret2.fileContent> <!---解説 2つのサイトのコンテンツを結合します。 上記のように複数のサイトから情報を取得する場合は、 「result="ret1"」のように指定します。 1つの場合は指定しなくてもよいですが、 その場合は、 cfhttp.fileContent で、コンテンツの中身を取得します。 ---> <cfset content = ReplaceList(content, form.moto_list, form.saki_list)> <!---解説 コンテンツの中身の文字列を置換します。 ---> <hr> #content# <!---解説 コンテンツを表示します。 ---> </cfif> </cfoutput>