Kategorien

Suchen


Aktuelle Artikel

Archiv

Weiteres

PHP: GUID erstellen (flexible Länge und Struktur)

Katrin | 28.07.2010

Um in PHP eine GUID (Globally Unique Identifier) zu erzeugen (wie Sie sie ggf. aus C# und anderen Programmiersprachen kennen), hilft Ihnen die folgende Funktion weiter:

function getGUID($len = 36) {
  $tmp = "";
  $pos = array(8,13,18,23);
  while (strlen($tmp) < $len) $tmp .= md5(uniqid());
  foreach ($pos as $p)
    if ($p <= $len) $tmp[$p] = "-";
  return substr($tmp,0,$len);
}

Ausgabe (Beispiel):

echo getGUID();
3470b4e8-d6fe-1f76-6c09-0d31828e8a1d
 
echo getGUID(20);
8b31eeb6-b451-a61d-f

Die Lage der Trennzeichen (“-”) können Sie durch das Array “$pos” bestimmen, die Länge der GUID durch den Parameter “$len”. Wenn Sie keinen Parameter übergeben, ist die GUID automatisch 36 Zeichen lang.

Topics: Anleitungen, php | Kommentar schreiben »

Linux: Dateien per SCP ohne Passworteingabe kopieren (SSH)

Günther | 24.07.2010

Wenn Sie automatisch per SCP Dateien kopieren möchten und dabei nicht das Passwort eingeben können oder möchten, dann hilft Ihnen diese Anleitung. Für dieses Beispiel sollen Dateien von Server 1 auf Server 2 kopiert werden:

Für dieses Beispiel gelten folgende Bedingungen:

Vorbereitungen auf Server 1 (Quelle):

Vorbereitungen auf Server 2 (Ziel):

Topics: Anleitungen, Linux, Sicherheit | Kommentar schreiben »

SVN: Nach einem Commit automatisch die Webseite aktualisieren (Post-Commit Hook)

Jockel | 23.07.2010

Bei SVN Projekten werden die Änderungen der Entwickler & Programmierer regelmäßig von deren lokaler Kopie in das entsprechende SVN Repository committed (= gesichert / gespeichert).

Bei diesem “Committen” können Sie Ihren SVN Server anweisen, sofort die Änderungen auf einen WebServer zu kopieren und dadurch stets die aktuellste Version zum Testen vorzuhalten.

Zuerst müssen Sie die Grundlage für spätere Updates schaffen … einen grundlegenden Export des aktuelles Repositories:

svn export http://yourDomain.com/svn/YourProject /path/to/webserver/

Wenn das WebServer verzeichnis (hier: “/path/to/webserver/”) bereits existiert und jetzt für den Export überschrieben werden soll, dann müssen die die Option “–force” an den Befehl anhängen:

svn export http://yourDomain.com/svn/YourProject /path/to/webserver/ --force

Nun richten Sie die Update-Automatik ein:

Hinweis:
Dieses Vorgehen ist (meist) nur für lokale Produktions- und Test-Webserver zu empfehlen. Bei Live-Systemen können auch kleine Fehler in der Entwicklung zu fatalen Problemen führen, da diese sofort online für jeden Besucher sichtbar wären.

Topics: Anleitungen, Apache WebServer, Linux, eclipse | Kommentar schreiben »

Oracle: Dynamischen SQL Befehl in einer LOOP

Günther | 22.07.2010

In Oracle können Sie auch dynamische SQL Statements als Datenquelle für SQL Abfragen nutzen. Aber nicht nur diese Technik wird im folgenden Beispiel erklärt.

Zusätzlich können Sie die Daten des dynamischen SQL Statements auch in einer Schleife (Loop) abarbeiten lassen und dadurch auch mehrere Befehl für jeden Datensatz (Record) verarbeiten. Sie haben dadurch die Möglichkeit, komplexe Verarbeitungen (Befehle) in mehrere einzelne Befehle auszuteilen (zu splitten):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
CREATE OR REPLACE PROCEDURE TEST (in_Filter IN number)
IS
  Ssql varchar2(2000);
  TYPE c1 IS REF CURSOR;
  the_cursor c1;
BEGIN
  -- SQL Basis (Basisstatement)
  Ssql := 'select distinct kunde.id as kunde_id 
      FROM customer kunde
      WHERE kunde.status = 1';
 
  -- Filter and das Statement anhängen (wenn ein Filter vorhanden)
  IF (in_Filter IS NOT NULL) then
    Ssql := Ssql || ' AND kunde.code = ' || in_Filter;
  end IF;
 
  -- Daten auslesen
  OPEN the_cursor FOR Ssql;
 
  -- Für jeden gefundenen Kunden Aktionen verarbeiten
  LOOP
    fetch the_cursor INTO tmp_kunde_id;
    EXIT WHEN the_cursor%NOTFOUND;
 
    -- Historie löschen
    DELETE FROM customer_state
    WHERE customer = tmp_kunde_id
    AND week < (SELECT TO_NUMBER(TO_CHAR(SYSDATE,'IW')) AS week FROM dual);
 
    -- Stati des Kunden kopieren
    INSERT INTO customer_invoices (customer,STATUS,week)
      SELECT cust_id, state_id, week
      FROM state_tbl
      WHERE STATUS > 0
  end loop;
  close the_cursor;
END;

Topics: Anleitungen, Oracle | Kommentar schreiben »

WordPress: Fehler beim Laden des Stylesheets: Ein unbekannter Fehler ist aufgetreten (805303f4)

Günther | 22.07.2010

Wenn Sie bei Ihrem WordPress auch das Plugin “Google XML Sitemaps” benutzen, stehen Sie nach dem Update auf Version “3.2.4″ des Plugins vor einem kleinen Problem. Leider bekommen Sie es bewußt nicht immer mit sondern merken es erst nach einer Überprüfung z.Bsp. in den Google Webmaster Tools:

Ihre (vom Plugin generierte) XML Datei ist nicht erreichbar:

Fehler beim Laden des Stylesheets: Ein unbekannter Fehler ist aufgetreten (805303f4)

Teilweise tritt dieses Problem nur bei einer Domain auf – die Hauptdomain (oder erste Domain) läuft relativ ungestört weiter. Für Google und andere Suchmaschinen (Crawler) ist das kleine Problem jedoch massiv, denn sie können Ihre XML Sitemap nicht mehr (richtig) verarbeiten. Dadurch kann es zu plötzlich fehlenden Links und Einträgen in den Suchmaschinen bzgl. Ihrer Webseite kommen. Hintergrund ist ein Problem mit der Verlinkung auf die hinterlegte XSL Datei.

Lösung:

Benennen Sie die Daten “sitemap.xsl” im Verzeichnis “/wp-content/plugins/google-sitemap-generator/” einfach um. Ohne diese Daten erzeugt das Plugin die XML Sitemap wieder fehlerfrei und Google kann wieder alles lesen.

Beispielbefehl für Linux:

mv sitemap.xsl sitemap.xsl.old

In Ihrem FTP Programm können Sie die Datei einfach umbenennen. Häufig ist diese Funktion auf die Taste “F2″ gelegt.

Wichtig für eine schnelle Korrektur:

Erzeugen Sie nach der Umbenennung der XSL Datei Ihre XML Sitemap neu. Gehen Sie dafür in Ihrem WordPress Backend (Administrationsbereich “/wp-admin/”) auf “Einstellungen” > “XML-Sitemap”. Dort klicken Sie auf “… von Hand neu erstellen”. Danach ist die korrigierte XML Daten für die Suchmaschinen verfügbar.

Topics: Anleitungen, WordPress | Kommentar schreiben »

mySQL: root Passwort ändern

Jockel | 21.07.2010

Mit folgenden Befehlen können Sie das root Passwort Ihres mySQL Server ändern:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h YourDomain.com password 'new-password'

Beachten Sie dazu auch unsere anderen Artikel:

Topics: Allgemeines, Anleitungen, MySQL | Kommentar schreiben »

PHP: Apache2 Version in Variable auslesen

Jockel | 21.07.2010

Damit Sie auf einem Unix (Linux) System einfach die aktuelle Version des Apache WebServers herausfinden können, zeigen wir Ihnen ein PHP-Beispiel.

In dem PHP Script wird die Apache-Funktion “apache2ctl” genutzt, die die aktuelle Apache-Version auszulesen. Dieser Befehl wird mithilfe des PHP Befehles “passthru()” direkt an das Linuxsystem weitergegeben.

Hinweis:
Häufig ist auf “öffentlichen” Webservern aus Sicherheitsgründen die Nutzung einiger Befehle gesperrt. Dazu zählt häufig auch der Befehl “passthru()”. Wenn das Script bei Ihnen lokal auf dem Computer also einwadnfrei läuft und auf Ihrem Internetserver keine Daten zurück gibt, liegt diese Befehlssperre vor. Eine Möglichkeit, diese Sperre aufzuheben hat nur Ihr Web-Administrator (oder Provider).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// PHP Version auslesen
ob_start();
passthru("apache2ctl -v");
$ver = ob_get_contents();
if empty($ver) 
  echo "passthru() disabled ?";
ob_end_clean();
 
$a = explode("\n", $ver);
preg_match('/(server version: ){1}(.*)/i', $a[0], $v);
$data[0] = $v[2];
 
preg_match('/(server built:   ){1}(.*)/i', $a[1], $v);
$data[1] = date("d.m.Y H:i:s", strtotime($v[2]));
 
print_r($data);
?>

Topics: Allgemeines, Anleitungen, Apache WebServer, Sicherheit, php | Kommentar schreiben »

Apache: Verzeichnisse mit Passwort schützen (htpasswd)

Günther | 20.07.2010

Mit dem Apache Webserver wird ein Hilfsprogramm ausgeliefert: htpasswd

Es ermöglicht Ihnen die einfache Erstellung von Passwortdateien. Am einfachsten ist es über die Kommandozeile zu bedienen. Mit dem Aufruf “htpasswd -h” erhalten Sie eine kurze Hilfe und Syntax.

Beispiel:

htpasswd -c .htusers peter

Durch diesen Befehl wird eine neue Passwortdatei angelegt. Dabei müssen Sie für den neuen Benutzer “peter” ein Passwort angeben und (durch eine wiederholte Eingabe) bestätigen.

Kopieren Sie die neu erstellte Datei in das vorgesehene, zu schützende Verzeichnis auf Ihrem Internetserver (WebServer).

Topics: Anleitungen, Apache WebServer, Datenschutz, Sicherheit | Kommentar schreiben »

PHP: Zugriff von Browsern außerhalb eines IP-Subnetzes unterbinden

Jockel | 19.07.2010

Mithilfe des folgenden PHP Scripts können Sie Besucher außerhalb des festgelegten IP Bereiches blockieren:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (strncmp("192.168.0", $_SERVER["REMOTE_ADDR"], 9) != 0)
{
  // Block access
  header("HTTP/1.0 403 Forbidden");
  // header('Location: http://www.google.com');
  exit;
} else {
  // Allow access
  echo "Zugriff erlaubt ...";
}
?>

In diesem Beispiel werden alle Besucher, deren IP Adresse nicht mit “192.168.0″ anfängt, blockiert.

Dieser IP Bereich wird nur LAN intern verwendet. Für die Filterung von Besuchern aus dem WAN (Internet) filtern Sie bitte auf die öffentliche IP Adresse Ihrer Webseitenbesucher. Passen Sie dabei auch die Länge der zu vergleichenden Zeichen an (im o.a. Beispiel werden die ersten 9 Zeichen verglichen). Diese können Sie sich mithilfe des folgenden PHP Scripts anzeigen:

1
2
3
<?php
echo $_SERVER["REMOTE_ADDR"];
?>

Topics: Allgemeines, Anleitungen, Sicherheit, php | Kommentar schreiben »

mySQL: Eindeutige ID (UID) erzeugen

Jockel | 18.07.2010

Damit Sie in einem SQL Statement eine eindeutige ID (unique ID = UID) nutzen können, steht Ihnen der Befehl “uuid()” zur Verfügung:

SELECT UUID();

Ergebnis:

f15be048-dfb8-102d-b15d-88b2e2560827

Hinweis:
In Verbindung mit einer aktiven Replikation kann diese Funktion derzeit noch nicht genutzt werden.

Topics: Allgemeines, Anleitungen, MySQL | Kommentar schreiben »


« Vorheriger Beitrag