Creare un file PHP con PHP

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve,

devo fare una cosa particolare. Sto creando un file install dove inserendo dei dati in un form(i dati della connesione ald atabase) mi rei il file connect.php

sto usando fopen però ovvaimente il nome delle input me le riconosce come variabili e non mi prende i tag html. come si fa sta cosa? Strnamanete non sono risucito a trovare niente in giro.

posto la bozza del codice

PHP:
if(isset($_POST['Invia']) && !empty($_POST['Invia'])){
$file="connect.php";
$apro=fopen($file,"w");
$stringa="<?php <br> $DBhost = ".$_POST['DBhost'];
fwrite($apro,$stringa);
fclose($apro);
echo "Creato";
}

il file me lo crea ma non come vorrei il file connect.php deve crearsi così

PHP:
<?php
$DBhost=//qua il $_POST['host']
$DBuser=//qua $_POST['host']
//etc....
?>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Codice:
if(isset($_POST['Invia']) && !empty($_POST['Invia'])){
$file="connect.php";
$stringa="
<?php
\$DBhost = {$_POST['DBhost']};
\$DBuser = {$_POST['DBuser']};
//etc...
";
file_put_contents($file,$stringa);
echo "Creato";
}
Così? Se non è per uso privato devi filtrare le variabili perché altrimenti si puo inniettare codice php
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
Codice:
if(isset($_POST['Invia']) && !empty($_POST['Invia'])){
$file="connect.php";
$stringa="
<?php
\$DBhost = {$_POST['DBhost']};
\$DBuser = {$_POST['DBuser']};
//etc...
";
file_put_contents($file,$stringa);
echo "Creato";
}
Così? Se non è per uso privato devi filtrare le variabili perché altrimenti si puo inniettare codice php

è un file install per una patch di uno script distribuito free, quindi non viene eseguita sul mio di server ma sul server di chi si vuole installare la patch. cmq si ci metto poco a filtrare la variabile, era per capire come si crea o modifica un file php già esistenste con un istruzione php
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ok ci sono arrivato

basta usare l'apice singolo
questo epr crearlo da 0.
ho capito anche come sostituire una riga trattandolo come file di testo ed usando questo codice

PHP:
<?php
$nomeFile = 'connect.php';
$file = file($nomeFile,FILE_IGNORE_NEW_LINES);
var_dump($file);
$rigaDaSostituire = '$DBhost = "localhost";';
$rigaDiSostituzione = '$DBhost = "localhost";$DBhost = "pippo";';
$file = array_replace( $file, array_fill_keys(array_keys($file,$rigaDaSostituire),$rigaDiSostituzione) );
file_put_contents($nomeFile,implode("\n",$file));
?>

però ho un problema, non riescoa d andare a capo ne usando <br> ne usando \n e qusto ovviamente perchè sono codici html mentre il testo all'interno del file è php

come posso risolvere?

$DBhost = "pippo";

si deve piazzare dopo

$DBhost = "localhost";
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Prova con \r\n oppure PHP_EOL
PHP:
$rigaDaSostituire = "\$DBhost = 'localhost';";
$rigaDiSostituzione = "\$DBhost = 'localhost';\r\n\$DBhost = 'pippo';";
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ok funziona.
però se uso \r\n mi metyte una riga vuota in mezzo, invece basta usare\r .

sbagliavo la sintassi degli apici in sostanza.

Thank!!
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
premetto che sono quasi certo di sbagliare metodo. ho letto qualcosa al volo al riguardo dei file xml che probabilemente è il metodo giusto per fare quello che voglio, ma.................non ho molta testa per imparare questo se non necessario.

questo sistema di sostiuire le righe funziona con una riga semplice ma ad esempio se ho un file scritto cosi

puramente per esempio

PHP:
<?php
if(x=o){
$host='localhost';
}

e voglio aggiungere un altra ipotesi

PHP:
<?php
if(x==o){
$host='localhost';
}
if($x==1){
$host='pippo';
}

non so come fargli capire che dopo aver trovato $host='locahost' deve saltare una riga (dove è presente la graffa che chiude) e scrivere la riga dopo la graffa

non so se mi sono spiegato
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Se non vuoi complicarti le cose aggiungi semplicemente un identificatore quando lo vai a sostituire

Se per esempio vuoi sostituire il primo aggiungi 0){ se il secondo 1){

esempio grezzo
PHP:
$rigaDaSostituire = "
if(\$x==0){
\$host='localhost';
}
if(\$x==1){
\$host='pippo';
}";

echo str_replace("1){\r\n\$host='pippo';","1){\r\n\$host='lol';",$rigaDaSostituire);
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
Nefyt grazei delle risposte ma dato che non sono un seguace del copia incolla, mi fai capire questo passo?

non ci ho capito molto, cosa identifica lo 0 e l'1?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Nefyt grazei delle risposte ma dato che non sono un seguace del copia incolla, mi fai capire questo passo?

non ci ho capito molto, cosa identifica lo 0 e l'1?
Per identificatore intendo qualcosa di unico che si trova in quella linea per poter sostituire cosa c'è dopo, non è difficile da capire
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
detta cosi questa frase non mi suona molto bene ma quasi offensiva


comunque sia se leggevi bene quello che ho postato io devo inserire il codice dopo la parentesi graffa che va a capo dopo una riga di codice ed in quella pagina ho dozzine di parentesi graffe che vannoa capo. quindi identificare la riga diventa impossibile.

Dovrei prendere due righe quella con l'istruzione e quella con la graffa. o trovare la riga dell'istruzione e prima di aggiungere fargli saltare una riga.

Comunque ti ringrazio delle risposte ma non mi piace farmi dare dello scemo quindi tranquillo che me la trovo da me la risposta.

Grazie ugualmente.

Salud
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
detta cosi questa frase non mi suona molto bene ma quasi offensiva


comunque sia se leggevi bene quello che ho postato io devo inserire il codice dopo la parentesi graffa che va a capo dopo una riga di codice ed in quella pagina ho dozzine di parentesi graffe che vannoa capo. quindi identificare la riga diventa impossibile.

Dovrei prendere due righe quella con l'istruzione e quella con la graffa. o trovare la riga dell'istruzione e prima di aggiungere fargli saltare una riga.

Comunque ti ringrazio delle risposte ma non mi piace farmi dare dello scemo quindi tranquillo che me la trovo da me la risposta.

Grazie ugualmente.

Salud
Per identificatore non intendevo la parentesi graffa ma quello che c'è prima, forse l'esempio era poco azzeccato perché l'ho scritto velocemente, te ne faccio un altro
PHP:
$rigaDaSostituire ="1:var
2:var
3:var";

file_put_contents('lol.txt',str_replace("2:var","2:newvar",$rigaDaSostituire));

In questo caso dato che a tutte le linee ho :var l'identificatore sarà il numero prima, ora riporta questo esempio al numero che c'è prima della parentesi tonda nell'if e risolvi la matassa senza complicarti le cose

E poi perché ti avrei insultato o dato dello scemo lol? Ero di fretta e non mi sembrava molto difficoltoso da capire, forse ho sbagliato io a spiegare cosa intendevo boh
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
bè nel momento in cui uno mi dice "non mi sembra difficile da capire" mi sta dando dellpo scemo. cmq sia vabbò magari ho frainteso io.

cmq risolverò distribuendo il fiel modificato ed amen e nel momento mi studio un pò l'xml che dovrebbe fare al caso mio
 
Discussioni simili
Autore Titolo Forum Risposte Data
U PHP creare un file excel dopo ricerca nel DB PHP 0
S Libreria PHP per creare file dwg o dxf PHP 0
B funzioni per creare file e inserirli dentro una certa cartella in php? PHP 1
giannit [PHP] Creare pagina con collegamenti ipertestuali da file txt PHP 6
L [PHP] Creare un uploader di file csv xls e ricercare i risultati PHP 0
L [php e xml] per creare una galleria fotografica con diversi file xml PHP 0
romeocharly Creare un script/codice in php per collegare un id mysql con un file PHP 0
A creare file php PHP 1
V AIUTO: creare file php x form PHP 2
M Creare traccia di download file sul server HTML e CSS 2
W creare file .jar Java 2
Federico.Marcelo qual è il modo più semplice per creare file GIF di alta qualità? Webdesign e Grafica 4
andreas88 Creare file .htaccess per risolvere alcuni problemi con il tester SEO SEO e Posizionamento 0
SebaGravi Creare file per ogni news presente nel DB SEO e Posizionamento 2
F come creare un search box coi file .xml dei merchant? XML 0
romeocharly E' possibile creare un collegamento tra un id di db mysql ed un file per il download? PHP 0
Monital Creare file json PHP 2
T creare file xml Programmazione 6
T creare una serie di combobox e text box e che salvano un file di text sul disco si può ? Visual Basic 1
P come creare un file asp Classic ASP 1
I Creare file immagine da testo base64 PHP 2
C File html con procedure javascript per creare effetto libro da sfogliare Javascript 9
L Creare proprietario, gruppi e utenti per permessi cartella e file PHP 4
J Creare un file .xls PHP 1
J Creare file html da un form in area riservata PHP 9
O Software per creare una galleria di file .SWF Flash 1
M creare file .txt, salvarci informazioni e rileggere il contenuto Java 1
F Creare un file in PDF Windows e Software 4
G Aiuto per creare un form di invio file Classic ASP 3
Z Creare File xls con le classi PHP 0
A Creare un file Programmazione 2
R Creare un file di Microsoft Word con ASP : Testo Ok. E le immagini? Classic ASP 1
M Creare link a file dinamicamente Classic ASP 1
L Creare File Pdf PHP 2
B Che file devo creare???? Classic ASP 1
I creare file txt PHP 3
E Creare un testo trasparente dietro un div HTML e CSS 5
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1

Discussioni simili