Per quanto riguarda il download del file basta aggiungere nell'header
PHP:
header("Content-type: application/vnd.ms-word");
Per quello che richiedi sarebbe opportuno definire meglio le directory, il numero progressivo etc...
Piccola Classe che gestisce il tutto senza DB, non performante in quanto potresti salvare il numero progressivo in un file separato o in un DB, ma funziona, è facile da capire ed è estensibile:
PHP:
<?php
/**
* Created by PhPS.
* User: Marco Arena Di R.
* Date: 16/04/2018
* Time: 12:02
*/
/**
* Class Gen_number
*/
class Gen_number {
/**
* @var string
*/
private $path='generate';
/**
* @var array
*/
private $lists_file=[];
/**
* @var int
*/
private $n_zero=3;
/**
* @var int
*/
private $current_item=0;
/**
* @var string
*/
public $file_name='';
/**
* @var string
*/
public $ext='.doc';
/**
* Gen_number constructor.
*
* @param string $file_name
* @param array $options
*/
public function __construct($file_name='_file',$options=[]) {
$this->file_name=$file_name;
if(!empty($options)){
foreach ($options as $k=>$option)if(property_exists($this,$k))$this->$k=$option;
}
$this->init();
}
/**
* Inizializza la definizione del nome del file
*/
public function init(){
$file=scandir($this->path);
foreach ($file as $items){
if($items!='' && $items!='..')$this->lists_file[]=$items;
}
$this->create_name_file();
}
private function create_name_file(){
$this->current_item=count($this->lists_file);
if($this->current_item==0 || empty($this->current_item))$this->current_item=1;
$this->generate_zeros();
}
private function generate_zeros(){
$temp_file_name='';
$zeros=$this->n_zero-(strlen($this->current_item));
if($zeros<0)$zeros=1;
for($i=0;$i<$zeros;$i++)$temp_file_name.='0';
$this->file_name=$temp_file_name.$this->current_item.$this->file_name.$this->ext;
}
/**
* Salva il file
* @param string $string_output Stringa contenente il contenuto da salvare
*/
public function create_docs($string_output){
file_put_contents($this->path.'/'.$this->file_name,$string_output);
}
/**
* Torna la stringa salvata nel file nel percorso di this-path
* @return bool|string
*/
public function create_download_file(){
return file_get_contents($this->path.'/'.$this->file_name);
}
}
Mentre il file che richiama i metodi della classe è questa:
PHP:
/**
* Created by PhPS.
* User: Marco Arena Di R.
* Date: 16/04/2018
* Time: 12:01
*/
include_once('Gen_number.php');
$gen_file=new Gen_number('_nome_uno');
$gen_file->create_docs('marcolino lino lero');
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=".$gen_file->file_name);
header("Pragma: no-cache");
header("Expires: 0");
echo $gen_file->create_download_file();
Manca di documentazione, ma è talmente semplice che non necessita di spiegazioni!