Webcoding - Ein
einfaches Script zur Nutzung des Amazon Web Services / Product Advertising API
|
Voraussetzung: SimpleXML und PHP (PHP Version 5.1.2 oder
höher)
Auf
dieser Seite möchten wir Ihnen ein einfaches Script zur Nutzung des Amazon Webservice
vorstellen. Sie können dieses Script downloaden oder so wie es hier abgebildet ist
kopieren. Falls Sie das Kopieren vorziehen, so können Sie das Script als Quelltext in
eine leere Seite einfügen und diese dann mit der Endung .php abspeichern. Sie können
jedoch auch nur den Bereich von <?php bis ?> kopieren und in den Quelltext eines
vorhandenen Templates einfügen. In diesem Fall müssen Sie die Seite im Head mit
charset=UTF-8 deklarieren, damit Umlaute im Browser richtig dargestellt werden. Weiterhin
entspricht das Dokument validem HTML 4.01 Transitional. Sollte das Script zum Beispiel in
eine Seite mit XHTML eingebunden werden, so müssten sie es erneut validieren, unter
anderem müssten einige HTML Tags mit /> geschlossen werden, ansonsten wäre das
Dokument nicht mehr valide.
Einfacher können Sie es sich machen, wenn Sie dieses Script komplett mit der zugehörigen
CSS Datei, der Hintergrundgrafik sowie einer kleinen Anleitung/Readme downloaden. Den
Head- und Footerbereich können Sie in jedem Fall ihren Bedürfnissen entsprechen
anpassen, zum Beispiel durch das Einfügen eines Banners oder Menüs. Das Demo entspricht
voll dem hier abgebildeten Script, mit Ausnahme der drei oberen Links. Diese drei Links
sind nur im Demo enthalten.
Dieses Script enthält einen Zeitstempel und bildet eine Signatur, wie es ab Mitte August
2009 für einen Request beim Amazon Webserver und für die Nutzung der Product Advertising
API erforderlich ist.
Weitere
Einzelheiten | Demo
Beim Download haben Sie die Wahl:
Das Script für PHP5 und SimpleXML liegt in einer Version
für UTF-8 und in einer Version für ISO für Sie bereit, sowie jeweils
eine Version mit und eine ohne Cache.
Download (UTF-8) | UTF-8 mit Cache
Download (ISO-8859-1) | ISO mit Cache |
Sie können dieses Script frei nutzen, gleich ob privat oder
gewerblich (gewerblich mit Einschränkungen), so lange der enhaltene Hinweislink
zu unseren Seiten nicht entfernt wird. Lesen Sie hierzu bitte auch unsere AGB. Sie dürfen und können damit nur keine
Product Advertising API von Amazon nutzen, bevor Sie nicht über die erforderlichen
Zugangsvoraussetzungen verfügen.
Um das Script testen zu können, benötigen Sie drei
Kennungen, bestehend aus der Partner-Id, einem geheimen Access Key und dem AWS
Zugangschlüssel. Hierzu müssen Sie sich bei Amazon für das Partnerprogramm registrieren
sowie für den Web Service von Amazon anmelden und einer Lizenzvereinbarung mit Amazon
zustimmen. Wo Sie sich anmelden müssen, um Ihre Partner-Id und ihre AWS Zugangskennungen
zu erhalten, erfahren Sie auf dieser Seite:
Hinweise zum
Amzon Web Service
Damit die Spider sich keinen Wolf laufen, empfehlen wir
Ihnen eine robots.txt mit den hier abgebildeten Zeilen anzulegen. Falls Sie bereits eine
robots.txt mit dem Eintrag User-agent: * angelegt haben, so bitte den Eintrag nur mit der
letzten Zeile komplettieren.
User-agent: *
Disallow: /*ItemPage
Warum dieser Eintrag sinnvoll ist erfahren Sie hier: Einzelheiten
Hier geht es zur Ansicht des Scripts in der Ausführung für ISO.
weiterlesen» Script
für PHP5 / ISO | CacheVersion
Neu ab Oktober 2011 - Beschreibung | DemoShop | Download |
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Literatur / Bücher zum Thema: Computer</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="demos.css">
</head>
<body bgcolor="#F1EDDA">
<h1 align="center">Ein Demo mit SimpleXML und UTF-8</h1>
<div align="center"><center>
<?php
//------ Hier bitte Ihre persoenlichen Zugangsschluessel eintragen --------
$secret_access_key = "00GEHEIM000000000000000000"; //-- Hier bitte Ihren geheimen Zugangs-Schlüssel eintragen
$access_key_id = "00PHANTASIE00000000000000"; //-- Hier bitte Ihre AWSAccessKeyId eintragen
$associate_id = "ihredomainphantasie-21"; //-- Hier bitte Ihre Partner-Id eintragen
//------ Rubrik und Thema vorwaehlen, damit Seite nicht leer ladet --------
$dierubrik = "Books"; //-- Eine Rubrik eintragen, z.B. Books oder Tools
$meinthema = "Computer"; //-- Ein Suchwort, Thema, Titel oder Autor eintragen
//------ Ab hier bitte nur bei Bedarf die Zahlenwerte abaendern! ----------
$tableweite = "width=\"100%\""; //-- Tabellenweite anpassen -------------
$cellspacg = "cellspacing=\"0\" cellpadding=\"0\"";
$zelleprig = "padding-right: 10px; padding-top: 12px; padding-bottom: 15px;";
$zelleleft = "padding-left: 10px; padding-top: 12px; padding-bottom: 15px;";
$zellunten = "padding-left: 10px; padding-right: 10px; padding-top: 10px; padding-bottom: 10px;";
//------ Ab hier bitte keine Veraenderungen mehr vornehmen! ---------------
//------ Auslagerung dient nur zur Verkuerzung der Zeilen -----------------
$tabla = "target=\"_blank\"";
$goldbr = "<span class=\"goldbraun\">";
//------ Der Briefkasten vom Formular mit Umwandlung der Umlaute ----------
if ($_GET) {
$SearchIndex = urlencode($_GET['SearchIndex']);
$Keywords = urlencode($_GET['Keywords']);
$ItemPage = urlencode($_GET['ItemPage']);
$eing = array('%C3%84','%C3%A4','%C3%96','%C3%B6','%C3%9C','%C3%BC','%C3%9F','%3C','%3E','%28','%29','%7B','%7D','%5B','%5D',' ');
$ausg = array('Ae','ae','Oe','oe','Ue','ue','ss','no','nie','nicht','nein','na','nae','nee','nu','+');
$umlautade = str_replace($eing,$ausg,$Keywords);
$SearchIndex = preg_replace("/[^a-zA-Z]/", "no", $SearchIndex);
$ItemPage = preg_replace("/[^0-9]/", "1", $ItemPage);
}
else {$SearchIndex = $dierubrik;
$umlautade = $meinthema;
$ItemPage = 1;
}
//------ Die Titelzeile und das obere Suchformular ------------------------
print "\t<table border=\"0\" ".$tableweite." ".$cellspacg.">\n".
"\t<tr><td width=\"100%\" style=\"padding-top: 1px; padding-bottom: 2px\">\n".
"\t<p align=\"center\">".$goldbr."Literatur / Bücher zum Thema: " .$umlautade. " bei Amazon</span></td></tr>\n".
"\t</table>\n";
?>
<form name="Suchoptionen" action="<?php echo basename($_SERVER["PHP_SELF"]);?>" method="get" accept-charset="utf-8">
<br><br>
<select name="SearchIndex">
<option value="Books">Bücher</option>
<option value="DVD">DVD</option>
<option value="Music">Musik</option>
<option value="Toys">Spielwaren</option>
<option value="OutdoorLiving">Hobby & Freizeit</option>
<option value="Software">Software</option>
<option value="Tools">Werkzeug</option>
<option value="SoftwareVideoGames">Video & PC Spiele</option>
<option value="HomeGarden">Haus & Garten</option>
<option value="Kitchen">Haushalt</option>
<option value="Photo">Fotografie</option>
<option value="Electronics">Elektronik</option>
</select>
Eingabe
<input type="text" name="Keywords" value="" size="30">
<input type="hidden" name="ItemPage" value="1">
<input type="submit" value="Suchen">
</form>
<?php
print "\t<hr style=\"color: #FDFCFB; background-color: #FDFCFB\">\n";
/* Das eigentliche Sende- und Empfangsteil. Ein Teil der restlichen Parameter wird gebildet und wo es sein muss für den
Versand kodiert. Die Parameter werden dann entsprechend des Byte-Wertes ihrer Schlüssel geordnet. Auch wenn es auf
dem ersten Blick so erscheint, so entspricht diese Anordnung nicht ganz dem Alphabet, da in der Reihenfolge das kleine
a erst hinter dem großen Z kommt. So sind die Anfangsbuchstaben AW höher als die Anfangsbuchstaben As einzuordnen.
Im Anschluss wird die Signatur gebildet und der komplette String zusammen gesetzt.
*/
$aktuelle = gmdate("Y-m-d\TH:i:s\Z");
$aktuellezeit = urlencode($aktuelle);
$SearchIndex = urlencode($SearchIndex);
$umlautade = urlencode($umlautade);
$alleparameter = "AWSAccessKeyId" ."=". $access_key_id ."&".
"AssociateTag" ."=". $associate_id ."&".
"ItemPage" ."=". $ItemPage ."&".
"Keywords" ."=". $umlautade ."&".
"Operation" ."=". "ItemSearch" ."&".
"ResponseGroup" ."=". "Medium" ."&".
"SearchIndex" ."=". $SearchIndex ."&".
"Service" ."=". "AWSECommerceService" ."&".
"Timestamp" ."=". $aktuellezeit ."&".
"Version" ."=". "2009-07-18";
$stringsignr = "GET\n"."ecs.amazonaws.de"."\n"."/onca/xml"."\n".$alleparameter;
$signature1 = base64_encode(hash_hmac("sha256", $stringsignr, $secret_access_key, True));
$signature2 = urlencode($signature1);
$daten = file_get_contents("http://ecs.amazonaws.de/onca/xml?".$alleparameter."&Signature=".$signature2);
//------ Die XML-Datei wird geladen. ---------------------------------------
$response = simplexml_load_string($daten);
//-- Auf jeden Fall muss hier der Print der Tabelle beginnen ------------
echo "\n\t<table border=\"0\" ".$tableweite." ".$cellspacg.">\n";
foreach ($response->Items->Item as $movie) {
echo "\t<tr><td align=\"center\" style=\"".$zelleprig." border-bottom: 1px solid rgb(255,255,255)\">\n";
//------ Bilder mit Link zur Detailseite --------------------------------------
if($movie->MediumImage->URL){
echo ("\t<a href=\"".$movie->DetailPageURL."\" ".$tabla."><img src=\"".$movie->MediumImage->URL."\"
border=\"0\" alt=\"Cover\"></a></td>\n");
} else { echo 'Leider kein Bild <br> vorhanden.';
}
echo "\t<td align=\"center\" style=\"".$zelleleft." border-bottom: 1px solid rgb(255,255,255)\">\n";
//------ Die Titel von den Produkten mit Link zur Detailseite ------------
echo ("\t<a href=\"".$movie->DetailPageURL."\" ".$tabla." class=\"braungold\">".
htmlspecialchars($movie->ItemAttributes->Title)."</a><br>");
//------ Autoren, Mitautoren und Übersetzer ------------------------------
if($movie->ItemAttributes->Author[0]){
echo ("Autor: ".htmlspecialchars($movie->ItemAttributes->Author[0]));
} else {}
if($movie->ItemAttributes->Author[1]){
echo (" - ".htmlspecialchars($movie->ItemAttributes->Author[1]));
} else {}
if($movie->ItemAttributes->Author[2]){
echo (" - ".htmlspecialchars($movie->ItemAttributes->Author[2]));
} else {}
//------ Verlag, Produzent, Art der Bindung, Datum -------------------------
if($movie->ItemAttributes->Publisher){
echo ("<br>Verlag/Produzent: ".htmlspecialchars($movie->ItemAttributes->Publisher));
} else {}
if($movie->ItemAttributes->Binding){
echo (" - ".htmlspecialchars($movie->ItemAttributes->Binding));
} else {}
if($movie->ItemAttributes->PublicationDate){
echo ("<br>erschienen: ".htmlspecialchars($movie->ItemAttributes->PublicationDate));
} else {}
//------ Bemerkungen zur Beschaffenheit - falls vorhanden ------------------
if($movie->ItemAttributes->Feature[0]){
echo ("<br>Beschaffenheit: ".htmlspecialchars($movie->ItemAttributes->Feature[0]));
} else {}
if($movie->ItemAttributes->Feature[1]){
echo (", ".htmlspecialchars($movie->ItemAttributes->Feature[1]));
} else {}
if($movie->ItemAttributes->Feature[2]){
echo (", ".htmlspecialchars($movie->ItemAttributes->Feature[2]));
} else {}
//------ Neupreis und Angebotspreise ---------------------------------------
if($movie->OfferSummary->LowestNewPrice->FormattedPrice){
echo ("<br>Preis: ".htmlspecialchars($movie->OfferSummary->LowestNewPrice->FormattedPrice));
} else { echo '<br>Preis: keine Angaben';
}
if($movie->OfferSummary->LowestUsedPrice->FormattedPrice){
echo (" / erhältlich ab: ".htmlspecialchars($movie->OfferSummary->LowestUsedPrice->FormattedPrice));
} else { echo ' / erhältlich ab: keine Angebote';
}
//------ Link zur Detailseite und Zellenende -------------------------------
echo ("<br><br>\n\t<a href=\"".$movie->DetailPageURL."\" ".$tabla." class=\"braungold\">weitere Details</a><br>");
echo "\n\t</td></tr>\n\n";
}
print "\t<tr><td align=\"center\" style=\"".$zellunten."\" colspan=\"2\">\n\n";
//------- Die Auswertung vom Response und Umwandlung der Rubriknamen ------
foreach ($response->Items->Request as $gefunden) {
echo ("Seite ".$gefunden->ItemSearchRequest->ItemPage);
$SearchIndex = ($gefunden->ItemSearchRequest->SearchIndex);
//------ Hier erhalten die Kategorien ihren deutschen Namen ---------------
$Deutsch = array("Books" => "Bücher",
"Music" => "Musik",
"DVD" => "DVDs",
"Toys" => "Spielwaren & Modellbau",
"OutdoorLiving" => "Hobby & Freizeit",
"Software" => "Software",
"Tools" => "Werkzeug",
"SoftwareVideoGames" => "Video & PC Spiele",
"HomeGarden" => "Haus & Garten",
"Kitchen" => "Haushalt",
"Photo" => "Fotografie",
"Electronics" => "Elektronik");
echo (" - Rubrik ".$Deutsch[(string)$SearchIndex]." - Thema: ");
$Keywords = ($gefunden->ItemSearchRequest->Keywords);
echo preg_replace("/[ ]/", "+", $Keywords);
}
foreach ($response->Items as $Ergebnisse) {
echo ("<br> Treffer insgesamt: ".$Ergebnisse->TotalResults);
echo (" auf ".$Ergebnisse->TotalPages. " Seiten");
}
//------- Hier beginnt das untere Formular ---------------------------------------
?>
<form name="Searchoptionen" action="<?php echo basename($_SERVER["PHP_SELF"]);?>" method="get" accept-charset="utf-8">
<br><br>
<select name="SearchIndex">
<option value="Books">Bücher</option>
<option value="DVD">DVD</option>
<option value="Music">Musik</option>
<option value="Toys">Spielwaren</option>
<option value="OutdoorLiving">Hobby & Freizeit</option>
<option value="Software">Software</option>
<option value="Tools">Werkzeug</option>
<option value="SoftwareVideoGames">Video & PC Spiele</option>
<option value="HomeGarden">Haus & Garten</option>
<option value="Kitchen">Haushalt</option>
<option value="Photo">Fotografie</option>
<option value="Electronics">Elektronik</option>
</select>
Eingabe
<input type="text" name="Keywords" value="" size="30">
<input type="hidden" name="ItemPage" value="1">
<input type="submit" value="Suchen">
</form>
<?php
print "\t</td></tr>\n\t<tr><td style=\"padding-top: 10px; padding-bottom: 10px\" colspan=\"2\">\n";
print "\t<table border=\"0\" width=\"100%\"><tr><td width=\"33%\" align=\"left\" style=\"padding-left: 20px\">\n";
/* Ab hier werden die Links zur naechsten Seite und zurueck werden gebildet, wobei die Anwendung von htmlspecialchars
nicht nur der Sicherheit dient, sondern auch der Validierung des Dokuments, um das & in ein & bei der Ausgabe
zu verwandeln.
*/
$TotalPages = ($Ergebnisse->TotalPages);
$SearchIndex = ($gefunden->ItemSearchRequest->SearchIndex);
$Keywords = ($gefunden->ItemSearchRequest->Keywords);
$ItemPage = ($gefunden->ItemSearchRequest->ItemPage);
$Keywords = preg_replace("/[ ]/", "+", $Keywords);
if ($TotalPages > 1) {
if ($ItemPage > 1) {
echo "\t<a class=\"braungold\" href=\"".htmlspecialchars("?".
"SearchIndex"."=". $SearchIndex ."&".
"Keywords" ."=". $Keywords ."&".
"ItemPage" ."=".($ItemPage -1)).
"\">« zurück </a>\n";
} else {echo "\t<span class=\"zueinsam\">« zurück</span></td>\n";}
}
$scautor = "Script von www.seo-welten.de";
$lscautor = "href=\"http://www.seo-welten.de\"";
print "\t<td width=\"33%\" align=\"center\"><a class=\"braunklein\" ".$lscautor." ".$tabla.">".$scautor."</a></td>\n";
print "\t<td width=\"34%\" align=\"right\" style=\"padding-right: 20px\">\n";
if ($TotalPages > 1) {
if ($ItemPage*1 <= $TotalPages) {
echo "\t<a class=\"braungold\" href=\"".htmlspecialchars("?".
"SearchIndex"."=". $SearchIndex ."&".
"Keywords" ."=". $Keywords ."&".
"ItemPage" ."=".($ItemPage +1)).
"\">nächste Seite »</a>\n";
} else {echo "*\n";}
}
print "\t</td></tr></table>\n\n</td></tr></table>\n";
?>
</center></div>
</body>
</html>
|