• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Installskript

  • Ersteller Ersteller Cryspy
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
C

Cryspy

Guest
Hi,
Bei vielen Sachen, wie zum Bsp. CMSs und Foren gibt es Installationsskripte. Dort gibt man den Namen und das PW der Datenbank ein. Nichts besonders im Prinzip, aber wie funktioniert das? Denn in den Skripten ist ja kein festes PW für die DB. Wie "schreibt" also das Install-Skript das PW in die anderen Skripts?

cryspy
 
einfach ne config datei oder sowas erstellen die dann ausgelesen wird

mit den file operationen kannst ja ne ini oder xml anlegen und die dann im "Main" auslesen.
 
Es gibt meistens eine config.php, wo das Passwort reingeschrieben wird. Wenn nun alle Dateien diese Dateie includen ist es kein Problem mehr, sich in die Datenbank einzuloggen.
 
Hab das auch mal gemacht. Habe die config Datei mit PHP einfach nochmal durchparsen lassen und die Werte aus dem Install-Formular eingetragen. Teilweise woll ich den Kram so DAU Sicher bauen wie möglich. Daher hab ich zb. noch solche Faxen mit eingebaut dass User XY nicht mehr rausfinden muss ob auf dem Server zb. PHP läuft. Hatte mein Skript auch gleich mit erledigt.

Wobei es mich mal interessieren würde, wie man rausfinden kann, ob zugleich MySQL auf dem Server läuft. mysql_get_client_info() liefert ja blos die Bibliotheken des Clients oder reicht das etwa schon?

MfG

NewLord
 
Wobei es mich mal interessieren würde, wie man rausfinden kann, ob zugleich MySQL auf dem Server läuft. mysql_get_client_info() liefert ja blos die Bibliotheken des Clients oder reicht das etwa schon?

MfG

NewLord

das ist relativ leicht, indem man einfach einen gewollten fehler in der datenbank produziert (z.b. ein tabelle abfragen, die nicht existiert) und die rückmeldung interpretiert. kommt eine sql-fehler meldung, kann man relativ sicher sein, dass sql läuft.
 
Interessant. Auf den Gedanken bin ich noch gar nicht gekommen. Meinteste denn, dass man die Fehlermeldung die zurückkommt auf bestimmte Strings überprüfen sollte?

MfG

NewLord
 
also bei mir ist es so, dass ich erstmal prüfe ob die MySQL - Bibliothek existiert:
PHP:
<?php
echo function_exists("mysql_connect") ? "mysql-lib existiert" : "keine mysql-lib!"; 
?>
dann kannst einfach prüfen ob der server läuft:
PHP:
<?php
echo fsockopen("localhost",3306,$er,$en,2) ? "MySQL läuft" : "MySQL läuft nicht!";
?>
 
sinnig wäre entweder eine .php file anzulegen, oder eine ini, php bietet dir das werkzeug parse_ini_file dafür an.
achte aber darauf, dass man die datei nicht runterladen kann.
 
Wenn du einen Installer machen willst, kannst du das so machen:

PHP:
<?php if(!$_POST["step"]=="1"){
echo'<form method="post" action=""><table><tr><td>Datenbank Host</td><td><input name="db_host" value="" size="30"></td></tr>
<tr><td>Datenbank</td><td><input name="db_db" value="" size="30"></td></tr><tr><td>Username</td><td><input name="user" size="30"></td></tr><tr><td>Passwort</td><td><input name="pass" size="30"></td></tr>
<tr><td>Prefix</td><td><input name="prefix" size="30"></td></tr><tr><td>Aktionen</td><td><input type="submit" value="Okay"></td></tr></table><input type="hidden" value="1" name="step"></form>';
}elseif($_POST["step"]=="1"){
if(mysql_connect($_POST["db_host"], $_POST["user"], $_POST["pass"] && mysql_select_db($_POST["db_db"])){
echo"Datenbank erfolgreich gewählt!";
echo"Datenbank einträge erstellen";
$query="    CREATE  TABLE `".$_POST["prefix"]."_table` ( `id` INT( 10  )  NOT  NULL  AUTO_INCREMENT ,
 `name` VARCHAR( 25  )  NOT  NULL ,
 `date` VARCHAR( 25  )  NOT  NULL ,
 PRIMARY  KEY (  `id`  ) ) ENGINE  =  MYISAM";
if(mysql_query($query)){
echo"Installation abgeschlossen!";
}else{
echo mysql_error;
}
}
?>


Das ist eigentlich der Grundcode!

(Muss moch Modifiziert werden!)
 
Okay, so stimmt es:

PHP:
   <?php if(!$_POST["step"]=="1"){
echo'<form method="post" action=""><table><tr><td>Datenbank Host</td><td><input name="db_host" value="" size="30"></td></tr>
<tr><td>Datenbank</td><td><input name="db_db" value="" size="30"></td></tr><tr><td>Username</td><td><input name="user" size="30"></td></tr><tr><td>Passwort</td><td><input name="pass" size="30"></td></tr>
<tr><td>Prefix</td><td><input name="prefix" size="30"></td></tr><tr><td>Aktionen</td><td><input type="submit" value="Okay"></td></tr></table><input type="hidden" value="1" name="step"></form>';
}elseif($_POST["step"]=="1"){
if(@mysql_connect($_POST["db_host"], $_POST["user"], $_POST["pass"])){
echo"Datenbank erfolgreich gewählt!";
echo"Datenbank einträge erstellen";
$query="    CREATE  TABLE `".$_POST["prefix"]."_table` ( `id` INT( 10  )  NOT  NULL  AUTO_INCREMENT ,
`name` VARCHAR( 25  )  NOT  NULL ,
`date` VARCHAR( 25  )  NOT  NULL ,
PRIMARY  KEY (  `id`  ) ) ENGINE  =  MYISAM";
if(mysql_query($query)){
echo"Installation abgeschlossen!";
}else{
echo ''.mysql_error.'';
}
}else{
echo"Datenbank Daten Falsch, bitte erneut eingeben!";
}
}
?>

Er trägt es bei mir nicht ein, aber das kannst du ja dann Fertig machen ;)
 
Wie ich mir nen Installer basteln kann weiß ich und dein Code ist offen wie ein Scheunentor für XSS und SQL Injections.

1. Never trust incoming data
2. Daten escapen [htmlspecialchars() und mysql_real_escape_string() nutzen]
3. Quellcode einrücken

MfG

NewLord
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben