Ein URL-Shortener
PHP JavaScript
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
admin
assets
config
src
templates
.gitattributes
.gitignore
LICENSE
MyTest.xml
README.md
Untitled Diagram.xml
index.php

README.md

URL Shortener

Ein URL Shortener mit vielen Features:

  • Mehrere Instanzen
  • Zufällige kurze URLs
  • Automatische Linkbereinigung mit regulären Ausdrücken
  • Automatische Linklöschung
  • Links schützen
  • Benutzerverwaltung
    • Integriertes Rollenmodell (Administrator und Benutzer)
  • Individuelle Anpassungen am Design

Einrichtung

  1. Das Repo in einen Ordner auf dem Webserver clonen.
  2. URL/admin/setup.php aufrufen.
  3. Zugangsdaten für die Datenbank eingeben. Der Benutzer muss Tabellen erzeugen können.
  4. Den Domain Host und Pfad eingeben. Beispiel:
    • http://go.dtnet.de/: Host go.dtnet.de, Pfad /
    • http://www.softwaredemo.de/url-shortener/: Host www.softwaredemo.de, Pfad /url-shortener/
  5. Die Zugangsdaten für den Administrator eingeben. Passwörter werden selbstverständlich gehasht in der Datenbank gespeichert. Für Konfigurationsmöglichkeiten siehe die PHP-Funktion crypt.
  6. Das Formular absenden.

Um mehrere Instanzen zu betreiben, müssen alle URLs auf den selben Ordner mit dem PHP-Code zugreifen. Die verschiedenen Instanzen werden automatisch unterscheiden. Neue Instanzen müssen manuell in der Tabelle application angelegt werden.

Hinweis: Es kann nur eine Instanz pro Domain Host betrieben werden.

Um Benutzern das Anzeigen aller Links ohne Login zu ermöglichen, muss der Wert der Konstante LIST_URLS_NO_USER auf true gesetzt werden.

Automatische Linkbereinigung

Nach der Einrichtung können an die Konfiguration reguläre Ausdrücke angehängt werden, mit welchen automatisch die lange URL bereinigt wird. Die regulären Ausdrücke müssen kompatibel zu PHP sein (PCRE). Gefundene Teilstrings werden entfernt.

Beispiele: (an die Konfiguration config/config.php anhängen)

// Alles nach "#" entfernen => Hashs entfernen
$this->addStripRegex('~#.+$~');

// Alles nach "%3FTocPath%3D" entfernen
$this->addStripRegex('~%3FTocPath%3D.+$~');

Individuelle Anpassungen - Zusätzliches JavaScript und CSS

Zusätzliches JavaScript und CSS kann in die Dateien assets/custom/additional.js und assets/custom/additional.css geschrieben werden. Das zusätzliche JavaScript und CSS wird nach dem Standard-JavaScript bzw. Standard-CSS geladen und kann somit alles überschreiben.

Zusätzliches CSS für die Not Found-Seite wird aus der Datei assets/custom/notFound.css geladen.

Diese Dateien werden bei Updates nicht überschrieben, müssen aber für volle Kompabilität ggf. angepasst werden.

Individuelle Anpassungen

Sollten weitgehende Änderungen erwüscht sein, so können beliebige Tempaltes verändert werden. Dazu wird eine Kopie der entsprechenden Datei im Ordner templates/custom erstellt. Die Orginaltemplates liegen im Ordner templates. Die Dateien im Ordner templates/custom werden bei Updates nicht überschrieben, müssen aber ggf. angepasst und aktualisiert werden.

Tipp: Für grundlegende Änderungen kann das CSS komplett ausgetauscht werden:

  1. Eine Kopie des Templates templates/header.php erstellen.
  2. Den Pfad der geladenen CSS-Dateien ändern. Dazu wird das soeben erstellte Template templates/custom/header.php angepasst. Beispiel: Ändern von <link href="<?php echo SERVICE_BASEURL; ?>assets/css/bootstrap.min.css" rel="stylesheet"> in <link href="<?php echo SERVICE_BASEURL; ?>assets/custom/bootstrap.min.css" rel="stylesheet">.
  3. Eine neue Variante von Bootstrap 3.3.0 mit einer der folgenden Möglichkeiten erstellen:

Lizenz

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.