|
von php4 auf php5
hier: übergabe von variablen
ab der version 4.2 sollte die register_globals=off gesetzt sein. php4 war viel zu anfällig bei fehlerhafter
programmierung, so dass die variablen nicht mehr über sämtliche websites derselben serverdomain ausgetauscht werden durften.
ab 4.32 wurde global on standardmässig in $_server[SCRIPT_FILENAME] auf off gesetzt.
jetzt müssen die übergebenen variablen (z.b. $xyz) mit $get[xyz] eingelesen werden. formularinhalte wie aus
<input type=text NAME="text1" size=23 MAXLENGTH="50" value=""> werden mit $text1=$_POST['text1'] weitergegeben.
eine ausnahme bildet include "xyz.php". hier bleiben die variablen erhalten, die datei muss allerdings ohne klammern und
fragezeichen eingebunden sein.
auch bei update "xyz.php" gilt die schreibweise nur ohne klammern.
um variablen an eine andere domain weiterzuleiten, reicht http://www.xyz.de?abc=1 aus. in der aufgerufenen datei werden sie
dann mit $abc=$_GET['abc']; eingearbeitet.
|
|
random mit zufallsausgangswert in php
zunächst soll der zufallsgenerator nicht immer mit derselben zahl beginnen, sonst würden sich die ergebnisse zu sehr ähneln.
srand (microtime () * 1000000);
dabei setzt microtime einen zufallsausgangswert.
die eigentliche funktion in php für random heisst: $zufall = rand (1,10);
ihre zahl wird mit der variable $zufall aufgefangen. in diesem fall wird eine zahl zwischen 1 .. 10 ermittelt.
|
|
eine neue tabelle für eine mySQL-datenbank aus php heraus erstellen
zunächst müsst ihr die datenbank öffnen:
mysql_connect ("serverAdresse", "dboberName", "pw");
mysql_select_db ("dbName");
mysql_query ("CREATE TABLE ". $ip ." (nr INT(10), var1 INT(3), var2 INT(3))");
$ip ist eine variable, die erst während der anwendung erstellt wird (deshalb kann die db auch nicht vorher manuell festgelegt werden:
INT(10) deklariert den typ integer mit 10 stellen. VARCHAR (3) würde z.b. einen character mit 3 stellen angeben.
$query = "INSERT INTO ". $ip ." (nr, var1, var2) VALUES (1, 0, 0)";
oder:
$query = "INSERT INTO ". $ip ." (nr, var1, var2) VALUES (". $id .", 100, 100)";
die einzelnen werte der variablen werden dann in die db eingefügt. dabei kann so ein wert auch aus einer variablen bestehen ($id).
hierzu bedarf es allerdings einer aufhebung der befehlsinternen anführungsstriche und zweier punkte, die die variable in
den code einfügen.
mysql_close ();
|
|
client-ip statt cookies.
viele verwahren sich gegen cookies auf ihrer festplatte. aber oftmals müssen sie sie akzeptieren, da sonst anwendungen nicht
laufen, die sie haben möchten.
aber es geht auch anders. onlinesoft benutzt z.b. für cyberearth die client-ip, die meistens einmalig ist und vom server dem
surfer am anfang seiner session gegeben wird. ausnahmen sind feste ips in firmen oder sammelzugänge, wo die angeschlossenen
computer über eine einzige hauptleitung (internet sharing) laufen.
der browser des besuchers bringt viele informationen mit, auch die client-ip. diese legen wir mit ihrem namen auf unserem
server temporär ab. wird eine seite neu aufgerufen, und die variablen werden nicht bei jedem schritt mit übergeben, so
sind sie beim nächsten aufruf der datei unbekannt. also müssen sie in einer datenbank niedergelegt und abgefragt werden.
doch woher weiss das programm, wie diese db heisst? wenn diesbezüglich keine variablen weitergereicht wurden...
beim verlassen des spiels werden sie dann gelöscht und beim nächsten besuch geht alles von vorn los - nur mit einer anderen
ip. diese werden ja in der regel bei jedem internetauftritt neu vergeben.
<?php
$ip2 = $_SERVER["REMOTE_ADDR"];
echo $ip2;
echo " ";
// ************ datei erstellen + ip eintragen
$ip='a'; // 1. buchstabe darf keine zahl sein + code darf keine punkte enthalten
for($i=0; $i
{
while ($ip2[$i] != "." && $i != strlen($ip2))
{
$ip .= $ip2[$i];
$i++;
}
}
mysql_connect ("servername", "db", "pw");
mysql_select_db ("db196297166");
mysql_query ("CREATE TABLE ". $ip ." (id VARCHAR(3), wissen VARCHAR(3), schnelligkeit VARCHAR(3))");
$query = "INSERT INTO ". $ip ." (id, wissen, schnelligkeit) VALUES ('123', '100', '100')"; // 1. eintragung mit insert
mysql_query ($query);
mysql_close();
// ************ daten auslesen
mysql_connect ("servername", "db", "pw");
mysql_select_db ("db");
$alles = mysql_query("SELECT * FROM ". $ip);
while ($ergebnis = mysql_fetch_array ($alles))
{
echo ('id: '.$ergebnis["id"]);
echo (' wissen: '.$ergebnis["wissen"]);
echo (' schnelligkeit: '.$ergebnis["schnelligkeit"]);
break;
}
mysql_close();
// ************ daten aendern, eintragen + ausgeben,
mysql_connect ("servername", "db", "pw");
mysql_select_db ("db");
$query = "UPDATE ". $ip ." SET wissen=50"; // sobald der ds vorhanden ist, mit update aktualisieren
mysql_query ($query);
$query = "UPDATE ". $ip ." SET schnelligkeit=50";
mysql_query ($query);
$alles = mysql_query("SELECT * FROM ". $ip);
while ($ergebnis = mysql_fetch_array ($alles))
{
echo ('id: '.$ergebnis["id"]);
echo (' wissen: '.$ergebnis["wissen"]);
echo (' schnelligkeit: '.$ergebnis["schnelligkeit"]);
break;
}
mysql_close ();
// ************ datei loeschen
mysql_connect ("servername", "db", "pw");
mysql_select_db ("db");
$query = "DROP table ". $ip;
mysql_query ($query);
mysql_close ();
echo " ";
?>
die abfrage $ip2 = $_SERVER["REMOTE_ADDR"]; kann auch je nach server und betriebssystem anders lauten:
um das herauszukriegen, müsst ihr folgendes testen:
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
{
if ($_SERVER["HTTP_CLIENT_IP"])
{
$proxy1 = $_SERVER["HTTP_CLIENT_IP"];
}
else
{
$proxy2 = $_SERVER["REMOTE_ADDR"];
}
$ip1 = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else
{
if ($_SERVER["HTTP_CLIENT_IP"])
{
$ip2 = $_SERVER["HTTP_CLIENT_IP"];
}
else
{
$ip3 = $_SERVER["REMOTE_ADDR"];
}
}
|
|
Zähler in PHP.
Voraussetzung ist ein WebServer, da PHP serverseitig arbeitet, und eine TextDatei zaehler.txt.
<?
if (file_exists("zaehler.txt"))
{
$datei = fopen("zaehler.txt", "r");
$zaehler = fgets($datei, 255);
fclose($datei);
}
$zaehler++;
$datei = fopen("zaehler.txt", "w");
fputs($datei, "$zaehler");
fclose($datei);
echo "Zugriffe: $zaehler";
?>
"r" (read) steht für datei auslesen, "w" (write) für reinschreiben.
|
|
PHP
PHP ist mittlerweile die Sprache des Internets. Es ist schnell, leicht zu lernen, eingebettet
im HTML-Code und sein QuellCode nicht zu lesen.
Es hat zwar nicht die VariablenVielfalt und -strenge wie C oder andere Hochsprachen, ist ihnen
aber sehr ähnlich und kann wunderbar mit mySQL und den UNIX-BetriebsSystemen harmonieren. Dass
heisst, es ist also auch plattformunabhängig.
Einzig die Ausführung am heimischen PC bedeutet noch Probleme. Es braucht einen Interpreter, der
auf WindowsSystemen schwierig ist zu implantieren. Microsoft selbst bietet mit PWS ein eher
unbedarften WebServerTool an. Apache ist natürlich das beste, aber auch OmniHTTPd kann als
Webserver für Perl und PHP empfohlen werden.
|
|
RSS
RSS ist mittlerweile ein gängiges Protokoll für das Schreiben von Blogs. Mit seiner ScriptSprache
XML baut es auf HTML auf und ist leicht zu lernen (s. Workshop NewsFeeds).
Es dient aber auch allgemein dem Schreiben von NewsFeeds. Dies sind Nachrichten und Informationen.
Ein gängiges Format ist folgendes:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="rss.css" type="text/css"?>
<div class="rss.css">
<rss version="0.91">
<channel>
<title>in die TopTen von Google</title>
<link>http://www.onlinesoft.de</link>
<description>Anmeldung Optimierung Promotion bei Google</description>
<language>de-de</language>
<item>
<title>Legal und garantiert hohes Ranking!</title>
<description>Anmeldung und Optimierung bei Suchmaschinen, speziell Google</description>
<date>16/11/2004</date>
</item>
</channel>
</rss>
</div>
Mittels PHP ist es auch möglich, den eigenen Feed in die eigene Seite einzubauen. Dabei wird sich
allgemein eines Moduls von MagPie bedient, dass auf dem Server installiert werden muss.
Zusätzlich bedarf es PHP, um alle Komponenten zu integrieren (s. Workshop NewsFeeds).
|
|
PHP
PHP ist eine der besten ScriptSprachen des Internets. Sie ist plattformunabhängig und überall
einsetzbar. Obwohl der HTML-Bereich ganz leicht einzubetten ist, ist der QuellCode nun nicht
mehr zu lesen.
DatenBanken werden jetzt mit PHP und mySQL programmiert. Sämtliche Formulare, Listen und externe
Dateien können mit PHP erzeugt werden. Wobei die VariablenÜbergabe wie in Javascript kein
Problem bedeutet. Das System Linux/Apache/mySQL/PHP (LAMP) ist eine Institution.
|
|
Programmierung ist oftmals das HerzStück einer anspruchsvollen Homepage.
Dennoch sollte sie so sparsam wie möglich eingesetzt werden. Es gibt
immer noch alte Browser im Netz, die z.B. kein JavaScript verstehen.
Andererseits sind kleinere Datenbanken, Listboxen usw. oft ein
notwendiger Schritt für die Firma, ihre Informationen dazulegen.
Um dabei Variablen weiterzugeben, Berechnungen anzustellen oder Formulare
zu verwalten, ist Programmierung unerläßlich.
|
|
In neueren Browser (ab Version 4) ist es sogar möglich, kleinere
Animationen und ähnliche Tricks zu fahren, um eine WebSite interessanter
zu gestalten. Faszinierend sind hier BewegungsAbläufe und das
Erscheinen und Verschwinden lassen von Objekten in ZusammenArbeit mit
den Containern von CSS (cascading style sheets).
|
|
JavaScript verhilft außerdem auf recht einfache und schnelle Weise,
Browser und deren innewohnenden Informationen über den Surfer
abzufragen. Hier kann nicht nur die Kompatibilität der Seite
angeglichen, es können auch aufgrund von Statistiken
KundenAnalysen durchgeführt werden.
CGI-Sprachen wie Pearl, C und Java ermöglichen zudem, extern gespeicherte
Daten auszulesen und auch einzuschreiben (sei es auch nur die
fortzählende Zahl eines Counters). Sie sind zudem das geeignete
WerkZeug, um aus speziellen Applikationen (wie Excel, Access usw.) dem
Kunden seinen Eingaben entsprechende Informationen herauszugeben.
|