Creare un installer con php

  • Creatore Discussione Creatore Discussione IImanuII
  • Data di inizio Data di inizio

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve a tutti, spiego il mio progetto.

Ho un sito che si appoggia a un db mysql.

Quando lo carico su un host devo a mano eseguire alcune operazioni, trovo carino che tali operazioni possano essere eseguite tramite un installer. (tipo quello di joomla per intenderci o phpbb3)

Le cose che dovrebbe fare questo installer sono

1. configurare la pagina connessione.php con i dati del db mysql
2. eseguire crea_tabella.php che popola il db

4. scrivere un numero in una variabile in 3 pagina php (ad esempio la variabile $numero=10 è presente in 3 file php e deve essere unguale in tutti e 3)

5. modificare un ulteriore variabile in due pagine.

Ho trovato googlando http://mkinstaller.nisu.org/ non ho ben capito cos'è e se è inerente al mio scopo.

Nel caso da dove posso cominciare?

Come può essere strutturato un installer così composto?
 
Direi che fa al caso tuo, ma usare un framework per creare uno script di installazione mi sembra esagerato. Quello che farei io è creare una cartella install con un file index.php contenente più o meno questo:
PHP:
<?php
$step = isset($_GET['step']) ? (int)$_GET['step'] : 1;

if (!is_file($path = __DIR__ . "/steps/{$step}.php")) {
    header('HTTP/1.0 404 Not Found');
    die('Impossibile trovare la pagina richiesta.');
}

require_once $path;
E poi creerei nella cartella steps i file 1.php, 2.php e così via.

A quel punto in ogni step devi mostrare un form e, quando viene inviato, eseguire le operazioni appropriate (es. scrivere in un file, creare il database...).
 
Una cosa: nel mio script non viene effettuato alcun controllo per verificare che il valore step sia un file contenuto nella cartella steps. Devi aggiungerlo, o esponi il tuo script ad attacchi di file inclusion.
 
Una cosa: nel mio script non viene effettuato alcun controllo per verificare che il valore step sia un file contenuto nella cartella steps. Devi aggiungerlo, o esponi il tuo script ad attacchi di file inclusion.

Perdonami l'inclusion funziona sullo stesso principio della sql injection? Cioè qualcuno potrebbe installare qualcosa sul mio host? :mavieni:
 
Purtroppo c'è qualcosa che non quadra.

per il momento non ho modificato il tuo codice e stavo creando i form.

Ho fatto come hai detto, la struttura è questa

index.php

steps/1.php

Solo che mi da sempre l'errore della pagina non trovata, che sbaglio?
 
Purtroppo c'è qualcosa che non quadra.

per il momento non ho modificato il tuo codice e stavo creando i form.

Ho fatto come hai detto, la struttura è questa

index.php

steps/1.php

Solo che mi da sempre l'errore della pagina non trovata, che sbaglio?

Ho risolto in questo modo:
PHP:
if (!is_file($path = "./steps/{$step}.php")) {

Non capisco perchè non andava così:
PHP:
if (!is_file($path = __DIR__ . "/steps/{$step}.php")) {
 

Discussioni simili