Modifica valori stringhe di un altro file

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
ciao! in una classe ho memorizzato delle variabili statiche che contengono i dati del db, richiamabili quindi in altri script.

vorrei però modificare questi dati dall'esterno, tramite un form: come faccio??

pensavo con str_replace ma non funziona!
 

lotus

Utente Attivo
5 Mag 2009
543
8
0
Forse sarebbe meglio inserire questi parametri (crittografati) in un file e inibire l'accesso ad esso tramite il webserver consentono la mofidica solo ai file php del tuo host.

Ciao, Ciro
 

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
però vorrei proprio poterli modificare! un pò come avviene con joomla: dall'amministrazione vai in "configurazione" e cambi tutto da un form!
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Che problema ti da con str_replace()?
Comunque dovrebbe bastare aprire il file di configurazione tramite la funzione file_get_contents() ed utilizzare il substr_replace() dopo aver individuato la posizione iniziale e finale della sottostringa da sostituire.
 

nephilim89

Utente Attivo
24 Mar 2010
64
5
0
posto il codice. file config.php, dove ci sono tutte le variabili:

PHP:
class config{
#database
static $db_name = "name";
static $db_user = "user";
static $db_pass = "pass";
static $db_host = "localhost";
}
file che modifica:
PHP:
include('config.php');
..
..
<td><input type="text" name="db_name" value="'.config::$db_name.'"></td>
</tr><tr>
<td><label for="db_user">Username:</label></td>
<td><input type="text" name="db_user" value="'.config::$db_user.'"></td>		
</tr><tr>
<td><label for="db_pass">Password:</label></td>
<td><input type="text" name="db_pass" value="'.config::$db_pass.'"></td>
</tr><tr>
<td><label for="db_host">Host:</label></td>
<td><input type="text" name="db_host" value="'.config::$db_host.'"></td>
..
config::$db_name=str_replace(config::$db_name,$_POST['db_name'],config::$db_name);
non è che le proprietà statiche non possono essere modificate??
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
In questo modo effettui la modifica dei dati a runtime. Se vuoi rendere persistenti le modifiche devi lavorare direttamente sul file config.php accedendo al suo contenuto tramite la funzione file_get_contents() effettuarel le sostituzioni e poi sovrascrivere il file config.php originale con quello modificato. Un cosa del genere:

PHP:
$content = file_get_contents('config.php');

// $content = stringa valorizzata col contenuto del file config.php

// Effettui le sostituzioni all'interno di $content con substr_replace()

// Salvi il nuovo config.php
$fp = fopen('config.php, 'w');
fwrite($fp, $content);
fclose($fp);