PDA

View Full Version : (PHP HELP) Creare file da pagina PHP


born2mod
23-12-2003, 14:40
Ciao a tutti.
Devo creare uno script che mi permetta di creare e uploaddare automaticamente su server, un file .php che cambia ogni volta in base alle mie scelte.

Per creare un file vuoto si usa questa funzione

<?
touch("nome_cartella/nome_file.php")
?>

Ma il problema è che il file io non lo voglio vuoto........... e credo esista un modo per creare un file NON VUOTO con una sola stringa di codice.

Grazie a tutti quelli che risponderanno!!!

born2mod
23-12-2003, 15:07
Mi sà che c'entrano qualcosa queste funzioni:

fopen();
fwrite();
fclose();

Ma nessuno le ha mai usate?

born2mod
23-12-2003, 17:07
Ma visto che nessuno el frattempo mi ha risposto mi dò la risposta da solo!! :D

<?php
$handle = fopen ("/home/rasmus/file.txt", "r");
$handle = fopen ("/home/rasmus/file.gif", "wb");
$handle = fopen ("http://www.example.com/", "r");
$handle = fopen ("ftp://user:[email protected]/somefile.txt", "w");
?>

Anche se non sono riuscito ancora a capire come posso mettere la pagina php che si genererà da sola!

VICIUS
23-12-2003, 18:27
pagina php che si genera ogni volta ?? cosa intendi. sei stato un po vago. non ho la piu pallida idea di quello che hai intenzione di fare.

ciao ;)

born2mod
23-12-2003, 19:27
Ti spiego meglio. Io uso uno script di statistiche molto famoso e mi sono accorto che per rendere molto più veloce il lavoro di inserimento dei download devo modificarlo, in quanto mi appoggio su dei file php esterni e non direttamente sul file .exe. Per problemi di download manager, bisognerebbe creare un piccolissimo script che generi automaticamente questo file .php in base ai dati che vengono immessi prima. Il mio problema è quindi generare automaticamente dei file.php indipendenti, ma diversi in quanto differenziano dall'ID di rifererimento.

Io avevo pensato ad una cosa del genere:

<?
$page = "CODICE SORGENTE DELLA PAGINA";
$handle = fopen ("/web/htdocs/www.tuosito.it/$nomepagina", "a");
fwrite($handle, "$page");

?>

Purtroppo non sono ancora riuscito a farlo funzionare in quanto non riesco a fargli leggere il codice php nella variabile $page...

Il codice da mettere in $page è questo:


<html>
<head>

<?php
$option['host']=""; // Indirizzo server MySQL o IP
$option['database']=""; // Nome database MySQL
$option['user_db']=""; // Utente MySQL
$option['pass_db']=""; // Password MySQL

// tento la connessione a mysql
$error['no_connection']="<b>ERRORE</b>: Non riesco a connettermi a MySQL!.";
$error['no_database']="<b>ERRORE</b>: Il database indicato non esiste! Il database va creato prima di effettuare l'installazione.";
$db=@mysql_connect($option['host'],$option['user_db'],$option['pass_db']) or die($error['no_connection']);
@mysql_select_db($option['database']) or die($error['no_database']);
$query = "SELECT `id` , `nome` , `exe` FROM `stats_downloads` WHERE `id` = $id LIMIT 0 , 1 ";
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result))
// rivela il nome del file
{echo "
<meta http-equiv=\"refresh\" content=\"2;URL=$row[exe]\"></head>
<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.tuosito.it/style/style.css\">
<body>
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td height=\"65\" background=\"/style/bgdownload.jpg\">Il download di <strong>$row[nome]
</strong>
sta per essere avviato.<br>
Se entro 5 secondi il download non &egrave; ancora partito clicca <a href=\"$row[exe]\">qui</a>
<br><br>
<div align=\"center\"><input type=\"button\" name=\"Chiudi\" value=\"Chiudi\" onClick=\"parent.close();\"></div>
</td>

</table>
" ;}

mysql_close();
?>

</body>
</html>

VICIUS
23-12-2003, 22:50
mhm. forse ho capito. le Heredoc strings potrebbero fare al caso tuo.
qui ci sono piu info ed esempi: http://it2.php.net/types.string
funzionano piu o meno cosi:
$codice_html = <<<EOD
<html>
<head>
[...]
</html>
EOD;

fwrite ($codice_html);



ciao ;)

born2mod
24-12-2003, 11:38
Abbandono l'idea in quanto la ritengo troppo laboriosa....
ora stò studiando un metodo secondo me più efficace basato su un file download.php che controlla direttamente i click ai download!!

Grazie comunque per la risposta!! Mi servirà!

Max 555
24-12-2003, 11:39
Ma il problema è che il file io non lo voglio vuoto........... e credo esista un modo per creare un file NON VUOTO con una sola stringa di codice.


devi fare un fopen("nomefile.ext",$mode)


http://it.php.net/manual/en/function.fopen.php

poi lo upi con le varie funzioni ftp

Ciao!

born2mod
24-12-2003, 11:41
Originariamente inviato da Max 555
devi fare un fopen("nomefile.ext",$mode)


http://it.php.net/manual/en/function.fopen.php

poi lo upi con le varie funzioni ftp

Ciao!


Ehe abbiamo postato insieme comunque il problema non è la creazione e l'upload del file php ma la modifica in quanto deve prendere il codice HTML elaborato in una variabile.... ma non è possibile... ora stò studiando un altro metodo!!!

Ciauz

Max 555
24-12-2003, 12:51
elaborare del codice html?

eval($stringa)

born2mod
24-12-2003, 14:02
Buono come metodo...
ho scoperto che esiste anche la funzione eregi_replace() che esegue la stessa funzoina di eval()...

Ora vedo di interagirlo usando una variabile tipo

www.nomesito.it/download.php?id=10

in poche parole il file php deve leggere l'ID di riferimento e creare una pagina con la funzione eval() o eregi_replace() in base all'ID specificato!

Max 555
24-12-2003, 14:48
non ho capito precisamente che devi fare :P

a seconda del valore passato ( magari via post e hashato ;-) ) devi creare un'altra pagina?

io ho usato eval, ora controllo che cambia da eregi_replace

cionci
24-12-2003, 14:48
Non capisco perchè tu debba creare una nuova pagina dentro ad un file...

Non ti basta fare un file download.php che prende l'id del download...

Prende dal database l'url...
Entro 5 secondi (sempre con il meta tag) fa partire il link da cui fare il download...

born2mod
24-12-2003, 15:29
Originariamente inviato da cionci
Non capisco perchè tu debba creare una nuova pagina dentro ad un file...

Non ti basta fare un file download.php che prende l'id del download...

Prende dal database l'url...
Entro 5 secondi (sempre con il meta tag) fa partire il link da cui fare il download...

il problema è che se faccio partire subito il download il file verrà scaricato con Internet Explorer... mentre facendo un redirect il file verrà scaricato con il proprio download manager...

La soluzione è il meta tag!! Ma mi sono bloccato qui per la realizzazione :(

cionci
24-12-2003, 15:51
Ma per usare il meta tag perchè scrivere una apgina php in file ?
Non puoi far caricare il link direttamente dalla pagine che invia anche il metatag ?
[code]

Ti passi l'id del download e poi recuperi $row["exe"]
e poi semplicemente stampi ilemtatag a schermo...

echo "<meta http-equiv=\"refresh\" content=\"2;URL=$row[exe]\"></head>
<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.tuosito.it/style/style.css\">
<body>
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td height=\"65\" background=\"/style/bgdownload.jpg\">Il download di <strong>$row[nome]
</strong>
sta per essere avviato.<br>
Se entro 5 secondi il download non è ancora partito clicca <a href=\"$row[exe]\">qui</a>
<br><br>
<div align=\"center\"><input type=\"button\" name=\"Chiudi\" value=\"Chiudi\" onClick=\"parent.close();\"></div>
</td>

</table>";

born2mod
24-12-2003, 17:30
Hai ragione!!

Era una cosa talmente semplice che non mi ricordavo esistesse +!!!
:rolleyes: Va bè grazie cionci che mi hai illuminato!!!

Sai le vacanze fanno brutti scherzi!!!