Salvare file dentro percorso specifico avendo xampp su server locale

di il
2 risposte

Salvare file dentro percorso specifico avendo xampp su server locale

Buonasera,

tramite questo php popolo un pdf e lo salvo nel client dell'utente. Il salvataggio avviene nella cartella di download del browser del cliente.

<?php
// Includi il file di connessione al database
require('fpdm.php');
include 'db_connect2.php';

// Avvio della sessione
session_start();

// Controllo se l'utente è autenticato
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
    // Reindirizzamento alla pagina di login se l'utente non è autenticato
    header("Location: login.php");
    exit;
}

// Recupero il nomeutente e il nome dell'utente dalla sessione
$id_utente = $_SESSION['id'];
$nomeUtente = $_SESSION['username'];
$nomeuser = $_SESSION['nome'];
$cognome = $_SESSION['cognome'];
$filiale = $_SESSION['filiale'];

// Inizializzazione della variabile permessi
$permessi = 0;

// Recupero il ruolo dell'utente dalla tabella users
$query = "SELECT permessi, id, filiale FROM users WHERE username = '$nomeUtente'";
$result = mysqli_query($conn, $query);

// Controllo se la query ha restituito risultati
if ($result && mysqli_num_rows($result) == 1) {
    $row = mysqli_fetch_assoc($result);
    $permessi = $row['permessi'];
    $id_user = $row['id'];
    $filiale = $row['filiale'];
}

// Verifica il ruolo dell'utente
$ruolo = ($permessi == 9) ? "AMMINISTRATORE" : "DIPENDENTE";
$filialeuser = ($filiale == 1) ? 'Palermo' : 'Catania';

if (isset($_POST['rapporto'])) {
    // Ottieni i valori inviati dal form
	$selectedRapporto = rtrim($_POST['rapporto']);
	$nr_socio = rtrim($_POST['socio']);
	$ndg = rtrim($_POST['ndg']);
	$dt_dlb_conf = rtrim($_POST['dt_dlb_conf']);
	$mcc_si_no = rtrim($_POST['mcc_si_no']);
	$rating_mcc = rtrim($_POST['rating_mcc']);
	$banca = rtrim($_POST['banca']);
	$formatecnica = rtrim($_POST['formatecnica']);
	$importo_fin = rtrim($_POST['importo_fin']);
	$durata_disp = rtrim($_POST['durata_disp']);
	$perc_gar = rtrim($_POST['perc_gar']);
	$cognomenomelr = rtrim($_POST['cognomenomelr']);
	$anagrafica = rtrim($_POST['anagrafica']);
	$parametri_190 = rtrim($_POST['parametri_190']);
	$cap_soc_def = rtrim($_POST['cap_soc_def']);
	$acq_gar_def = rtrim($_POST['acq_gar_def']);
	$istr_att_def = rtrim($_POST['istr_att_def']);
	$totalegest = rtrim($_POST['totalegest']);
	$totalegestLettere = rtrim($_POST['totalegestLettere']);
	$iban_f_gestione = rtrim($_POST['iban_f_gestione']);
	$parametri_fondorischi = rtrim($_POST['parametri_fondorischi']);
	$totalerischi = rtrim($_POST['totalerischi']);
	$totalerischiLettere = rtrim($_POST['totalerischiLettere']);
	$iban_f_rischi = rtrim($_POST['iban_f_rischi']);
	$filialeuser = rtrim($_POST['filialeuser']);
   
   
        // Template PDF - nome del file template
        $templatePath = 'modulistica/disposizioni.pdf';
		
		// Converti il valore "aaaammgg" in "gg/mm/aaaa" in una riga
		$data_ggmmaaaa = substr($dt_dlb_conf, 6, 2) . '/' . substr($dt_dlb_conf, 4, 2) . '/' . substr($dt_dlb_conf, 0, 4);
		$dataoggi = date('d/m/Y');
		
				

        // Dati per il popolamento del PDF
        $data = array(
            'rapporto' => $selectedRapporto,
			'nr_socio' => $nr_socio,
			'ndg' => $ndg,
			'data_del_conf' => $data_ggmmaaaa,
			'mcc_si_no' =>$mcc_si_no,
			'rating_mcc' => $rating_mcc,
			'banca' => $banca,
			'formatecnica' => $formatecnica,
			'importo_fin' => $importo_fin,
			'durata_disp' => $durata_disp,
			'perc_gar' => $perc_gar,
			'cognomenomelr' => $cognomenomelr,
			'azienda' => $anagrafica,
			'190' => $parametri_190,
		    'cap_soc_def' => $cap_soc_def,
		    'acq_gar_def' => $acq_gar_def,
		    'istreatt_gar_def' => $istr_att_def,
		    'totalegest' => $totalegest,
		    'gestionetotaleinlettere' => $totalegestLettere,
		    'iban_f_gestione' => $iban_f_gestione,
		    'fdo_rischi' => $parametri_fondorischi,
		    'totalerischi' => $totalerischi,
		    'rischitotaleinlettere' => $totalerischiLettere,
		    'iban_f_rischi' => $iban_f_rischi,
		    'filiale' => $filialeuser,
			'dataoggi' => $dataoggi,
        );

        // Popola il template PDF con i dati e ottieni il contenuto del nuovo PDF
        try {
            $pdfPreventivo = new FPDM($templatePath);
            $pdfPreventivo->Load($data, false); // Il secondo parametro 'false' indica che il file output non viene creato come stringa
            $pdfPreventivo->Merge();

            ob_clean();

            // Imposta la codifica dei caratteri nel PDF come UTF-8
			header('Content-Type: application/pdf; charset=UTF-8');
			header('Content-Disposition: attachment; filename="disposizioniok.pdf"');
			$pdfPreventivoContent = $pdfPreventivo->Output('S');

            // Inizia il download del PDF nel browser del client
            header('Content-Type: application/pdf');
            header('Content-Disposition: attachment; filename="disposizioniok.pdf"');
            echo $pdfPreventivoContent;
            exit;
        } catch (Exception $e) {
            echo "Errore durante la generazione del preventivo: " . $e->getMessage();
        }

    } else {
        // Se non ci sono risultati per il rapporto selezionato, mostra un messaggio di avviso
        echo '<p>Nessun risultato trovato per il rapporto selezionato.</p>';
    }


// Chiudi la connessione al database
mysqli_close($conn);
?>

Quello che desidero io è invece di salvarlo li, di salvarlo in un percorso specifico. 

Il progetto è su Server LOCALE Windows e utilizzo XAMPP e verrà utilizzato in locale da i pc collegati in rete e quindi avrei tutti i permessi di questo mondo sul server.

il progetto è su XAMPP dentro la cartella htdocs (c:/xampp/htdocs/ )

per salvare il file vorrei utilizzare l'ip del server locale così da evitare problemi sui nomi del server collegati a ciascun client perchè magari qualcuno l'avrà collegato come ServerHP altri come ServerAzienda mentre utilizzando l'ip andiamo sul sicuro.

quindi la cartella di destinazione del file dovrà essere \\xx.xx.xx.xx\c:\documenti\

ma mi da errore che non trova la cartella.

Perchè? 

2 Risposte

  • Re: Salvare file dentro percorso specifico avendo xampp su server locale

    La cartella deve essere condivisa e indicata con

    \\x.x.x.x\nomecondivisione 

  • Re: Salvare file dentro percorso specifico avendo xampp su server locale

    01/08/2023 - oregon ha scritto:


    La cartella deve essere condivisa e indicata con

    \\x.x.x.x\nomecondivisione 

    la cartella è condivisa ed infatti è raggiungibile da tutti i client della rete. 

    nel mio esempio se la volessi raggiungere dal mio client avrei questo percorso “Z:\ServCredimpresa\UFFICIO FIDI\Disposizioni”

    dove Z è l'unità che gli ho assegnato che punta a \\ipdelserver\Documenti\ e poi via via il percorso sopra descritto .

    Ora siccome ciascun client può avere la lettera dell'unità che desidera, pensavo di utilizzare direttamente l'ip del server per evitare problemi.

    se faccio puntare la variabile $cartellaprova a ‘temp\prova’ e questa cartella e sottocartella si trova dentro htdocs allora funziona tutto e lo salva anche li dentro.

    se invece la variabile $cartellaprova la faccio puntare così $cartellaProva = '\\IPDELSERVER\Documenti\prova'; creando una cartella prova appositamente… NON MI SALVA NULLA. Ho anche provato a risalire alla root con $cartellaProva = '..\..\Documenti\prova'; ma nulla 

    Ecco lo script con la variabile 

    <?php
    // Includi il file di connessione al database
    require('fpdm.php');
    include 'db_connect2.php';
    
    // Avvio della sessione
    session_start();
    
    // Controllo se l'utente è autenticato
    if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) {
        // Reindirizzamento alla pagina di login se l'utente non è autenticato
        header("Location: login.php");
        exit;
    }
    
    // Recupero il nomeutente e il nome dell'utente dalla sessione
    $id_utente = $_SESSION['id'];
    $nomeUtente = $_SESSION['username'];
    $nomeuser = $_SESSION['nome'];
    $cognome = $_SESSION['cognome'];
    $filiale = $_SESSION['filiale'];
    
    // Inizializzazione della variabile permessi
    $permessi = 0;
    
    // Recupero il ruolo dell'utente dalla tabella users
    $query = "SELECT permessi, id, filiale FROM users WHERE username = '$nomeUtente'";
    $result = mysqli_query($conn, $query);
    
    // Controllo se la query ha restituito risultati
    if ($result && mysqli_num_rows($result) == 1) {
        $row = mysqli_fetch_assoc($result);
        $permessi = $row['permessi'];
        $id_user = $row['id'];
        $filiale = $row['filiale'];
    }
    
    // Verifica il ruolo dell'utente
    $ruolo = ($permessi == 9) ? "AMMINISTRATORE" : "DIPENDENTE";
    $filialeuser = ($filiale == 1) ? 'Palermo' : 'Catania';
    
    if (isset($_POST['rapporto'])) {
        // Ottieni i valori inviati dal form
    	$selectedRapporto = rtrim($_POST['rapporto']);
    	$nr_socio = rtrim($_POST['socio']);
    	$ndg = rtrim($_POST['ndg']);
    	$dt_dlb_conf = rtrim($_POST['dt_dlb_conf']);
    	$mcc_si_no = rtrim($_POST['mcc_si_no']);
    	$rating_mcc = rtrim($_POST['rating_mcc']);
    	$banca = rtrim($_POST['banca']);
    	$formatecnica = rtrim($_POST['formatecnica']);
    	$importo_fin = rtrim($_POST['importo_fin']);
    	$durata_disp = rtrim($_POST['durata_disp']);
    	$perc_gar = rtrim($_POST['perc_gar']);
    	$cognomenomelr = rtrim($_POST['cognomenomelr']);
    	$anagrafica = rtrim($_POST['anagrafica']);
    	$parametri_190 = rtrim($_POST['parametri_190']);
    	$cap_soc_def = rtrim($_POST['cap_soc_def']);
    	$acq_gar_def = rtrim($_POST['acq_gar_def']);
    	$istr_att_def = rtrim($_POST['istr_att_def']);
    	$totalegest = rtrim($_POST['totalegest']);
    	$totalegestLettere = rtrim($_POST['totalegestLettere']);
    	$iban_f_gestione = rtrim($_POST['iban_f_gestione']);
    	$parametri_fondorischi = rtrim($_POST['parametri_fondorischi']);
    	$totalerischi = rtrim($_POST['totalerischi']);
    	$totalerischiLettere = rtrim($_POST['totalerischiLettere']);
    	$iban_f_rischi = rtrim($_POST['iban_f_rischi']);
    	$filialeuser = rtrim($_POST['filialeuser']);
       
       
            // Template PDF - nome del file template
            $templatePath = 'modulistica/disposizioni.pdf';
    		
    		// Converti il valore "aaaammgg" in "gg/mm/aaaa" in una riga
    		$data_ggmmaaaa = substr($dt_dlb_conf, 6, 2) . '/' . substr($dt_dlb_conf, 4, 2) . '/' . substr($dt_dlb_conf, 0, 4);
    		$dataoggi = date('d/m/Y');
    		
    				
    
            // Dati per il popolamento del PDF
            $data = array(
                'rapporto' => $selectedRapporto,
    			'nr_socio' => $nr_socio,
    			'ndg' => $ndg,
    			'data_del_conf' => $data_ggmmaaaa,
    			'mcc_si_no' =>$mcc_si_no,
    			'rating_mcc' => $rating_mcc,
    			'banca' => $banca,
    			'formatecnica' => $formatecnica,
    			'importo_fin' => $importo_fin,
    			'durata_disp' => $durata_disp,
    			'perc_gar' => $perc_gar,
    			'cognomenomelr' => $cognomenomelr,
    			'azienda' => $anagrafica,
    			'190' => $parametri_190,
    		    'cap_soc_def' => $cap_soc_def,
    		    'acq_gar_def' => $acq_gar_def,
    		    'istreatt_gar_def' => $istr_att_def,
    		    'totalegest' => $totalegest,
    		    'gestionetotaleinlettere' => $totalegestLettere,
    		    'iban_f_gestione' => $iban_f_gestione,
    		    'fdo_rischi' => $parametri_fondorischi,
    		    'totalerischi' => $totalerischi,
    		    'rischitotaleinlettere' => $totalerischiLettere,
    		    'iban_f_rischi' => $iban_f_rischi,
    		    'filiale' => $filialeuser,
    			'dataoggi' => $dataoggi,
            );
    			$cartellaProva = '\\IPDELSERVER\Documenti\prova';
    
    
            // Popola il template PDF con i dati e ottieni il contenuto del nuovo PDF
            try {
                $pdfPreventivo = new FPDM($templatePath);
                $pdfPreventivo->Load($data, false); // Il secondo parametro 'false' indica che il file output non viene creato come stringa
                $pdfPreventivo->Merge();
    
                ob_clean();
    
                // Imposta la codifica dei caratteri nel PDF come UTF-8
    			header('Content-Type: application/pdf; charset=UTF-8');
    			header('Content-Disposition: attachment; filename="disposizioniok.pdf"');
    			$pdfPreventivoContent = $pdfPreventivo->Output('S');
    
    			// Salva il PDF nella cartella "prova"
    			$nomeFilePDF = 'disposizioniok.pdf';
    			$percorsoFilePDF = $cartellaProva . '/' . $nomeFilePDF;
    			file_put_contents($percorsoFilePDF, $pdfPreventivoContent);
    
    			// Termina lo script senza generare l'output del PDF nel browser
    			exit;
            } catch (Exception $e) {
                echo "Errore durante la generazione del preventivo: " . $e->getMessage();
            }
    
        } else {
            // Se non ci sono risultati per il rapporto selezionato, mostra un messaggio di avviso
            echo '<p>Nessun risultato trovato per il rapporto selezionato.</p>';
        }
    
    
    // Chiudi la connessione al database
    mysqli_close($conn);
    ?>
    
Devi accedere o registrarti per scrivere nel forum
2 risposte