Home

Das Tippsforum

Du brauchst noch mehr Hilfe bei einem bestimmten Thema? Du hast einen unserer Tipps ausprobiert, aber es funktioniert immer noch nicht? Dann ist unser Tippsforum genau das richtige für dich.
Link zum Forum

Geschrieben Text im Firefox auf Rechtschreibung überschrieben

Geschrieben in Allgemein am 30 August 2007

Hattet ihr auch schon einmal das Problem, das euch andere Mitglieder im Forum nerven, weil ich angeblich zu viele Rechtschreibfehler macht oder wollt ihr an euer Internetseite weitermachen und keine Rechtschreibfehler. Dann gibt es jetzt die neue Lösung für den Firefox. Das Wörterbuch für den Firefox kann man hier downloaden und es ist in fast jeder Sprache verfügbar. Wenn du in irgendein Textfeld schreibst, prüft die Erweiterung automatisch ob das aktuelle Wort im Wörterbuch enthalten ist. Wenn das Wort falsch geschrieben ist, wird es rot unterstrichen. Dies sieht dann ungefähr so aus:

Das Wörterbuch für den Firefox

Windows 2000 / XP schneller herunterfahren

Geschrieben in Allgemein am 19 August 2007

Sie haben auch das Problem. Sie wollen jetzt schnell den PC beenden, aber er lässt sich nicht runterfahren. Dann ist das hier genau das richtige für dich. Hier ist eine 4 Schritte Anleitung wie du deinen PC dazu bringst schneller herunterzufahren.

  1. Öffnen Sie die Windows- Registrierung, indem sie über Start/Ausführen in der Eingabe “regedit” ohne “” eingeben. Klicken sie dann in der Windows- Registrierung auf Bearbeiten/Suchen (oder klicken sie Strg+F) und geben sie WaitToKillServiceTimeout ein.
  2. Machen Sie auf dem gefundenen Wert einen Doppelklick und geben sie dort 1500 ein. Dies bewirkt das Windows Anwendungen und Diensten 1,5 Sekunden Zeit gibt sich zu beenden, bevor sie gewaltsam abgeschaltet werden. Werte unter 1500 sind nicht zu empfehlen, da sich meistens das System gefährden.
  3. Suchen sie nun nach der Datei AutoEndTasks in der Windows- Registrierung und geben Sie den gefundenen Wert eine 1!
  4. Schalten Sie ihren PC aus und erleben sie selbst wie schnell es gehen kann.

[PHP/MySQL] Einfacher Counter mit Reloadsperre

Geschrieben in PHP Codeschnippsel am 17 August 2007

Ein Counter wird fast auf jeder Seite verwendet. Damit Besucher aber nicht mehrfach gezählt werden, kann eine Reloadsperre eingebaut werden. So ist die Besucheranzeige wesentlich authentischer.
Um dieses Tutorial zu verstehen, solltest du einige Grundkenntnisse in PHP und MySQL haben.
Zunächst äberlegen wir uns, wie der Zähler funktionieren soll. Wir haben insgesamt zwei MySQL Tabellen.
In der einen wird die Zahl der Besucher, in der anderen die IPs mit der jeweiligen Besuchszeit gespeichert. Die IP eignet sich gut für die Reloadsperre, da sie sich erst nach einiger Zeit wieder ändert.
Als neue Erweiterung der Reloadsperre wurde jetzt auch noch eine Sperre über Cookies eingebaut. So ist die Sperre noch zuverlässiger.
Wenn jetzt ein Besucher unsere Seite betritt, wird geprüft, ob er schonmal innerhalb der Reloadzeit diese Seite betreten hat. Dazu werden die IPs mit der dazugehörigen Besuchszeit abgerufen und geprüft, ob der Cookie für die Reloadsperre vorhanden ist.
Stimmt eine der IPs mit der des Besuchers überein, wird der Besucher nicht gezählt.
Wenn das jedoch nicht der Fall ist, wird zuerst die Anzahl der Besucher um den Wert 1 erhöht und dann in der MySQL Tabelle abgespeichert. Danach wird noch die IP mit der aktuellen Zeit in der anderen Tabelle abgespeichert und ein Cookie erstellt, damit der Besucher bei einem erneuten Besuch nicht mehr mitgezählt wird.
Nach der Theorie gehen wir jetzt in den praktischen Teil über. Als erstes werden die zwei benötigten Datenbanken erstellt. Dazu wird folgender Code über phpMyAdmin in der Datenbank ausgeführt.

CREATE TABLE `Counter` (
`Counter` INT(`9`)
);
CREATE TABLE `IP` (
`Zeit` INT(30) NOT NULL,
`IP` VARCHAR(40) NOT NULL
);
INSERT INTO Counter (Counter) VALUES ('1');

Jetzt haben wir alle benötigten MySQL Tabellen fertig und können zu der “.php”-Datei kommen. Damit wir mit der MySQL Datenbank arbeiten können, muss erst die Verbindung zu ihr hergestellt werden.
Deshalb kommt an den Anfang dieser Code:

$DatabasePointer = mysql_connect('localhost', 'Benutzername', 'Passwort');
mysql_select_db('Datenbank', $DatabasePointer);

Hier müssen die Zugangsdaten deiner MySQL Datenbank angegeben werden. Danach geht es weiter mit der Festlegung der Variablen.

$Zeit = time();
$IP = $_SERVER['REMOTE_ADDR'];
$GesperrteIPs = mysql_query(”SELECT IP FROM IP WHERE IP=’”.$IP.”‘”, $DatabasePointer);

Mithilfe von time() wird die aktuelle Zeit abgerufen und der Variable [/scode]$Zeit[/scode] zugewiesen (die Zeit ist in Sekunden, was später noch wichtig wird). Danach wird durch $REMOTE_ADDR die aktuelle IP des Besuchers abgerufen und der Variable $IP zugewiesen.
Anschließend werden alle Werte aus der Tabelle IP ausgelesen, wo die derzeitige IP des Benutzers gleich einer IP aus Datenbank ist.
Jetzt haben wir erstmal alle Werte, die wir für die weitere “Verarbeitung” benötigen.
Deshalb wird jetzt mit dem eigentlichen Counter begonnen.

if ((mysql_num_rows($GesperrteIPs) > 1) && !isset($_COOKIE['CounterReloadsperre']))
{
mysql_query(”INSERT INTO IP (Zeit, IP) VALUES (’”.$Zeit.”‘, ‘”.$IP.”‘)”, $DatabasePointer);
mysql_query(”UPDATE Counter SET Counter=Counter+1″);
setcookie(’CounterReloadsperre’, $IP, time()+$Reloadzeit);
}
$CounterstandAbrufen = mysql_query(”SELECT Counter FROM Counter”, $DatabasePointer);
$Stand = mysql_fetch_object($CounterstandAbrufen);
$Counter = $Stand->Counter;

Mithilfe der if-Abfrage wird überprüft, ob die IP des aktuellen Besuchers nicht in der Datenbank vorhanden ist und noch kein Cookie erstellt wurde. Den Cookie kann man mit einem einfachen !isset() auf seine Existenz überprüfen; bei der IP wird überprüft, ob der MySQL Query erfolglos war, denn dann wurde keine Zeile mit der IP des aktuellen Besuchers gefunden.
Sind beide Bedingungen erfüllt, wird der Besucher gezählt. Dazu wird zunächst die aktuelle IP und die Besuchszeit in die IP-Datenbank eingetragen und danach der Counterstand um den Wert 1 erhöht.
Danach wird noch ein Cookie erstellt, der eine “Lebensdauer” von der Reloadzeit bekommt. Deshalb muss der Counterquelltext später ganz am Anfang des jeweiligen Dokuments eingefügt werden.
Schließlich wird dann der aktuelle Stand unseres Counters abgerufen. Da er der Variable $Counter zugewiesen wurde, kann er an einer beliebigen Stelle des Dokuments wieder ausgegeben werden.
Jetzt fehlt nur noch die Reloadsperre für den Counter. Dazu fügen wir noch diese Werte ein.

$Reloadzeit = 86400;
$Loeschen = $Zeit-$Reloadzeit;

Diese beiden Zeilen müssen unter der Zeile in der $Zeit zugewiesen wird eingefügt werden. Als $Reloadzeit kannst du jetzt eine beliebige Zeit in Sekunden angeben (im Beispiel wäre das ein Tag). Danach wird eine Variable $Loeschen definiert. Dazu wird die Reloadzeit von der aktuellen Zeit (die ja auch in Sekunden ist) abgezogen.
Danach arbeiten wir mit diesem Wert mithilfe des folgenden Codes.

mysql_query("DELETE FROM IP WHERE Zeit<'".$Loeschen."'", $DatabasePointer);
Füge diesen Code unter der Zeile ein, wo die Variable $IP zugewiesen wird.
Dieser Query bewirkt, dass alle IPs aus der Datenbank gelöscht werden, deren Reloadsperre abgelaufen ist (dort ist die Reloadzeit kleiner als die aktuelle Löschzeit).
Es ist wichtig, dass dieser Code vor dem if steht, da abgelaufene IP Sperren gelöscht werden sollen, bevor mit dem Zählen von neuen Besuchern begonnen wird.
Hier mit haben wir schon unseren fertigen Counter. Den ganzen Code am Stück kannst du dir hier noch einmal ansehen:

<?php
# Verbindung zur MySQL Datenbank herstellen
$DatabasePointer = mysql_connect("localhost", "Benutzername", "Passwort");
mysql_select_db("Datenbank", $DatabasePointer);
# Variablen definieren
$Zeit = time();
$Reloadzeit = 86400;
$Loeschen = $Zeit-$Reloadzeit;
$IP = $_SERVER['REMOTE_ADDR'];
# Alte IPs löschen
mysql_query(”DELETE FROM IP WHERE Zeit<’”.$Loeschen.”‘”, $DatabasePointer);
# Gesperrte IP abrufen
$GesperrteIPs = mysql_query(”SELECT IP FROM IP where IP=’”.$IP.”‘”, $DatabasePointer);
# Counterstand erhöhen
if ((mysql_num_rows($GesperrteIPs) < 1) && !isset($_COOKIE['CounterReloadsperre']))
{
mysql_query(”INSERT INTO IP (Zeit, IP) VALUES (’”.$Zeit.”‘, ‘”.$IP.”‘)” $DatabasePointer);
mysql_query(”UPDATE Counter SET Counter=Counter+1″);
setcookie(”CounterReloadsperre”, $IP, time()+$Reloadzeit);
}
# Counterstand abrufen
$CounterstandAbrufen = mysql_query(”SELECT Counter FROM Counter”, $DatabasePointer);
$Stand = mysql_fetch_object($CounterstandAbrufen);
$Counter = $Stand->Counter;
?>
<html>
<head>
<title>Counter mit Reloadsperre</title>
</head>
<body>
<?php
echo $Counter;
?>
</body>
</html>

Einfacher Counter mit PHP und MySQL

Geschrieben in PHP Codeschnippsel am 16 August 2007

In diesem Tutorial möchte ich euch zeigen wie man einen einfachen Counter mit PHP und MySQL erstellt. Um euren eigenen Counter zu erstellen braucht ihr einen Server der PHP 4 und MySQL 4 unterstützt. Aber nun fangen wir an. Als erstes müsst ihr folgende MySQL-Tabelle in eure Datenbank eintragen. Dazu könnt ihr zum Beispiel PhpMyAdmin benutzen. HIer ist der Tabellen Code:
CREATE TABLE IF NOT EXISTS `counter` (
`id` int(2) NOT NULL auto_increment,
`hits` int(7) NOT NULL default '0',
PRIMARY KEY (`id`)
);
INSERT INTO `counter` (`id`, `hits`) VALUES ('', 1);

Kurze Erklärung: Als erstes erstellt ihr die MySQL-Tabelle “counter”. Als nächstes gebt ihr mit dem INSERT die Startzahl des Counters ein. In diesem Fall steht der Counter am Anfang auf eins. So nun kommt wir aber zum PHP-Teil:

Als erstes müsst ihr folgendes an dem Anfang eures PHP-Scriptes schreiben.

define('MYSQL_HOST', 'localhost'); //HIer müsst ihr euren Server eingeben(meistens localhost)
define('MYSQL_USER', 'testuser'); //HIer müsst ihr den Datenbankuser eingeben
define('MYSQL_PASS', 'passwort'); // Hier müsst ihr euer Passwort eingeben
define('MYSQL_DATABASE', 'datenbank'); //Hier müsst ihr den Namen euer Datenbank eingeben
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
mysql_select_db(MYSQL_DATABASE);
$sql = "UPDATE counter SET hits = hits +1";
mysql_query($sql) or die(mysql_error());

In den ersten 6 Zeilen wird die Verbindung zur Datenbank hergestellt. Da müsst ihr nur noch eure Datenbankeinstellungen hereinschreiben. In Zeile 7 wird die Anzahl im Counter einfach um 1 erhöht. In Zeile 8 wird dann nur noch der Code aus Zeile 7 in die Datenbank geschrieben. Jetzt braucht ihr nur noch folgendes dahinzuschreiben, wo der Counter angezeigt werden soll:

$sql = "SELECT id, hits FROM counter WHERE id=1 LIMIT 1";
$result = mysql_query($sql) or die (mysql_error());
$zeile=mysql_fetch_assoc($result);
echo $zeile['hits'];

In Zeile 1 wird der Code für die Abfrage von der Datenbank geschrieben. In Zeile 2 wird die Abfrage zur Datenbank geschickt. In Zeile 3 wird das Ergebnis von der Datenbank abgefangen. In Zeile 4 wird dann nur noch das Ergebnis ausgegeben.

Jetzt noch viel Spaß beim erstellen eurer eigenen Counter.

Erste Schritte mit AJAX

Geschrieben in Allgemein am 14 August 2007

Um einen HTTP-Request mittels JavaScript an einen Server absetzen zu können, benötigt man eine Instanz einer Klasse, welche diese Funktionalität bietet. Solch eine Klasse, genannt XMLHTTP, wurde ursprünglich im Internet Explorer als ein ActiveX-Objekt eingeführt. Später implementierten Mozilla, Safari und andere Browser eine Klasse namens XMLHttpRequest, welche die Methoden und Eigenschaften des originalen ActiveX-Objektes von Microsoft unterstützt.

Einige Versionen einiger Mozilla-basierter Browser werden nicht korrekt arbeiten, wenn die Antwort des Servers keinen XML mime-type im Header hat. Um dem entgegenzuwirken, kann man einen zusätzlichen Methodenaufruf absetzen, um den vom Server gesendeten Header zu überschreiben - für den Fall, dass dessen mime-type nicht text/xml lautet. Im nächsten Schritt entscheidet man, was zu tun ist, nachdem man vom Server eine Antwort zu dem abgesetzten Request bekommen hat. An dieser Stelle muss man dem HTTP Request-Objekt lediglich mitteilen, welche JavaScript-Funktion die Antwort abarbeiten soll. Dies erreicht man, indem man die onreadystatechange-Eigenschaft des Objektes genauso nennt wie die JavaScript-Funktion, welche man benutzen möchte. Zur Erinnerung: beim Abschicken des Requests wurde der Name einer JavaScript-Funktion mitgegeben, welche die Antwort abarbeiten soll.

http_request.onreadystatechange = nameDerFunktion;

Schauen wir mal, was diese Funktion tun sollte. Zuerst muss die Funktion den Status des Requests abfragen. Hat dieser den Wert 4, bedeutet das, dass die Antwort des Servers vollständig empfangen wurde und dass sie nun bearbeitet werden kann. Methoden des XMLHttpRequest Objekts abort() Bricht die aktuelle Anfrage ab

getAllResponseHeaders()
Gibt den Antwort Header als String zurück

getResponseHeader(”xyz”)
Gibt Den Header xyz zurück

open(”method”, “URL“[, asyncFlag[, “userName”[, “password”]]])
Stellt die Verbindung zur Zielseite her

send(daten)
Sendet Daten an den Server

setRequestHeader(”key”, “value”)
Setzen von Header

setMimeType(”mimetype”)
Überschreibt den MimeType der angeforderten Daten

Eigenschaften des XMLHttpRequest Objekts

onreadystatechange
Callbackfunktion, die bei Events aufgerufen werden soll

readyState
Aktueller Status der Anfrage:

  • 0 : Noch keine Verbindung hergestellt (open nicht aufgerufen?)

  • 1 : Noch keine Anfrage gestellt (send nicht aufgerufen?)

  • 2 : Anfrage gestellt, aber noch nicht abgeschlossen. Header und Status verfügbar

  • 3 : Response Daten werden übertragen

  • 4 : Anfrage abgeschlossen, alle Daten übertragen

responseText
Ergebnis der Anfrage als Text

responseXML
Ergebnis als XML (Falls gültiges XML-Dokument. Sonst null)

status
HTTP-Status der Anfrage (200=OK)

statusText HTTP-Status im Textformat

Jetzt könnten wir Beispielsweise ein Script schreiben, welches eine Datei ausließt und diese dann ausgiebt:
ajax1.html

<script type="text/javascript" language="javascript">    var http_request = false;function macheRequest(url) {http_request = false;if (window.XMLHttpRequest) { // Mozilla, Safari,...http_request = new XMLHttpRequest();if (http_request.overrideMimeType) {

http_request.overrideMimeType('text/xml');

// zu dieser Zeile siehe weiter unten

}

} else if (window.ActiveXObject) { // IE

try {

http_request = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

http_request = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {}

}

}

if (!http_request) {

alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');

return false;

}

http_request.onreadystatechange = alertInhalt;

http_request.open('GET', url, true);

http_request.send(null);

}

function alertInhalt() {

if (http_request.readyState == 4) {

var answer = http_request.responseText;

if(document.getElementById("inhalt").innerHTML != answer){

document.getElementById("inhalt").innerHTML = answer;

}

else{

document.getElementById("inhalt").innerHTML = "";

}

}

}

</script>

<span

style="cursor: pointer; text-decoration: underline"

onclick="macheRequest('test.html')">Einen Request absetzen

</span>

<div id="inhalt"></div>


Dieses Script ließt den Inhalt der test.html aus. Diese hat den Inhalt:

 Ich bin die Ausgabe

Natürlich kann man auch XML-Dateien auslesen, das geht so:

ajax2.html:

<script type="text/javascript" language="javascript">    var http_request = false;function macheRequest(url) {http_request = false;if (window.XMLHttpRequest) { // Mozilla, Safari,...

http_request = new XMLHttpRequest();

if (http_request.overrideMimeType) {

http_request.overrideMimeType('text/xml');

// zu dieser Zeile siehe weiter unten

}

} else if (window.ActiveXObject) { // IE

try {

http_request = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

http_request = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {}

}

}

if (!http_request) {

alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');

return false;

}

http_request.onreadystatechange = alertInhalt;

http_request.open('GET', url, true);

http_request.send(null);

}

function alertInhalt() {

if (http_request.readyState == 4) {

var xmldoc = http_request.responseXML;

var root_node = xmldoc.getElementsByTagName('nachricht').item(0);

var answer = root_node.firstChild.data;

//var answer = http_request.responseText;

if(document.getElementById("inhalt").innerHTML != answer){

document.getElementById("inhalt").innerHTML = answer;

}

else{

document.getElementById("inhalt").innerHTML = "";

}

}

}

</script>

<span

style="cursor: pointer; text-decoration: underline"

onclick="macheRequest('test.xml')">Einen Request absetzen

</span>

<div id="inhalt"></div>

In der XML-Datei “test.xml” steht dann:

<?xml version="1.0"?><nachricht>Wie gehst?!</nachricht>

Mit unserem bissherigem Können, könnten wir auch ein Script schreiben, welches mit AJAX und PHP arbeitet. D.h. wir rufen mit Hilfe einer PHP-Datei die aktuelle Uhrzeit ab.

ajax3.html

<script type="text/javascript" language="javascript">    var http_request = false;function macheRequest(url) {

http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...

http_request = new XMLHttpRequest();

if (http_request.overrideMimeType) {

http_request.overrideMimeType('text/xml');

// zu dieser Zeile siehe weiter unten

}

} else if (window.ActiveXObject) { // IE

try {

http_request = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

http_request = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {}

}

}

if (!http_request) {

alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');

return false;

}

http_request.onreadystatechange = alertInhalt;

http_request.open('GET', url, true);

http_request.send(null);

}

function alertInhalt() {

if (http_request.readyState == 4) {

var answer = http_request.responseText;

//var answer = http_request.responseText;

if(document.getElementById("inhalt").innerHTML != answer){

document.getElementById("inhalt").innerHTML = answer;

}

else{

document.getElementById("inhalt").innerHTML = "";

}

}

}

setInterval("macheRequest('uhrzeit.php')",1000);

</script>

Dieses Script gibt die aktuelle Serverzeit aus:<br>

<div id="inhalt">Lade..</div>

In der uhrzeit.php müsste dann folgendes stehen:

uhrzeit.php

<?php

echo date("H:i:s", time());

?>

Abschluss Im ersten Kapitel haben wir angesprochen, dass das Navigieren mit den Vor- und Zurückbutton sehr schwierig ist, doch so schwierig ist es nun auch wieder nicht…
Hier ein Beispiel, wo das Navigieren mit den Buttons klappt: http://ajax.solin.ch/
Wie man sieht Arbeitet dieser “Ajaxaner” mit Ankern (<a name=”so_und_so”>) dadurch ist das Navigieren möglich… (näheres siehe Source-Code auf der Seite).

Dieses Tutorial wurde von Netbuster geschrieben und von Think bearbeitet. ES steht unter Creativ Commons 2.0. Copyright by ajax-community.de

Nächste Seite »