Register for your free account! | Forgot your password?

Go Back   elitepvpers > Off-Topics > Tutorials
You last visited: Today at 19:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



(How) MySQL-Installationsscript

Discussion on (How) MySQL-Installationsscript within the Tutorials forum part of the Off-Topics category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2009
Posts: 920
Received Thanks: 422
(How) MySQL-Installationsscript

Hi Leute,
ihr wollt eine eigene CMS oder Bildergallerie anfangen und wisst nicht wie?
Kein Problem: mit diesem Installationsscript habt ihr das wichtigste (nämlich die Datenbank anlegen+Administratoraccount) schon vorab getan.

Als erstes beginnen wir mit der .htaccess. Sie schützt die darin aufgelisteten Dateien

PHP Code:
<Files "config.php">
Order allow,deny
Deny from all
</Files>

<
Files "common.php">
Order allow,deny
Deny from all
</Files
D.h. keiner kann die config.php und die common.php über dem Browser öffnen. Sozusagen hat keiner Zugriff auf ihre Einstellungen, die in der config.php (z.B. MySQL-Zugangsdaten) gespeichert sind.

Als zweites erstellen wir die index.php.

PHP Code:
<?php 

$filename 
'config.php'

if (
file_exists($filename)) { 
header("Location: sites.php"); 

else { 
echo 
"Sie müssen erst die Installation durchführen. <a href='install.php'>Zur Installation</a>."


?>
Dieser Script bewirkt, dass sie den Link zur Installation (install.php) haben, falls sie noch nicht die Installation durchgeführt haben. Ansonsten werden sie zur sites.php weitergeleitet.

Die sites.php enthält den Inhalt, den Sie für die index.php geplant hatten. Also das, was der Internetuser sieht, wenn er auf Ihre Seite stößt und Sie die Installation durchgeführt haben.

Die dritte Datei, die wir erstellen ist die install.php

PHP Code:
<?php 
header
("Location: install/index.php"); 
?>
Diese Datei leitet uns eigentlich nur zum eigentlichen Installationsscript weiter.

Dazu erstellen wir als nächstes den Ordner install/
In diesen Ordner erstellen wir dann den Ordner mysql/
Im Ordner mysql werden zwei Dateien erstellt.
1. tables.php (hier ein Beispiel)

PHP Code:
<?php 
$create
[user] = "CREATE TABLE $user ( 
  `id` int(11) NOT NULL auto_increment, 
  `name` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `password` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `email` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `level` int(11) NOT NULL default '0', 
  `autologin` int(1) NOT NULL default '0', 
  `location` varchar(30) collate latin1_general_ci NOT NULL default '', 
  `interests` varchar(100) collate latin1_general_ci NOT NULL default '', 
  `icq_nr` varchar(12) NOT NULL default '0', 
  `job` varchar(30) collate latin1_general_ci NOT NULL default '', 
  `ban` int(1) NOT NULL default '0', 
  `session_time` varchar(25) collate latin1_general_ci NOT NULL, 
  `time` varchar(5) collate latin1_general_ci NOT NULL, 
  `active` char(1) collate latin1_general_ci NOT NULL default '', 
  `act_key` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `ice` int(1) NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1"


$create[sessions] = "CREATE TABLE $sessions ( 
  `id` int(11) NOT NULL auto_increment, 
  `session_time` varchar(30) collate latin1_general_ci NOT NULL, 
  `session_ip` varchar(30) collate latin1_general_ci NOT NULL, 
  `time` varchar(30) collate latin1_general_ci NOT NULL, 
  `name` varchar(14) collate latin1_general_ci NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1"


$create[config] = "CREATE TABLE $config ( 
  `menu_title` varchar(20) collate latin1_general_ci NOT NULL default '', 
  `default_style` varchar(35) collate latin1_general_ci NOT NULL default '', 
  `default_language` varchar(28) collate latin1_general_ci NOT NULL default '', 
  `footer_title` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `path` varchar(55) collate latin1_general_ci NOT NULL default '', 
  `domain_name` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `website_name` varchar(90) collate latin1_general_ci NOT NULL default '', 
  `logo_url` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `email` varchar(255) collate latin1_general_ci NOT NULL default '', 
  `gb_entries_per_site` int(11) NOT NULL, 
  `comments_per_site` int(11) NOT NULL, 
  `frontpage` varchar(31) collate latin1_general_ci NOT NULL default '', 
  `gb_wait` int(11) NOT NULL, 
  `gb_on` int(11) NOT NULL, 
  `contact_form_on` int(1) NOT NULL, 
  `change_of_name` int(1) NOT NULL, 
  `wio_on` int(1) NOT NULL, 
  `max_pms` int(11) NOT NULL, 
  `disable` int(1) NOT NULL, 
  `editor_on` int(1) NOT NULL, 
  `website_title` varchar(56) collate latin1_general_ci NOT NULL, 
  `v_ai` int(1) NOT NULL, 
  `v_hpi` int(1) NOT NULL, 
  `v_so` int(1) NOT NULL, 
  `v_ans` int(1) NOT NULL, 
  `v_co` int(1) NOT NULL, 
  `v_anc` int(1) NOT NULL, 
  `v_mo` int(1) NOT NULL, 
  `v_anm` int(1) NOT NULL, 
  `v_cc` int(1) NOT NULL, 
  `v_cot` int(1) NOT NULL, 
  `v_cu` int(1) NOT NULL, 
  `v_trash` int(1) NOT NULL, 
  `comments` int(1) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci"

?>
Damit wird später die Tabellen user, sessions und config angelegt. Hier kommen also alle Tabellen herein, die Sie anlegen möchten.

Die zweite Datei nennen wir mal data.php (auch ein Beispiel)

PHP Code:
<?php 
$insert
[user] = "INSERT INTO $user VALUES (1, '$username', '$md5_pass', '$admin_email', '1', '0', '', '', '', '', '0', '0', '0', '1', '-1', '0')"

$insert[sessions] = "INSERT INTO $sessions VALUES (1, '0', '0', '0', '$username')"
?>
Hier werden die Daten hineingepackt, die in die Tabellen sollen.

So, damit wäre bis auf den Installationsscript alles gesagt. Die Grundlagen sind euch hoffentlich klar.

Der Installationsscript liegt im Ordner install/ und heißt index.php
Ich habe versucht ihn einfach und selbsterklärend zubauen.
index.php

PHP Code:
<?php 

$step 
$_GET['step']; 
$host $_SERVER['HTTP_HOST']; 

@include 
"../config.php"

$path substr(str_replace("/install/index.php"""$_SERVER['SCRIPT_NAME']), '1'); 

// Connect to the database 
$connection = @mysql_connect($server$dbusername$dbpassword); 

// Select the database 
@mysql_select_db($dbname); 

$mode $_GET['mode']; 

// MySQL tables und datas 
    
include "mysql/tables.php"
    include 
"mysql/data.php"

// Start installation-assistent 
if (!isset($step)) { 
    echo 
"<div><b>Willkommen zur Installation</b></div>"
    echo 
"<div>"
    echo 
"Vielen Dank, dass Sie sich zur Installation von MatzeCMS entschieden hast. Um MatzeCMS zu installieren, klicken Sie bitte auf weiter. Wenn Sie MatzeCMS vergebens installiert haben, löschen sie die config.php und starten diesen Installationsassistenten erneut."
    echo 
"<a href='index.php?step=1'>Weiter</a></div>"
    echo 
"</div>"


// Step 1: MySQL-Data 
if ($step == '1') { 
    echo 
"<div><b>Installation - MySQL-Zugangsdaten</b></div>"
    echo 
"<div>"
    echo 
"Geben Sie hier bitte ihre MySQL-Zugangsdaten ein."
    echo 
"<br>"
    echo 
"<form action='index.php?step=2' method='post'>"
    echo 
"<table width='100%'>"
    echo 
"<tr><td width='17%'>Server:</font></td><td>&nbsp;<input class='input' type='text' name='server' value='localhost' /></td></tr>"
    echo 
"<tr><td width='17%'>Username:</font></td><td>&nbsp;<input class='input' type='text' name='mysql_username' /></td></tr>"
    echo 
"<tr><td width='17%'>Passwort:</font></td><td>&nbsp;<input class='input' type='password' name='mysql_password' /></td></tr>"
    echo 
"<tr><td width='17%'>Datenbank:</font></td><td>&nbsp;<input class='input' type='text' name='mysql_db' /></td></tr>"
    echo 
"<tr><td width='17%'>Tabellen-Prefix:</font></td><td>&nbsp;<input class='input' type='text' name='mysql_prefix' value='Matze Community CMS' /></td></tr>"
    echo 
"</table>"
    echo 
"<br>"

    if (!(
$handle = @fopen("../config.php"w))) { 
        echo 
"<font color='red'><b>Deine config.php ist nicht beschreibbar!</b></font>"
    } else { 
        echo 
"<font color='green'><b>Deine config.php ist beschreibbar.</b></font>"
    } 

    echo 
"<br>"
    
$_SESSION['prefix'] = $_POST['mysql_prefix']; 
    echo 
"<input class='button' type='submit' value='Weiter'>"
    echo 
"</form></div>"


// Step 2: Check Connection 
if ($step == '2') { 
    
$server $_POST['server']; 
    
$mysql_username $_POST['mysql_username']; 
    
$mysql_password $_POST['mysql_password']; 
    
$mysql_db $_POST['mysql_db']; 
    
$mysql_prefix $_POST['mysql_prefix']; 
     
    
// error MySQL-Username 
    
if (empty($mysql_username)) { 
        echo 
"<div><b>Fehlende Angaben</b></div>"
        echo 
"<div>"
        echo 
"Sie haben vergessen einen MySQL-Usernamen anzugeben. Korrigiere Sie bitte ihre Angaben."
        echo 
"<br>"
        echo 
"<a href='index.php?step=1' style='text-decoration: none'>Zurück</a>"
        echo 
"</div>"
        exit(); 
    } 
    
// error MySQL-Database 
    
if (empty($mysql_db)) { 
        echo 
"<div><b>Fehlende Angaben</b></div>"
        echo 
"<div id='content'>"
        echo 
"Sie haben vergessen eine MySQL-Datenbank anzugeben. Korrigieren Sie bitte ihre Angaben."
        echo 
"<br>"
        echo 
"<a href='index.php?step=1' style='text-decoration: none'>Zurück</a>"
        echo 
"</div>"
        exit(); 
    } 
     
    
// error config.php 
    
if (!($handle = @fopen("../config.php"w))) { 
        echo 
"<div><b>Fehler</b></div>"
        echo 
"<div>"
        echo 
"Ihre <b>config.php</b> ist leider nicht beschreibbar. Sie müssen die Rechte der Datei auf <b>0777</b> setzen."
        echo 
"<br>"
        echo 
"<a href='index.php?step=1' style='text-decoration: none'>Zurück</a></div>"
    } else { 
        
//  
        // Let's go and write the config.php 
        // 
        
$write_config "<?php\n\n"
        
$write_config .= "\$server = \"$server\";\n"
        
$write_config .= "\$dbname = \"$mysql_db\";\n"
        
$write_config .= "\$dbusername = \"$mysql_username\";\n"
        
$write_config .= "\$dbpassword = \"$mysql_password\";\n"
        
$write_config .= "\$dbprefix = \"$mysql_prefix\";\n\n"
        
$write_config .= "\n\n?>"
        
fwrite($handle$write_config); 
        
fclose($handle); 
        echo 
"<div><b>MySQL-Konfiguration abgeschlossen.</b></div>"
        echo 
"<div id='content'>"
        echo 
"Glückwunsch, das Erste haben Sie geschafft. Die config.php wurde erstellt. Jetzt muss nur noch der Administrator eingerichtet werden."
        echo 
"<br>"
        echo 
"<a href='index.php?step=3' style='text-decoration: none'>Weiter</a></div>"
    } 


// Step 3: Configurate the Administrator 
if ($step == '3') { 

    if (
$connection == false) { 
        echo 
"<div><b>Falsche Zugangsdaten</b></div>"
        echo 
"<div>"
        echo 
"Die eingegebenen Zugangsdaten für Ihre Datenbank waren falsch. Bitte versuchen Sie es erneut."
        echo 
"<br>"
        echo 
"<a href='index.php' style='text-decoration: none'>Zurück</a>"
        echo 
"</div>"
        @
unlink("../config.php"); 
        exit(); 
    } 

    echo 
"<div><b>Installation - Abschluss</b></div>"
    echo 
"<div>"
    echo 
"Bitte geben Sie hier noch die letzten Daten zur Konfiguration ihrer Homepage ein."
    echo 
"<br><br>"
    echo 
"<b>Allgemeine Konfigurationsdaten</b>"
    echo 
"<br><br>"
    echo 
"<form action='index.php?step=4' method='post'>"
    echo 
"<table width='100%'>"
    echo 
"<tr><td width='20%'>Domainname:</font></td><td>&nbsp;<input class='input' type='text' name='domain_name' size='32' value='$host' /></td></tr>"
    echo 
"<tr><td width='20%'>Websitename:</font></td><td>&nbsp;<input class='input' type='text' name='website_name' size='32' /></td></tr>"
    echo 
"<tr><td width='20%'>Pfad:</font></td><td>&nbsp;<input class='input' type='text' name='path_name' size='32' value='$path' /></td></tr>"
    echo 
"<tr><td width='20%'>E-Mail-Adresse:</font></td><td>&nbsp;<input class='input' type='text' name='email' size='32' /></td></tr>"
    echo 
"<tr><td width='20%'>Footer-Titel:</font></td><td>&nbsp;<input class='input' type='text' name='footer_name' size='32' /></td></tr>"
    echo 
"</table>"
    echo 
"<br>"
    echo 
"<b>Zugangsdaten für den Administrator:</b>"
    echo 
"<br /><br />"
    echo 
"<table width='100%'>"
    echo 
"<tr><td width='20%'>Username:</font></td><td>&nbsp;<input class='input' type='text' name='username' /></td></tr>"
    echo 
"<tr><td width='20%'>Passwort:</font></td><td>&nbsp;<input class='input' type='password' name='password' /></td></tr>"
    echo 
"<tr><td width='20%'>E-Mail-Adresse:</font></td><td>&nbsp;<input class='input' type='text' name='admin_email' /></td></tr>"
    echo 
"</table>"
    echo 
"<br />"
    echo 
"<input class='button' type='submit' value='Weiter'/>"
    echo 
"</form></div>"


// Step 4: create and fill in mysql-tables 
if ($step == '4') { 
    if (empty(
$dn) OR empty($email) OR empty($username) OR empty($md5_pass) OR empty($admin_email)) { 
        echo 
"<div><b>Fehlende Angaben</b></div>"
        echo 
"<div>"
        echo 
"Sie haben vergessen, ein oder mehrere Felder auszufüllen. Bitte korregieren sie ihre Angaben."
        echo 
"<br>"
        echo 
"<a href='index.php?step=3' style='text-decoration: none'>Zurück</a>"
        echo 
"</div>"
        exit(); 
    } 

    
mysql_query($create[abq]); 
    
mysql_query($insert[categories]); 

    echo 
"<div><b>Installation erfolgreich!</b></div>"
    echo 
"<div>"
    echo 
"Vielen Dank, dass Sie sich für MatzeCMS entschieden haben. Die Installation war erfolgreich. Bitte löschen Sie unbedingt den Ordner <b>install/</b>!"
    echo 
"<br><br>"
    echo 
"<a href='../index.php' style='text-decoration: none'>Zur Startseite</a>"
    echo 
"</div>"


// fertig 

?>
Er besteht aus mehreren Schritten. Als ertes wird die Installation gestartet, dann gehts weiter zur Datenbank. Hier bei entsteht eine config.php. Damit kann dann im nächsten Schritt die Tabellen und ihre Inhalte installieren. Im letztem Schritt wird hier in meinem Beispiel noch der Administrator angelegt.

Ich gebe zu, dass der Script nicht außergewönlich oder großartig ist. Jedoch zum Einstieg gut nachvollziehbar.
Die Sicherheit ist schon top. Über das Design kann man sich streiten. Braucht ein Installationsscript ein Design?
Wenn ja kann man beispielsweise eine .css einbinden, den Text, Links und Divs formatieren. Dann vielleicht noch ein Header-Logo, gescheide Weiter Buttons und Hintergrundbild.
Mein Tipp:
1. eine .css-Datei erstellen
2. in die <div>-Befehle die einzelnen Elemente aus der css mit id=example einbauen.
Wer eine CMS baut, sollte vielleicht noch ein License-Agreement vor der Datenbankkonfiguration einbauen und sich statt einen Header, ein Logo überlegen. Dann unten noch eine Copyright-Zeile und das ganze passt.

Ich werde vielleicht selber nochmal einen neueren Script mit Design und License-Agreement posten.

Aber zum rumbasteln reichts.

Liebe Grüße
FreeZoNe.
FreeZoNe1992 is offline  
Reply


Similar Threads Similar Threads
[ERROR] Mysql can't connect to local Mysql server through socket
11/06/2010 - Metin2 Private Server - 5 Replies
I just recently tried to configure a DNS server for MT2.. It came up with this error ERROR: 2002 (HY000): Can't connect to local Mysql server through socket '/tmp/mysql.sock' (2) Do I need to do a fresh installation of FBSD? :S Thanks.
MySQL Navicat 1130-Host'5.xxx.xx.xxx' is not allowed to connect to the MySQL Server
08/07/2010 - Metin2 Private Server - 14 Replies
Hallo com, ich habe ein Problem mit Navicat. Undzwar habe ich diesen Fehler hier : "1130-Host'5.xxx.xx.xxx' is not allowed to connect to the MySQL Server" seid gestern. Ich dachte mir mal ich änder mein Navicat Passwort um... Als ich dies getan habe, und meinen Server rebootet habe und Navicat neugestartet habe, und ich mich wieder in Navicat einloggen wollte kam diese Fehlermeldung. Nun habe ich das Problem das ich mich nicht mehr mit Navicat connecten kann. Habe schon alles versucht...
[Fehler]iMer´s Installationsscript
06/02/2010 - Metin2 Private Server - 4 Replies
Hallo liebe Community. Ich habe folgende Fehler die ich bekommen habe, nachdem ich iMer´s Script benutzt habe. 1. => http://www1.minpic.de/bild_anzeigen_thumb.php?img= 113813.jpg 2. => http://www1.minpic.de/bild_anzeigen_thumb.php?img= 113814.jpg Ich hoffe ihr könnt mir helfen :)



All times are GMT +2. The time now is 19:20.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.