PHPソースプログラム-アマゾンWebサービス(AWS/Amazon Web Service)ショップ名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2008年1月30日
先日公開したPHP4(XML関連の関数が使えない環境)で作ったショッピングサイト「KUNISAN.JPショップ http://kunisan.jp/shop/ 」ですが、とりあえずほぼ完成しました。ただ、試験的に作ったサイトで、あまりお客さんが来るとは思っていません。そこでサービス精神旺盛に、皆さんに PHPプログラムを公開してしまいます。
AWSAccessKeyIdのところにご自分のIDを入れれば、そのまま使えると思います。プログラムをそのままお使いいただいたり改造されることはかまいませんが、プログラムの著作権そのものは放棄しませんので、PHPソースの全体または一部について、ホームページや書籍等での再掲載や、二次的にダウンロードできるような形にはしないようにしてください。 ■■KUNISAN.JPショップ(PHP)■■ <html> <?php //タイトルの取得 $title = $_GET[TITLE]; //自動的に\が入ることがあるので、それを除去する処理 $title = stripcslashes($title); //検索ワードの取得 $word = $_GET[WORD]; //自動的に\が入ることがあるので、それを除去する処理 $word = stripcslashes($word); print '<head>'; if ($title != ""){ print '<title>'.$title.' / KUNISAN.JPショップ</title>'; } elseif ($word != "") { print '<title>検索結果 - '.$word.' / KUNISAN.JPショップ</title>'; } else { print '<title>KUNISAN.JPショップ</title>'; } print '</head>'; print '<meta name="description" content="">'; ?> <meta name="keywords" content=""> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> <body> <?php //ページ番号の取得 $page = $_GET[PAGE]; if ($page == ""){ $page = 1; } //ノードIDの取得 $node = $_GET[NODE]; //サーチインデックスの取得 $search = $_GET[SEARCH]; if ($search == ""){ $search = 'Blended'; } $selected[$search] = 'selected'; //商品の説明を出すかの取得 $contents = $_GET[CONTENTS]; $checked[$contents] = 'checked'; ?> <table cellpadding="0" cellspacing="0" border="0"><tr><td width="728"> <h1> <a href="index.php" style="text-decoration:none"> <font color="888888">大きな画像と文字の<b>KUNISAN.JPショップ[β版]</b></font> </a> </h1> <form action="index.php" method="get" name="form1" target="_top"> <b>サーチ</b> <?php print '<select name="SEARCH">'; print '<option value="Books" '.$selected['Books'].'>和書</option>'; print '<option value="ForeignBooks" '.$selected['ForeignBooks'].'>洋書</option>'; print '<option value="Electronics" '.$selected['Electronics'].'>エレクトロニクス</option>'; print '<option value="Kitchen" '.$selected['Kitchen'].'>ホーム&キッチン</option>'; print '<option value="Music" '.$selected['Music'].'>音楽CD</option>'; print '<option value="Classical" '.$selected['Classical'].'>クラシックCD</option>'; print '<option value="DVD" '.$selected['DVD'].'>DVD</option>'; print '<option value="VHS" '.$selected['VHS'].'>VHSビデオ</option>'; print '<option value="Video" '.$selected['Video'].'>ビデオ</option>'; print '<option value="VideoGames" '.$selected['VideoGames'].'>ゲーム</option>'; print '<option value="Software" '.$selected['Software'].'>ソフトウェア</option>'; print '<option value="Toys" '.$selected['Toys'].'>おもちゃ</option>'; print '<option value="HealthPersonalCare" '.$selected['HealthPersonalCare'].'>ヘルス&ビューティ</option>'; print '<option value="SportingGoods" '.$selected['SportingGoods'].'>スポーツ&アウトドア</option>'; print '<option value="Watches" '.$selected['Watches'].'>時計&アクセサリー</option>'; print '<option value="Baby" '.$selected['Baby'].'>ベビー&マタニティ</option>'; print '<option value="Apparel" '.$selected['Apparel'].'>アパレル&シューズ</option>'; print '</select>'; print ' <input type="text" name="WORD" size="40" value="'.$word.'">'; print ' <input type="submit" value="検索"><br>'; ?> </form> </td></tr></table> </center> <center> <?php //検索ワードのエンコード変換 $word = mb_convert_encoding($word, "UTF-8","SJIS"); //And条件は" + "で記述すること //Or条件は" | "で記述すること $word = mb_eregi_replace(' ','+',$word); $word = mb_eregi_replace(' ','+',$word); //商品検索プログラムのアドレス指定(●●AWSAccessKeyIDにご自分のものをお入れください) $addr = 'http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService& AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&AssociateTag=kj036-22& Operation=ItemSearch&SearchIndex='.$search.'& ResponseGroup=Large&Sort=salesrank&Keywords='.$word.'&ItemPage='.$page.' &BrowseNode='.$node; //検索ワードのエンコード変換 $word = mb_convert_encoding($word,"SJIS","UTF-8"); //ホームページのHTML取得(1秒1回ルールがあるので、トップページではコールしないようにする) if (($word != "")&&($search != 'Blended')) { $xml = file_get_contents($addr); } //結果表示のUTF-8エンコードをSJISエンコードに変換する $xml = mb_convert_encoding($xml, "SJIS", "UTF-8"); //総ページ数の取得 $zd2 = spliti('<TotalPages>',$xml); $zd3 = spliti('</TotalPages>',$zd2[1]); $total_pages = $zd3[0]; //各情報の取得 $zd1 = spliti('<Item>',$xml); //HTML表示 if (($word != "")&&($search != 'Blended')) { if ($title != "") { print '<table width="728">'; print '<tr><td colspan="2" height="1" bgcolor="#cccccc"></td></tr>'; print '<tr><td colspan="2" height="4" bgcolor="#ffffff"></td></tr>'; print '<tr><td colspan="2"><b>'.$title.'</b></td></tr>'; print '<tr><td colspan="2" height="3" bgcolor="#ffffff"></td></tr>'; print '<tr><td colspan="2" height="1" bgcolor="#cccccc"></td></tr>'; print '<tr><td colspan="2" height="12" bgcolor="#ffffff"></td></tr>'; print '</table>'; } else { print '<table width="728">'; print '<tr><td colspan="2" height="1" bgcolor="#cccccc"></td></tr>'; print '<tr><td colspan="2" height="4" bgcolor="#ffffff"></td></tr>'; print '<tr><td colspan="2"><b>検索結果 - '.$word.'</b></td></tr>'; print '<tr><td colspan="2" height="3" bgcolor="#ffffff"></td></tr>'; print '<tr><td colspan="2" height="1" bgcolor="#cccccc"></td></tr>'; print '<tr><td colspan="2" height="12" bgcolor="#ffffff"></td></tr>'; print '</table>'; } //商品最大10件分表示のため、その分のループ for ($i = 1; $i <= 10; $i++) { //ASIN取得 $zd2 = spliti('<ASIN>',$zd1[$i]); $zd3 = spliti('</ASIN>',$zd2[1]); $zd_data[$i]["ASIN"] = $zd3[0]; //ページのタイトル取得 $zd2 = spliti('<Title>',$zd1[$i]); $zd3 = spliti('</Title>',$zd2[1]); $zd_data[$i]["Title"] = $zd3[0]; //ブランドの取得 $zd2 = spliti('<Brand>',$zd1[$i]); $zd3 = spliti('</Brand>',$zd2[1]); $zd_data[$i]["Brand"] = $zd3[0]; //著者の取得 $zd2 = spliti('<Author>',$zd1[$i]); $zd3 = spliti('</Author>',$zd2[1]); $zd_data[$i]["Author"] = $zd3[0]; //アーティスト名の取得 $zd2 = spliti('<Artist>',$zd1[$i]); $zd3 = spliti('</Artist>',$zd2[1]); $zd_data[$i]["Artist"] = $zd3[0]; //曲目の取得 for ($j = 1; $j <= 10; $j++) { $zd2 = spliti('<Disc Number="'.$j.'">',$zd1[$i]); $zd3 = spliti('</Disc>',$zd2[1]); if ($zd3[0] != "") { $zd_data[$i]["Music_Contents"] = $zd_data[$i]["Music_Contents"].'<b>ディスク'.$j.'</b><br>'; for ($k = 1; $k <= 32; $k++) { $zd4 = spliti('<Track Number="'.$k.'">',$zd3[0]); $zd5 = spliti('</Track>',$zd4[1]); if ($zd5[0] != "") { $zd_data[$i]["Music_Contents"] = $zd_data[$i]["Music_Contents"].$k.' '.$zd5[0].'<br>'; } } } } //詳細ページのURL取得 $zd2 = spliti('<DetailPageURL>',$zd1[$i]); $zd3 = spliti('</DetailPageURL>',$zd2[1]); $zd_data[$i]["DetailPageUrl"] = $zd3[0]; //大型画像のアドレス取得 $zd2 = spliti('<LargeImage><URL>',$zd1[$i]); $zd3 = spliti('</URL>',$zd2[1]); $zd_data[$i]["LargeImageUrl"] = $zd3[0]; //新品価格取得 $zd4 = spliti('<LowestNewPrice>',$zd1[$i]); $zd5 = spliti('</LowestNewPrice>',$zd4[1]); $zd2 = spliti('<FormattedPrice>',$zd5[0]); $zd3 = spliti('</FormattedPrice>',$zd2[1]); $zd_data[$i]["Price"] = $zd3[0]; //中古価格取得 $zd4 = spliti('<LowestUsedPrice>',$zd1[$i]); $zd5 = spliti('</LowestUsedPrice>',$zd4[1]); $zd2 = spliti('<FormattedPrice>',$zd5[0]); $zd3 = spliti('</FormattedPrice>',$zd2[1]); $zd_data[$i]["UsedPrice"] = $zd3[0]; //在庫状況 $zd2 = spliti('<Availability>',$zd1[$i]); $zd3 = spliti('</Availability>',$zd2[1]); $zd_data[$i]["Availability"] = $zd3[0]; //説明の取得 //(1つめ) $zd4 = spliti('<EditorialReview>',$zd1[$i]); $zd5 = spliti('</EditorialReview>',$zd4[1]); $zd2 = spliti('<Content>',$zd5[0]); $zd3 = spliti('</Content>',$zd2[1]); $zd3[0] = mb_eregi_replace('<','<',$zd3[0]); $zd3[0] = mb_eregi_replace('>','>',$zd3[0]); $zd_data[$i]["Content"] = $zd_data[$i]["Content"].$zd3[0]; $zd_data[$i]["Content"] = $zd3[0]; //(2つめ。主にAmazonの商品紹介) $zd5 = spliti('</EditorialReview>',$zd4[2]); $zd2 = spliti('<Source>',$zd5[0]); $zd3 = spliti('</Source>',$zd2[1]); if ($zd3[0] != "") { $zd_data[$i]["Content"] = $zd_data[$i]["Content"].' <b>'.$zd3[0].'</b>'; } $zd2 = spliti('<Content>',$zd5[0]); $zd3 = spliti('</Content>',$zd2[1]); $zd3[0] = mb_eregi_replace('<','<',$zd3[0]); $zd3[0] = mb_eregi_replace('>','>',$zd3[0]); if ($zd3[0] != "") { $zd_data[$i]["Content"] = $zd_data[$i]["Content"].'<br>'.$zd3[0]; } //発売日の取得 $zd2 = spliti('<ReleaseDate>',$zd1[$i]); $zd3 = spliti('</ReleaseDate>',$zd2[1]); $zd_data[$i]["ReleaseDate"] = $zd3[0]; if ($zd_data[$i]["Title"] != "") { print '<table width="728">'; print '<tr>'; print '<td valign="top">'; print '<a href="'.$zd_data[$i]["DetailPageUrl"].'" target="_blank">'; if ($zd_data[$i]["LargeImageUrl"] != "") { print '<img src="'.$zd_data[$i]["LargeImageUrl"].'" width="300" border="0">'; } else { print '<img src="no_image.gif" width="300" border="0">'; } print '</a>'; print '<br>'; print '<br>'; print '</td>'; print '<td valign="top">'; print '<big>'; print '<b>'; print '<a href="'.$zd_data[$i]["DetailPageUrl"].'" target="_blank">'; print $zd_data[$i]["Title"]; print '</a>'; print '</b>'; print '</big>'; print '<br>'; if ($zd_data[$i]["Brand"] != "") { print $zd_data[$i]["Brand"]; print '<br>'; } if ($zd_data[$i]["Author"] != "") { print $zd_data[$i]["Author"].' (著)'; print '<br>'; } if ($zd_data[$i]["Artist"] != "") { print $zd_data[$i]["Artist"]; print '<br>'; } if ($zd_data[$i]["ReleaseDate"] != "") { print '<b>発売日</b>: '.$zd_data[$i]["ReleaseDate"]; print '<br>'; } if ($zd_data[$i]["Music_Contents"] != "") { print $zd_data[$i]["Music_Contents"]; //print '<br>'; } if ($zd_data[$i]["Price"] != "") { print '<b>新品最安値</b>: '.$zd_data[$i]["Price"]; print '<br>'; } if ($zd_data[$i]["UsedPrice"] != "") { print '<b>中古品最安値</b>: '.$zd_data[$i]["UsedPrice"]; print '<br>'; } if ($zd_data[$i]["Availability"] != "") { print '<b>在庫状況</b>: '.$zd_data[$i]["Availability"]; print '<br>'; } if ($zd_data[$i]["Content"] != "") { print '<b>商品の説明</b>:<br>'; print $zd_data[$i]["Content"]; print '<br>'; } //print $zd_data[$i]["Contents"]; print '・ <a href="cart.php?ASIN='.$zd_data[$i]["ASIN"].'" target="amazon_cart">'; print 'この商品をAmazon.co.jpのカートに入れる'; print '</a>'; print '<br>'; print '・ <a href="'.$zd_data[$i]["DetailPageUrl"].'" target="_blank">'; print 'この商品の詳細をAmazon.co.jpでチェック'; print '</a>'; print '<br>'; print '</td>'; print '</tr>'; print '<tr><td colspan="2" height="12" bgcolor="#ffffff"></td></tr>'; print '<tr><td colspan="2" height="1" bgcolor="#cccccc"></td></tr>'; print '<tr><td colspan="2" height="12" bgcolor="#ffffff"></td></tr>'; print '</table>'; } } //ページ受け渡し処理 print '<center>'; print '<table><tr>'; print '<td>'; print 'トータル'.$total_pages.'ページ中の'.$page.'ページ目'; print '</td>'; print '<td width="32"></td>'; print '<td>'; if ($page > 1) { $prev_page = $page - 1; print '| <a href="?PAGE='.$prev_page.'&SEARCH='.$search.'&WORD='.$word.'& CONTENTS='.$contents.'&TITLE='.$title.'&NODE='.$node.'">'; print '前ページを見る'; print '</a> |'; } else { print '| <font color="#888888">'; print '前ページを見る'; print '</font> |'; } print '</td>'; print '<td>'; if ($page < $total_pages) { $next_page = $page + 1; print ' <a href="?PAGE='.$next_page.'&SEARCH='.$search.'&WORD='.$word.'& CONTENTS='.$contents.'&TITLE='.$title.'&NODE='.$node.'">'; print '次ページを見る'; print '</a> |'; } else { print ' <font color="#888888">'; print '次ページを見る'; print '</font> |'; } print '</td>'; print '</tr></table>'; print '<br>'; print '| <a href="index.php">トップページ</a> |'; print '</center>'; print '<br>'; } else { } ?> </center> <center>Copyright (C) 2008 <a href="http://kunisan.jp/" target="_blank">KUNISAN.JP</a>. All Rights Reserved.</center> </body> </html> ■■■■■■■■■■■■■■■ ※本プログラムの動作保障は致しかねます。また、プログラムについての質問等は受け付けていません。全て自己責任でお願いします。 PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)
最近の記事: 尿酸値を下げる薬を飲み始めました / Googleから居住者証明書を求められて / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / 今までに行ったことのあるスキー場まとめ(2024年) / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / 富士見パノラマリゾート(2024年2回目) / よませ温泉スキー場 / ガーラ湯沢スキー場(2024年3回目) / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル
■ ホームへ
|