GAPI und JS
Nach dem ich euch gestern das Tutorial gepostet habe hab ich mich selbst noch ein bisschen gespielt man kann schöne sachen damit machen hier 2 Beispiele:
und
echt nice.. die dinger
Google Analytics API
Wie ich neulich hier gelesen habe, gibt es eine Klasse namens GAPI und ich muss sagen:
NICE
Features
- Supports CURL and fopen HTTP access methods, with autodetection
- PHP arrays for Google Analytics metrics and dimensions
- Account data object mapping - get methods for parameters
- Report data object mapping - get methods for metrics and parameters
- Easy filtering, use a GAPI query language for Google Analytics filters
- Full PHP5 Object Oriented code, ready for use in your PHP application
wie funktioniert es?
<pre><?php
require 'gapi-1.3/gapi.class.php';
/* Set your Google Analytics credentials */
define('ga_account' ,'YOUR ANALYTICS EMAIL');
define('ga_password' ,'YOUR ANALYTICS PASSWORD');
define('ga_profile_id' ,'ANALYTICS SITE PROFILE ID');
$ga = new gapi(ga_account,ga_password);
/* We are using the 'source' dimension and the 'visits' metrics */
$dimensions = array('source');
$metrics = array('visits');
/* We will sort the result be desending order of visits,
and hence the '-' sign before the 'visits' string */
$ga->requestReportData(ga_profile_id, $dimensions, $metrics,'-visits');
$gaResults = $ga->getResults();
$i=1;
foreach($gaResults as $result)
{
printf("%-4d %-40s %5d\n",
$i++,
$result->getSource(),
$result->getVisits());
}
echo "\n-----------------------------------------\n";
echo "Total Results : {$ga->getTotalResults()}";
?>
hier werden z.B. die top 10 der Zugriffe auf die HP angezeigt
<pre>No. Source Visits ------------------------------------------------------ 1 google 10549 2 (direct) 1484 3 stumbleupon.com 1338 4 webintenta.com 159 5 bing 142 6 yahoo 115 7 feedburner 97 8 phpdeveloper.org 70 9 t3n.de 64 10 clearspace.openqa.org 43
und wenn man dann noch nette Effekte wie PHP - SWF Function
verwendet hat man den "checkeffect" geknackt..
JS – Offline lesen
Kennt ihr das?
Ihr habt eine schöne Seite gemacht und möchtet verhindern das Leute diese offline lesen können ?!
hier ein kleiner trick wie ihr das verhindern könnt:
<script language="javascript">
if (window.location.host != "www.badknight.at")
{
window.location.href = "http://badknight.at/error";
}
</script>
PHP SimpleXML und XML – so einfach geht es
Mit PHP5 wurde das Thema XML Parsen sehr einfach hier mal eine kleine Einführung wie es geht:
artikel.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?> <artikel> <titel>Der Titel</titel> <teaser>Der Teaser, eine kurze Beschreibung</teaser> <inhalt>Der Artikelinhalt an sich</inhalt> </artikel>
Um beispielsweise an den Inhalt des <teaser> Elementes zu gelangen, bedarf es nur weniger Zeilen Code:
simplexml_1.php:
<?php
if (file_exists('artikel.xml')) {
$xml = simplexml_load_file('artikel.xml');
echo $xml->teaser[0];
} else {
exit('Konnte Datei nicht laden.');
}
?>
Durch die simplexml_load_file() Funktion wird die XML Datei eingelesen und direkt in ein Objekt überführt. Auf die Elemente des Objektes kann jetzt wie auf normale Objekte zugegriffen werden. Die Ausgabe erfolgt über das $xml Objekt, welches nichts anderes als das Wurzelelement <artikel> darstellt.
Dabei erfolgt der Zugriff auf die Elemente jeweils über Arrays. Da in unserem Fall nur ein Element innerhalb des Wurzelelementes <artikel> als <teaser> Element verwendet wird, geschieht der Zugriff auf den Inhalt dieses Elementes mit dem Arrayindex 0. Wären zwei <teaser> Elemente verwendet, würde man über den Index 1 auf das zweite Element zugreifen.
Um zu verstehen, wie bei SimpleXML die Daten in Objekten gespeichert werden, kann man sich mit der var_dump() Funktion von PHP schlicht den gesamten Inhalt des Objektes ausgeben lassen. Man ändert den Code einfach wie folgt ab:
simplexml_1.php:
<?php
if (file_exists("artikel.xml")) {
$xml = simplexml_load_file("artikel.xml"');
var_dump($xml);
}
else {
exit("Konnte Datei nicht laden. ");
}
?>
Die Ausgabe nach Aufruf des Skriptes sieht wie folgt aus:
object(SimpleXMLElement)#1 (3)
{
["titel"]=> string(9) "Der Titel"
["teaser"]=> string(35) "Der Teaser, eine kurze Beschreibung"
["inhalt"]=> string(25) "Der Artikelinhalt an sich"
}
Darin erkennt man die gesamte Struktur des XML Dokumentes wieder. SimpleXML erkennt, dass das Dokument genau aus einem Element object(SimpleXMLElement)#1 besteht, welches drei object(SimpleXMLElement)#1 (3) untergeordnete Elemente beherbergt. Diese Elemente, ihr Datentyp und deren Inhalte werden dann in geschweiften Klammern angegeben.
Wenn man bedenkt, dass zum Parsen eines XML Dokumentes mit dem ereignisorientierten Parser Expat mindestens drei Funktionen definiert werden mussten, ist der hierzu notwendige Aufwand mit SimpleXML nicht vergleichbar.
Komplexere XML Dokumente und SimpleXML?
Auch komplexe XML Dokumente lassen sich mit SimpleXML rasch bearbeiten. Folgendes XML Dokument ist fast identisch mit dem Beispiel oben, es wurde jedoch mit Attributen und weiteren Elementen versehen.
artikel_2.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?> <content> <artikel id="1"> <meta> <keywords>ein,netter,artikel</keywords> <description>ein,lustiger,artikel</description> </meta> <titel>Der Titel</titel> <teaser>Der Teaser, eine kurze Beschreibung</teaser> <inhalt>Der Artikelinhalt</inhalt> </artikel> <artikel id="2"> <meta> <keywords>ein,zweiter,netter,artikel</keywords> <description>ein,zweiter,lustiger,artikel</description> </meta> <titel>Der zweite Titel</titel> <teaser>Der zweite Teaser, eine kurze Beschreibung</teaser> <inhalt>Der zweite Artikelinhalt</inhalt> </artikel> </content>
Da SimpleXML ausgesprochen modular aufgebaut ist und viele Schnittstellen zu weiteren PHP- beziehungsweise XML Technologien aufweist, können komplexe Untersuchungen von XML Dokumenten zum Beispiel über den in SimpleXML integrierten XPath Prozessor durchgeführt werden. Das heißt, man kann über die Pfadangaben in XPath auf die gesuchten Elemente zugreifen.
Dies soll im folgenden Beispiel geschehen – es soll lediglich der vom Besucher angefragte Artikel angezeigt werden. Der gewünschte Artikel wird durch die ID identifiziert, die im <artikel> Element als Attribut definiert ist. Diese ID wird über den URL an das PHP Programm übergeben.
simplexml2.php
<?php
$id = $_GET['id'];
if (file_exists("test.xml")) {
$xml = simplexml_load_file("test.xml");
$path ="/content/artikel[@id=".$id."]";
if (!$res = $xml->xpath($path)) {
echo "Artikel nicht vorhanden!";
}
else {
echo "<h1>".$res[0]->titel."</h1>";
echo "<p><b>".$res[0]->teaser."</b></p>";
echo "<p>".$res[0]->inhalt."</p>";
}
}
else {
exit("Konnte Datei nicht laden.");
}
?>
Auf den gewünschten Artikel wird über den XPath Pfad /content/artikel[@id=".$id."] zugegriffen. Die Anfrage wird über die xpath() Methode verarbeitet und das Ergebnis der Variable $res zurückgegeben. In diesem Array sind nun alle Elemente des gesuchten Artikel-Objektes gespeichert. Auf diese kann wie auf ein Objekt zugegriffen werden.
Weitere Informationen zu SimpleXML und PHP5.
.htaccess
Habt ihr euch schon mal gefragt wie das geht das ein php code in anscheinend normalen "html" dateien angezeigt wird?
es ist recht simpel.. man schreibt in eine Datei die ".htaccess" heißt folgendes rein:
AddType application/x-httpd-php php php4 php3 html htm
Mit diesem Code werden alle Dateien mit den Endungen *.php, *.php4, *.php3 und *.html, *.htm von PHP interpretiert.
PHP – Regex => alle img Tags auslesen
Mit diesem kleinen Trick können Sie alle src Werte von img-Tags über einen regulären Ausdruck mit PHP auslesen und ändern. Das ist hilfreich, wenn Sie einmal in viel HTML Code die URLs in dem img-Tag anpassen oder ändern müssen. Reguläre Ausdrücke machen es möglich.
Vielleicht kennen Sie das Problem? Sie möchten, dass in viel HTML Code, z.B. aus einer Datenbank, automatisch die src-Attribute an img-Tags angepasst werden. Sei es z.B., dass aus
<img src="/images/bild.jpg" alt="Ein Bild" /> automatisch <img src="<a href="http://www.testseite.de/images/bild.jpg">http://www.testseite.de/images/bild.jpg</a>" alt="Ein Bild" />
werden soll.
Jetzt sind Sie sich aber nicht sicher, ob sie wirklich nur valides HTML verwendet haben? Also es soll auch folgendes ersetzt werden:
<IMG src="test/images/bild.jpg" alt="Ein Bild" />
oder
<imG SRC='mein_blog/images/bild.jpg' alt="Ein Bild">
Folgende Zeilen PHP Code erledigen das gewünschte:
Zu dem Code gibt es noch eine kurze Erklärung. Das zweite Subpattern fängt das linke Quote-Zeichen auf, oder eben keins, wenn keins da ist – falls der HTML code nicht valide ist. Das dritte passt auf den Pfad und wird deshalb ersetzt. Das vierte Subpattern erfasst alles nach dem letzten Slash bis zum Ende des Dateinamens. ‘\2′ ist eine Rückreferenz (”back reference”) und passt auf exakt das gleiche Zeichen wie das zweite Subpattern, also ‘”‘, “‘” oder kein Zeichen. Der Rest versucht alle möglichen Arten von img-Tags zu erfassen: “<img …>”, “<img …/>” und “<img … />”. have fun ; )
$old = "Alter HTML Code, etwa <img src="/images/bild.jpg" alt="Ein Bild" />
$neue_url = "<a href="http://www.testseite.de/">http://www.testseite.de</a>";
$pattern = '/(<img.+?src=)(["\']?)([^\'"]+?)([^\/]+)(\2.*?\/?>)/is';
$replace = "$1$2".$neue_url."$4$5";
$new = preg_replace($pcre, $replace, $old);
Der Alte Trick..
Immer wieder kommt es vor, das mehr oder weniger Unerfahrene Surfer von einem anscheinenden "Hack" erzählen, da ihr Festplatteninhalt auf einer Website angezeigt wurde. Mit ein wenig HTML ist dieser Effekt möglich, und er ist völlig ungefährlich.
So manch ein Webmaster macht sich einen Spass daraus, den Besucher ein wenig zu schocken, in dem der Inhalt der Festplatte des Besuchers auf der Website angezeigt wird. Eigentlich ist dieser Effekt ziemlich "kindisch", doch sollte man schon Wissen, wie das mit HTML geht.
Ein einfacher Trick mit einem Iframe, also einem in das Dokument eingebetteten Frame macht dies möglich.
<iframe src="<a href="file:///C:/">file://C:/</a>" width="400" height="400" name="werbung"><p>Ihr Festplatteninhalt auf C</p></iframe>
easy oder .. ;) ?

