Du bist hier: Startseite > Archiv > TobbiVM > Installation (alt)

Installation (alt)

Zuerst hier die aktuelle Version herunterladen, entpacken und auf den Webserver laden. Dabei gehe ich vom folgender Verzeichnisstruktur aus:

Dies ist das Startverzeichnis deines Webspace, kann auch html o. ä. heißen
rootverzeichnis/

Hier kommen alle TobbiVM-Shop-Dateien hinein
rootverzeichnis/tobbivmshop/

Das Verzeichnis:
rootverzeichnis/tobbivmshop/admin
kann beliebig umbenannt werden. Aus „admin” kannst du  z. B. in „fkjndutw″ umbenennen und schützt so dein Backend zusätzlich.

Zuerst werden die Einstellungen des Frontends vorgenommen (1. bis 4.), dann folgen die Einstellungen des Backends (5. bis 7.) und das Erstellen der Datenbankeinträge (8.).

TobbiVM-Shop wird bisher unter PHP 5.5 entwickelt und läuft nur ab dieser Version!

Die Installation erfolgt händisch, d. h. ohne Installationsscript, und ist auch für den Laien, unter Beachtung der folgenden Installationsanleitung, problemlos möglich.

Sollten dennoch Probleme auftauchen, dann einfach eine Anfrage hier im Forum stellen.


1. .htaccess

Die Einstellungen in der .htaccess-Datei (als Vorlage dient die Datei demo.htaccess) sind für den von dir benutzten Webserver wichtig und Sicherheitsrelevant. Eine falsche Einstellung (manchmal nur ein einziges Zeichen) können deinen Webauftritt verhindern oder unsicher machen.

Hier, wie in allen Konfigurationsdateien, nur die entsprechend gekennzeichneten Stellen an deine Bedingungen anpassen. Der Übersichtlichkeit wegen wird hier die komplette Datei angezeigt.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

# TobbiVM-Shop
# Copyright (C) 2016

RewriteEngine on
Options -Indexes
Options +FollowSymlinks

# XSS-Header for apache server
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
    
# No double content while using www.domain.de and domain.de...
# and delete the index.php from url
Hier werden Seitenaufrufe wie „Mastershop.de” oder „mastershop.de” in das einheitliche Format „http://www.mastershop.de” gebracht. Dies verhindert ebenfalls den sogenannten „Double Content” und damit eine Abstrafung seitens der Suchmaschinen.
Bei einem Multidomain-Shop müssen für jede weitere Domain diese beiden Zeilen nochmals (mit entsprechendem Domainnamen) eingefügt werden.

RewriteCond %{HTTP_Host} ^astershop.de$   Hier den ersten Buchstaben weglassen!
RewriteRule ^(.*)$ http://www.mastershop.de/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php
RewriteBase /
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

# Mod Headers – Security
<IfModule mod_headers.c>
   # Avoid Clickjacking
   Header append X-Frame-Options “SAMEORIGIN”
   # prevent mime based attacks like drive-by download attacks, IE and Chrome
   Header set X-Content-Type-Options “nosniff”
</IfModule>

# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]

#RewriteRule ^(.*).html$ index.php?$1 [L]

Hier kannst du deine eigenen Fehlerseiten angeben, musst du aber nicht.
ErrorDocument 400 /template/notrepassing.php
ErrorDocument 401 /template/notrepassing.php
ErrorDocument 403 /template/notrepassing.php
ErrorDocument 404 /template/notrepassing.php
ErrorDocument 500 /template/notrepassing.php
ErrorDocument 500 /template/notrepassing.php

# Additional protection of the config files
Hier werden eventuelle Zugriffsversuche auf deine Konfigurationsdateien verhindert
RewriteCond %{REQUEST_FILENAME} config.php$
RewriteRule ^.*$ template/notrepassing.php
RewriteCond %{REQUEST_FILENAME} config_0.php$
RewriteRule ^.*$ template/notrepassing.php
RewriteCond %{REQUEST_FILENAME} config_1.php$
RewriteRule ^.*$ template/notrepassing.php
RewriteCond %{REQUEST_FILENAME} config_2.php$
RewriteRule ^.*$ template/notrepassing.php
RewriteCond %{REQUEST_FILENAME} config_3.php$
RewriteRule ^.*$ template/notrepassing.php
RewriteCond %{REQUEST_FILENAME} config_4.php$
RewriteRule ^.*$ template/notrepassing.php
RewriteCond %{REQUEST_FILENAME} config_5.php$
RewriteRule ^.*$ template/notrepassing.php

Nach der Anpasung der Einträge muss die Datei „demo.htaccess” in „.htaccess” umbenannt werden.


2. config.php

Die in der Datei  config.php (als Vorlage dient die Datei demo.config.php) werden die globalen Einstellungen vorgenommen. Diese gelten für alle Shops.

Hier, wie in allen Konfigurationsdateien, nur die entsprechend gekennzeichneten Stellen an deine Bedingungen anpassen. Der Übersichtlichkeit wegen wird hier die komplette Datei angezeigt.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

<?php

if (!defined('TOBBIVM'))
    header('location:/template/notrepassing.php');
/**
 * This file is part of TobbiVMShop.
 *
 * TobbiVMShop 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 3 of the License, or
 * (at your option) any later version.
 *
 * TobbiVMShop 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 TobbiVMShop.  If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * Configuration Frontend
 *
 * @version    $Id$
 * @package    TobbiVM-Shop
 * @copyright  Copyright (C) 2016
 * @author     Norbert Gebert
 * @license    GPL3
 * @access       public
 */
/**
 * These values ​​must be adapted to your requirements!
 * Database and domain settings for all Domains
 */
// @const string URL_0 to URL_5 for all shops. Not used
//               are empty = '', with 'http://www.' in lowercase!
const URL_0 = 'http://www.mastershop.de';
const URL_1 = 'http://www.clientshop1.de';  Wenn kein weiterer Shop angelegt werden soll dann in '' ändern.
const URL_2 = '';
const URL_3 = '';
const URL_4 = '';
const URL_5 = '';

Die Einstellungen für die Datenbank bekommst du von deinem Webspace-Anbieter!
// @const string DB_NAME Databasename
const DB_NAME = 'Databasename';
// @const string DB_HOST DB-Adress, mostly 'localhost'
const DB_HOST = 'localhost';
// @const string DB_USER DB-Username
const DB_USER = 'webrootname';
// @const string DB_PASSWORD DB-Password
const DB_PASSWORD = 'db-password';
// @const string DB_PREFIX DB-Präfix - e.g. more than one installation in Database
const DB_PREFIX = '';
An die folgende E-Mail-Adresse werden alle Systemmails gesendet
// @const string ADMIN_EMAIL Email for all systemmails
const ADMIN_EMAIL = 'admin@mastershop';
Mit dieser Firmenbezeichnung kannst du Testbestellungen vornehmen, z. B. um die Formulareinstellungen zu prüfen oder um die Mail-Einstellungen zu prüfen. Es werden dabei keine Änderungen am Warenbestand etc. vorgenommen. Auch hier ein möglichst kompliziertes Wort nehmen um Missbrauch zu vermeiden!
// @ TESTSHOPPER string Password for the testshopper
const TESTSHOPPER = 'TobbisVM-Shop';


Die folgenden Einstellungen sollten nur verändert werden wenn du einen leeren Shop installierst. Nicht verändern wenn du den Demo-Shop, der entsprechende Links beinhaltet, verwendest. Ansonsten musst du alle benutzten Bilder in den Artikeln neu verlinken.
/****************************************************************************
 * Category settings
 */
// @const string CATEGORY_IMAGE_PATH Path to category images
const CATEGORY_IMAGE_PATH = 'category';
// @const string CATEGORY_IMAGE_THUMB_PATH Path to category images Thumbnails
const CATEGORY_IMAGE_THUMB_PATH = 'thumb';

/****************************************************************************
 * Article settings
 */
// @const string ARTICLE_IMAGE_PATH Path to article images
const ARTICLE_IMAGE_PATH = 'article';
// @const string ARTICLE_IMAGE_THUMB_PATH Path to article images Thumbnails
const ARTICLE_IMAGE_THUMB_PATH = 'thumb';

/****************************************************************************
 * Filebrowser settings
 */
// @const string USER_IMAGE_PATH Path to user images
const USER_IMAGE_PATH = 'images/user/';

/****************************************************************************
 * Shop settings
 */
// @const string CURRENCY, Symbol for active Currency
const CURRENCY = ' ';
// @const string CURRENCY_CODE
const CURRENCY_CODE = 'EUR';
// @const boolean USER_LOGIN True if every customer must register
const USER_LOGIN = TRUE;

/****************************************************************************
 * Don't change the code after this point!
 */
// @const string $url Path to tobbivmshop (index.php)
define("URL", "http://" . $_SERVER["HTTP_HOST"]);

if (URL == URL_1)
 include_once 'config_1.php';
elseif (URL == URL_2)
 include_once 'config_2.php';
elseif (URL == URL_3)
 include_once 'config_2.php';
elseif (URL == URL_4)
 include_once 'config_4.php';
elseif (URL == URL_5)
 include_once 'config_5.php';
else
 include_once 'config_0.php';


Nach der Anpasung der Einträge muss die Datei „demo.config.php” in „config.php” umbenannt werden.


3. config_0.php

Die in den Datei config_0.php bis config_5.php (als Vorlage dient die Datei demo.config_0.php) werden die Einstellungen für jeden einzelnen Shop vorgenommen. Diese gelten jeweils für den einzelnen Shop. Die Datei config_0.php steht für den Mastershop.

Hier, wie in allen Konfigurationsdateien, nur die entsprechend gekennzeichneten Stellen an deine Bedingungen anpassen. Der Übersichtlichkeit wegen wird hier die komplette Datei angezeigt.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

<?php

if (!defined('TOBBIVM'))
    header('location:/template/notrepassing.php');
/**
 * This file is part of TobbiVMShop.
 *
 * TobbiVMShop 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 3 of the License, or
 * (at your option) any later version.
 *
 * TobbiVMShop 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 TobbiVMShop.  If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * Configuration Frontend
 *
 * @version    $Id$
 * @package    TobbiVM-Shop
 * @copyright  Copyright (C) 2016
 * @author     Norbert Gebert
 * @license    GPL3
 * @access       public
 */
/**
 * These values ​​must be adapted to your requirements!
 * single Domain settings
 */
// @const string TEMPLATE_PATH template-Path
const TEMPLATE_PATH = 'template'; Beinhaltet alle Template-Dateien für den jeweiligen Shop
// @const string LANGUAGE Language-ID
const LANGUAGE = 'de_DE';

/****************************************************************************
 * Mail settings for order e.g.
 * Only SMTP mail server are used!
 */
// @const string MAIL_HOSTNAME Set the hostname of the mail server
const MAIL_HOSTNAME = 'dein.mailserver.name';
// @const string MAIL_USER Username to use for SMTP authentication
const MAIL_USER = 'Mailserver-Benutzername';
// @const string MAIL_PASSWORD Password to use for SMTP authentication
const MAIL_PASSWORD = 'Mailserver-Passwort';
// @const integer MAIL_PORT Set the SMTP port number - likely to be 25, 465 or 587
const MAIL_PORT = 587;
// @const logical MAIL_AUTH Whether to use SMTP authentication
const MAIL_AUTH = TRUE;
// @const MAIL_SENDER to sending with order/billing-mails mails
const MAIL_SENDER = 'shop@mastershop'; Adresse unter der du über Bestellungen benachrichtigt werden willst
// @const MAIL_SENDER_NAME to send with order/billing-mail
const MAIL_SENDER_NAME = 'Domainname.com'; Absenderdomain-Name, in der Regel deine Shop-Domain
// @const Mail_SEND_REVOCATION Set to TRUE if send with the invoice, otherwise FALSE
const Mail_SEND_REVOCATION = TRUE; Widerufsbelehrung an Kunden senden
// @const MAIL_SEND_TERMS Set to TRUE if send your terms with the invoice, otherwise FALSE
const MAIL_SEND_TERMS = TRUE; AGB an Kunden senden
Soll die Rechnungsmail an den Kunden gesendet werden?
Wichtig wenn die Rechnungen über ein anderes Programm laufen sollen.
// @const MAIL_SEND_TO_CUSTOMER Set to TRUE then Mail send to customer
const MAIL_SEND_TO_CUSTOMER = TRUE

/****************************************************************************
 * Global settings
 */
Hier kann alles so bleiben wie es ist, die Standardwerte sollten nur in speziellen Fällen verändert werden
// @const string  IMAGE_EXTENSION List of allowed Imagetype as array
//                Upper and lower case are ignored
const IMAGE_EXTENSION = 'gif,jpg,png';
// @const integer MAX_ATTEMPTS Max of custome loginerrrors, then the user set to not active
const CUSTOMER_MAX_ATTEMPTS = 5;
// @const integer CUSTOMER_SESSION_TIME Set session lenght in seconds
const CUSTOMER_SESSION_TIME = 1800;
// @const string PHP_TIMEZONE        List of Timezones: http://www.php.net/manual/en/timezones.php
const PHP_TIMEZONE = 'Europe/Berlin';
// @const integer PERIOD Period for internal counter in seconds
const PERIOD = 1800; Zählerzeit für Besucherzähler

/****************************************************************************
 * Shop settings mail, URL e.g.
 */
Deine Adressdaten für verschiedene Formulare etc.
// @const string COMPANY_NAME
const COMPANY_NAME = 'Dein-Shop Master';
// @const string COMPANY_STREET
const COMPANY_STREET = 'VM-Masterweg 1';
// @const string COMPANY_CITY
const COMPANY_CITY = '11111 TobbiVM';
// @const string COMPANY_PHONE
const COMPANY_PHONE = '0 11 11 / 11 11';
// @const string COMPANY_FAX
const COMPANY_FAX = '0 11 11 / 11 11 11';
// @const string COMPANY_EMAIL
const COMPANY_EMAIL = '1111@deinShop.de';

/****************************************************************************
 * Meta settings
 */
// @const integer META_DESCRIPTION_LENGH, Lengh of Metadescription in Character
const META_DESCRIPTION_LENGH = 140; Standard, dieser Wert dient im Backend nur der Information
// @const integer META_KEYWORD_NUMBER, Number of keywords
const META_KEYWORD_NUMBER = 10; Standard, dieser Wert dient im Backend nur der Information
// @const string TEMPLATE_TITEL Title for The Page
const TEMPLATE_TITEL = 'Tobbivm Master-Shop';
Hier die Keywords einfügen die immer dann verwendet werden sollen wenn keine anderen Keywords angegeben werden. Z.B. wenn in der Artikelbeschreibung das entsprechende Feld leergelassen wird.
// @const string META_KEYWORDS, Standard if not set in Category/Article
const META_KEYWORDS = 'TobbiVM-Master-Shop, Shopsystem, Plugin, PHP, HTML, OpenSource, Javascript, CSS, Kostenlos, Script';
Hier die Metadescription einfügen die immer dann verwendet werden sollen wenn keine anderen Metadescription angegeben werden. Z.B. wenn in der Artikelbeschreibung das entsprechende Feld leergelassen wird.
// @const string META_DESCRIPTION, Standard if not set in Category/Article
const META_DESCRIPTION = 'Mit TobbiVM-Shop hast du ein, auf den deutschen Markt zugeschnittenes, zukunftssicheres Shopsystem. ';
Über diesen Wert ermitteln viele Angreifer welches Script auf deinem Webspace läuft. Wird z. B. „Joomla Version X.XX.XX” gefunden so können sie von vornherein feststellen ob es sich lohnt diesen Webspace anzugreifen. Hier bitte einen Phantasienamen eintragen der keine Rückschlüsse auf das Script zulässt.
// @const string META_GENERATOR, You can write everythind what you want to deceive Bots etc.
const META_GENERATOR = 'TobbiVM-Shop, a German Shopsystem';

/****************************************************************************

/**
 * User-Account settings
 * First: Settings for account regitration and
 * customer adresses
 */
Hier können die Felder festgelegt werden die bei einer Bestellung ausgefüllt werden müssen/sollen oder gar nicht erst angezeigt werden sollen. Dies gilt für Registrierung UND Gastanmeldung.
// @const integer COMPANY 0 = Not used, 1 = used, 2 = used AND required
const COMPANY = 1;
// @const integer FIRSTNAME 0 = Not used, 1 = used, 2 = used AND required
const FIRSTNAME = 2;
// @const integer LASTNAME 0 = Not used, 1 = used, 2 = used AND required
const LASTNAME = 2;
// @const integer STREET 0 = Not used, 1 = used, 2 = used AND required
const STREET = 2;
// @const integer ZIP_CODE 0 = Not used, 1 = used, 2 = used AND required
const ZIP_CODE = 2;
// @const integer CITY 0 = Not used, 1 = used, 2 = used AND required
const CITY = 2;
// @const integer COUNTRY 0 = Not used, 1 = used, 2 = used AND required
const COUNTRY = 2;
// @const integer STATE 0 = Not used, 1 = used, 2 = used AND required
const STATE = 2;
// @const integer PHONE 0 = Not used, 1 = used, 2 = used AND required
const PHONE = 2;
// @const integer FAX 0 = Not used, 1 = used, 2 = used AND required
const FAX = 1;
// @const integer MOBILE 0 = Not used, 1 = used, 2 = used AND required
const MOBILE = 1;
// @const integer EMAIL 0 = Not used, 1 = used, 2 = used AND required
const EMAIL = 2;
// @const integer ZIP_CODE_LENGH values 1 to 10
const ZIP_CODE_LENGH = 5;
// @const string DEFAULT_STATE
const DEFAULT_STATE = 'Deutschland';

/****************************************************************************
 * Captcha
 */
Hier muss nichts geändert werden. Die Angaben dienen nur der Anpassung an ein selbst erstelltes Design.
// @const CAPTCHA_ON Set to TRUE to use captcha
const CAPTCHA_ON = TRUE;
// @const CAPTCHA_FONTS Set the value of used fontfiles in module/class/captcha/font
const CAPTCHA_FONTS = 5;
// @const CAPTCHA_WIDTH Width of the captcha-field in pixel
const CAPTCHA_WIDTH = 140;
// @const CAPTCHA_HEIGHT Height of the captcha-field in pixel
const CAPTCHA_HEIGHT = 50;
// @const CAPTCHA_MAX Maximum operand value
const CAPTCHA_MAX = 55;
// @const CAPTCHA_BACKGOUND Backgroundcolor in; format: '#ffff00'
const CAPTCHA_BACKGOUND = '#40e0d0';

/****************************************************************************
 * Don't change the code after this point!
 */
// @const string SUFFIX
const SUFFIX = '';

const SECURE = '1542148735124951';
// @const integer SMTP_DEBUG Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
const SMTP_DEBUG = 0;

Nach der Anpasung der Einträge muss die Datei „demo.config_0.php” in „config_0.php” (bzw. „config_1.php…”) umbenannt werden.


4. robots.txt

Die in der Datei „robots.txt” gemachten Angaben sollen Suchmaschinen und Spider darauf hinweisen bestimmte Verzeichnis nicht zu erfassen. Dies gelingt leider nur bei seriösen Suchmaschinen wie Google. Wer keine Lust hat Inhalte von Plugin-Dateien oder ähnliches z. B. im Google-Index zu finden sollte die Einträge gegebenenfalls an eigene Änderungen anpassen.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

User-agent: *
Disallow: /admin/ gegebenenfalls anpassen, wenn geändert!

Folgenden Eintrag gegebenenfalls anpassen, für jeden weiteren Shop das entsprechende Template-Verzeichnis zusätzlich, in einer eigenen Zeile angeben. Die Template-Verzeichnisse dürfen beliebig umbenannt werden.
Disallow: /template/

Disallow: /language/
Disallow: /library/
Disallow: /module/
Disallow: /plugins/
Disallow: /temp/
Disallow: /xplugin/

Das Image-Verzeichnis kann natürlich auch hier aufgeführt werden. Es ist aber günstiger die Suchmaschinen (die sich an die robots.txt halten) die Bilder auch indizieren zu lassen. Dazu werden sinnvolle Bildernamen benötigt.

Nach der Anpasung der Einträge den Dateinamen nicht ändern!


5. config.php

Die Einstellungen in der Datei config.php, im Verzeichnis „admin”, (als Vorlage dient die Datei demo.config.php) sind für den von dir benutzten Webserver wichtig und Sicherheitsrelevant. Eine falsche Einstellung (manchmal nur ein einziges Zeichen) können die Benutzung des Backends unmöglich machen.

Hier, wie in allen Konfigurationsdateien, nur die entsprechend gekennzeichneten Stellen an deine Bedingungen anpassen. Der Übersichtlichkeit wegen wird hier die komplette Datei angezeigt.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

<?php

if (!defined('TOBBIVM'))
    header ('location:/template/notrepassing.php');
/**
 * This file is part of TobbiVMShop.
 *
 * TobbiVMShop 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 3 of the License, or
 * (at your option) any later version.
 *
 * TobbiVMShop 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 TobbiVMShop.  If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * Configuration-Class
 *
 * @version    $Id$
 * @package    TobbiVM-Shop
 * @copyright  Copyright (C) 2012
 * @author     Norbert Gebert
 * @license    GPL3
 * @access       public
 */
/**
 * These values ​​must be adapted to your requirements!
 */
/**
 * Database and domain Settings
 */
// @const string URL_0 to URL_5 for all shops. Not used
//               are empty = '', with 'http://www.'!
const URL_0 = 'http://www.mastershop.de';
const URL_1 = 'http://www.clientshop1.de'; Wenn kein weiterer Shop angelegt werden soll dann in '' ändern.
const URL_2 = '';
const URL_3 = '';
const URL_4 = '';
const URL_5 = '';

Dient in den Tabellen als Spaltenüberschrift
// @const string shortName Name for tables(article table...)
const SHORTNAME = 'Master';
const SHORTNAME_1 = 'Client1';
const SHORTNAME_2 = '';
const SHORTNAME_3 = '';
const SHORTNAME_4 = '';
const SHORTNAME_5 = '';

Die Einstellungen für die Datenbank bekommst du von deinem Webspace-Anbieter!
// @const string DB_NAME Databasename
const DB_NAME = 'Databasename';
// @const string DB_HOST DB-Adress, mostly 'localhost'
const DB_HOST = 'localhost';
// @const string DB_USER DB-Username
const DB_USER = 'webrootname';
// @const string DB_PASSWORD DB-Password
const DB_PASSWORD = 'db-password';
// @const string DB_PREFIX DB-Präfix - e.g. more than one shop in Database,
const DB_PREFIX = '';
// @const ORDER_LIST Size of shown orders in listtable
const ORDER_LIST = 25;


Die folgenden Einstellungen sollten nur verändert werden wenn du einen leeren Shop installierst. Nicht verändern wenn du den Demo-Shop, der entsprechende Links beinhaltet, verwendest. Ansonsten musst du alle benutzten Bilder in den Artikeln neu verlinken.
/****************************************************************************
 * Global Settings
 */
// @const string  IMAGE_EXTENSION List of allowed Imagetype as array
//                Upper and lower case are ignored
const IMAGE_EXTENSION = 'gif,jpg,png';
// @const logical if True all long/big Helpboxes under the forms are shown
const HELPBOX = TRUE;
// absolute Path for Filemanager
//const EDITOR_UPLOAD_PATH = '/images/user';  Muss mit Frontend-Pfad identisch sein!
// @const string USER_IMAGE_PATH Path to user images
const USER_IMAGE_PATH = '/images/user'; Muss mit Frontend-Pfad identisch sein!
// Session timeout in seconds
const TIMEOUT = 1900;

/****************************************************************************
 * Category Settings
 */
// @const integer CATEGORY_THUMB_WITH tumbnail width in px
const CATEGORY_THUMB_WITH = 120; Dieser Wert wird nur als Hinweis angezeigt
// @const integer CATEGORY_THUMB_HEIGHT thumbnail height in px
const CATEGORY_THUMB_HEIGHT = 120; Dieser Wert wird nur als Hinweis angezeigt
// @const string CATEGORY_IMAGE_PATH Path to category images
const CATEGORY_IMAGE_PATH = 'category';
// @const string CATEGORY_IMAGE_THUMB_PATH Path to category images Thumbnails
const    CATEGORY_IMAGE_THUMB_PATH = 'thumb';
// @const integer CATEGORY_IMAGE_SIZE Size of Image in Bytes
const CATEGORY_IMAGE_SIZE = 32768; Dieser Wert wird nur als Hinweis angezeigt
// @const integer CATEGORY_LIST Size of shown categorys in editortable
const CATEGORY_LIST = 25; Tabellenzeilen die je Seite angezeigt werden sollen

/****************************************************************************
 * Article settings
 */
// @const integer ARTICLE_THUMB_WITH tumbnail width in px
const ARTICLE_THUMB_WITH = 120; Dieser Wert wird nur als Hinweis angezeigt
// @const integer ARTICLE_THUMB_HEIGHT thumbnail height in px
const ARTICLE_THUMB_HEIGHT = 120; Dieser Wert wird nur als Hinweis angezeigt
// @const string ARTICLE_IMAGE_PATH relative path to article images
const ARTICLE_IMAGE_PATH = 'article';
// @const string ARTICLE_IMAGE_THUMB_PATH Path to article images Thumbnails
const ARTICLE_IMAGE_THUMB_PATH = 'thumb';
// @const integer ARTICLE_IMAGE_SIZE Size of Image in Bytes
const ARTICLE_IMAGE_SIZE = 131072; Dieser Wert wird nur als Hinweis angezeigt
// @const integer ARTICLE_LIST Size of shown article in editortable
const ARTICLE_LIST = 25; Tabellenzeilen die je Seite angezeigt werden sollen
// @const integer ARTICLE_PAGES Number of shown pages in articletable pagination
const ARTICLE_PAGES = 5; Anzahl der dargestellten Seitenlinks

/****************************************************************************
 * Pricelist Settings table
 */
// @const integer PRICELIST_LIST Size of shown article in pricelist table
const PRICELIST_LIST = 25; Tabellenzeilen die je Seite angezeigt werden sollen
// @const integer PRICELIST_PAGES Number of shown pages in pricelist table pagination
const PRICELIST_PAGES = 5; Anzahl der dargestellten Seitenlinks

/****************************************************************************
 * Meta Settings
 */
// @const integer METADESCRIPTION_LENGH, Lengh of Metadescription in Character
const METADESCRIPTION_LENGH = 139; Dieser Wert wird nur als Hinweis angezeigt
// @const integer METAKEYWORD_NUMBER, Number of keywords
const METAKEYWORD_NUMBER = 5; Dieser Wert wird nur als Hinweis angezeigt
// @const integer GLOBAL_METAKEYWORD_NUMBER, Number of keywords
const GLOBAL_METAKEYWORD_NUMBER = 5; Dieser Wert wird nur als Hinweis angezeigt

/**
 * Shop Settings
 */
// @const string CURRENCY, Symbol for active Currency
const CURRENCY = ' ';

/*********************************************/
/*  Don't change the code after this point!  */
/*********************************************/
const SECURE = '1542148735124951';
// @const integer SMTP_DEBUG Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
const SMTP_DEBUG = 0;

define("URL", "http://" . $_SERVER["HTTP_HOST"]);

if (URL == URL_1)
 include_once 'config_1.php';
elseif (URL == URL_2)
 include_once 'config_2.php';
elseif (URL == URL_3)
 include_once 'config_2.php';
elseif (URL == URL_4)
 include_once 'config_4.php';
elseif (URL == URL_5)
 include_once 'config_5.php';
else
 include_once 'config_0.php';

Nach der Anpasung der Einträge muss die Datei „demo.config.php” in „config.php” umbenannt werden.


6. config_0.php

Die in den Datei config_0.php bis config_5.php (als Vorlage dient die Datei demo.config_0.php) werden die Einstellungen für jeden einzelnen Shop vorgenommen. Diese gelten jeweils für den einzelnen Shop. Die Datei config_0.php steht für den Mastershop.

Hier, wie in allen Konfigurationsdateien, nur die entsprechend gekennzeichneten Stellen an deine Bedingungen anpassen. Der Übersichtlichkeit wegen wird hier die komplette Datei angezeigt.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

<?php

if (!defined('TOBBIVM'))
    header ('location:/template/notrepassing.php');
/**
 * This file is part of TobbiVMShop.
 *
 * TobbiVMShop 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 3 of the License, or
 * (at your option) any later version.
 *
 * TobbiVMShop 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 TobbiVMShop.  If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * Configuration-Class
 *
 * @version    $Id$
 * @package    TobbiVM-Shop
 * @copyright  Copyright (C) 2012
 * @author     Norbert Gebert
 * @license    GPL3
 * @access       public
 */
/**
 * These values ​​must be adapted to your requirements!
 *
 * Database and domain Settings
 */
// @const string TEMPLATE_PATH template-Path
const TEMPLATE_PATH = 'template'; Kann auf deinen, frei wählbaren, Template-Ordner angepasst werden!
// @const string LANGUAGE Language-ID
const LANGUAGE = 'de_DE';
// @const string LANGUAGE Language-name
const LANGUAGE_NAME = 'Deutschland';

/**
 * Mail settings
 * Only SMTP mail servers are used!
 */
// @const string MAIL_HOSTNAME Set the hostname of the mail server
const MAIL_HOSTNAME = 'dein.mailserver.com';
// @const string MAIL_USER Username to use for SMTP authentication
const MAIL_USER = 'Benutzername';
// @const string MAIL_PASSWORD Password to use for SMTP authentication
const MAIL_PASSWORD = 'Benutzerpasswort';
// @const integer MAIL_PORT Set the SMTP port number - likely to be 25, 465 or 587
const MAIL_PORT = 587; Kann in der Regel so bleiben
// @const logical MAIL_AUTH Whether to use SMTP authentication
const MAIL_AUTH = TRUE; Kann in der Regel so bleiben
// @const MAIL_SENDER
const MAIL_SENDER = 'Absende-Mail-Adresse';
// @const MAIL_SENDER_NAME
const MAIL_SENDER_NAME = 'Absendername';
// @const Mail_SEND_REVOCATION Set to TRUE if send with the invoice otherwise FALSE
const Mail_SEND_REVOCATION = TRUE;
// @const MAIL_SEND_TERMS Set to TRUE if send your terms with the invoice otherwise FALSE
const MAIL_SEND_TERMS = TRUE;
// @const MAIL_RECIVER
const MAIL_RECIVER = 'deine@mailadresse.com'; Deine E-Mail-Adresse an die eine Bestellkopie gesendet werden soll
// @const MAIL_ORDER_NAME
const MAIL_ORDER_NAME = 'Domain.com'; Domainname der im Mailheader eingefügt werden soll

/*********************************************/
/*  Don't change the code after this point!  */
/*********************************************/
// @const SUFFIX Setting db-table suffix for client shop
const SUFFIX = '';

Nach der Anpasung der Einträge muss die Datei „demo.config_0.php” in „config_0.php” umbenannt werden.


7. .htaccess

Jetzt muss nur noch die .htaccess-Datei angelegt werden. Dies stellt den Schutz deines Backends sicher.

Hier, wie in allen Konfigurationsdateien, nur die entsprechend gekennzeichneten Stellen an deine Bedingungen anpassen. Der Übersichtlichkeit wegen wird hier die komplette Datei angezeigt.

Die blaue Schrift dient nur der Erklärung einzelner Anpassungen und darf nicht in der eigentlichen Datei stehen und der orange hervorgehobene Text muss entsprechend angepasst werden!

Hier siehst du den Aufbau einer .htaccess-Datei mit einem IP-Filter:

# As an example, all IPs are listed by Alice.
# Of course, comply with the IPs of your provider are here!
# IPs von Alice-DSL
1.Teil
Folgender Eintrag erlaubt nur Zugang von Rechnern deren IP mit 62.109. beginnt
SetEnvIfNoCase REMOTE_ADDR "^62.109." user_ip
Folgender Eintrag erlaubt nur Zugang eines Rechners mit der IP mit 78.48.211.22
SetEnvIfNoCase REMOTE_ADDR "^78.48.211.22" user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.49." user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.50." user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.51." user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.52." user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.53." user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.54." user_ip
SetEnvIfNoCase REMOTE_ADDR "^78.55." user_ip
SetEnvIfNoCase REMOTE_ADDR "^80.171." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.176." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.177." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.178." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.179." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.180." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.181." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.182." user_ip
SetEnvIfNoCase REMOTE_ADDR "^85.183." user_ip
SetEnvIfNoCase REMOTE_ADDR "^91.208.191." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.224." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.225." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.226." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.227." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.228." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.229." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.230." user_ip
SetEnvIfNoCase REMOTE_ADDR "^92.231." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.22.180." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.22.181." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.22.182." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.22.183." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.72." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.73." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.74." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.75." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.76." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.77." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.78." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.28.79." user_ip
SetEnvIfNoCase REMOTE_ADDR "^193.102.14." user_ip
SetEnvIfNoCase REMOTE_ADDR "^195.160.172." user_ip
SetEnvIfNoCase REMOTE_ADDR "^195.160.173." user_ip
SetEnvIfNoCase REMOTE_ADDR "^213.39." user_ip
SetEnvIfNoCase REMOTE_ADDR "^213.191." user_ip

Order Deny,Allow
Deny from All
Allow from env=user_ip

2.Teil
AuthName "Dein Benutzername für das Backend"
AuthType Basic
Der folgende Pfad ist der auf deinem Server zur Passwortdatei
AuthUserFile Your/absolute/path/to/.htpasswd
require valid-user

1. Teil

Das einfachste, um den  größten Teil des Webs von deinem Backend fernzuhalten, ist der den Zugang mittels einer Whitelist nur für einen bestimmten IP-Bereich zu erlauben. Im obigen Beispiel sind alle damaligen IP-Bereiche des Anbieters ALICE aufgeführt. Dieser Bereich kann aber weiter eingeschränkt werden.
Dabei hilft eine einfache Anfrage bei deinem Anbieter oder das "Try and error"-Prinzip. Letzteres funktioniert so das du auf einer Webseite (z. B. http://www.wieistmeineip.de/) deine IP ermittelst. Du suchst nun auf der Seite http://www.nirsoft.net/countryip/de.html einen Bereich, in dem deine IP ist und deren Anbieter deinem entspricht.

Als Beispiel: Deine IP lautet 2.200.100.11, dein Anbieter ist die Vodafone GmbH. Auf der Webseite findest du nun den Eintrag für den Bereich 2.200.0.0 bis 2.207.255.255 der Vodafone GmbH. In diesen Bereich passt deine IP.

Den gesamten Bereich kannst du nun mit diesen Einträgen freigeben:

SetEnvIfNoCase REMOTE_ADDR "^2.200." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.201." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.202." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.203." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.204." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.205." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.206." user_ip
SetEnvIfNoCase REMOTE_ADDR "^2.207." user_ip

Du kannst natürlich auch deine IP als einzige angeben. Dies ist aber sehr unpraktisch, da du bei jeder neuen Verbindung mit dem Internet von deinem Provider eine dieser IPs, aus dem angezeigten Bereich, zugewiesen bekommst. Jede dieser IPs musst du dann in der Liste eintragen.
Aber auch so hast du den allergrößten Teil des Webs aus deinem Backend ausgesperrt.

2. Teil

Hier muss dein Benutzername eingetragen werden und stellt beim Anmelden die erste Hürde dar. Nur bitte nicht einfach deinen Namen oder „Admin”. Auch hier eine untypische Bezeichnung wie „Thomas_kanns_nicht lassen” oder so etwas nehmen.

Für den .htaccess-Schutz musst du jetzt noch das Passwort, in verschlüsselter Form, erstellen und in der datei „.htpaswd” speichern. Dazu kannst du natürlich ein Online-Tool nehmen, bei dem du aber nie sicher sein kannst ob dein Passwort und dein Benutzername nicht doch gespeichert werden. Daher nutze dieses Tool: htgen Version 1.0.0. Das kannst du auf deinem Rechner starten und bist sicher das kein anderer dein Passwort mitlesen kann.

Um die Datei mit deinem Passwort der htaccess-Datei mitzuteilen musst du noch den Serverpfad feststellen.
Dazu rufst du die Datei info.php in deinem Admin-Verzeichniss auf (http://www.deine_Domain.de/Adminverzeichnissname/info.php. Auf der Seite die dann in deinem Browser angezeigt wird suchst du nach dem Eintrag „DOCUMENT_ROOT”. Dort findest du etwas ähnliches wie „/var/www/web874512/html/tobbivmshop”. Dies ist der Serverpfad zu deiner Shop-Domain.
Sicherheitshalber soll die Passwortdatei über deinem Domainverzeichnis liegen! Das heißt in diesem Fall lautet der Pfad zu deiner Passwortdatei „/var/www/web874512/html”.
Nun starte den htgen und trage in den entsprechenden Feldern deine Angaben ein.

Einstellungen im htgen

Die Angaben in den Ausgabefeldern kopierst du in die .htaccess- bzw. .htpasswd-Datei und speicherst diese in deinem Webspace. Nicht vergessen: Die .htpasswd-Datei kommt hierhin:

Laut dem Beispiel
html/

Hier kommen alle TobbiVM-Shop-Dateien hinein
html/tobbivmshop/

Die .htpasswd muss hier stehen
html/.htpasswd
und die .htaccess muss hier stehen
html/tobbivmshop/admin/.htaccess

Bei Fragen oder Fehlern schreibt bitte ins Forum.

Aktuell

Nach dem Redesign der Seite wird sich auch, nach und nach, etwas in der Seitenstruktur tun. Ebenso wird das neue Logo überall eingefügt werden. Bei den Fehlermeldungen, Informationen und sonstigem, rund um TobbiVM, wird auch in Zukunft hier die erste Anlaufstelle sein. Sourceforge wird eigentlich nur als Repository genutzt. Trotzdem wird dort der Download der aktuellen Version weiterhin möglich sein.
Leider ist das Design von Flyspray nicht reponsive, was bei der Datenmenge bei der Anzeige auch sehr schwierig ist. Somit ist Flyspray nur bei Breiten von mindestens ca. 768px wirklich sinnvoll nutzbar.
Der, bis jetzt, stiefmütterlich behandelte Teil mit den Anleitungen wird ab sofort mit Hochdruck weiter vergrößert.
Weitere Wünsche? -> Dann ins Forum damit!
nach oben