Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Link nascosto

  1. #1

    Link nascosto

    ho questo problema:
    Degli utenti registrati vanno in una pagina riservata da dove tra le altre cose si possono scaricare il loro listino, siccome non tutti gli utenti hanno lo stesso listino (listino1 per utente di tipo 1 ; listino2 per utente di tipo 2 etc) io volevo creare un link o qualcosa del genere che aprisse un file pdf diverso in base al proprio listino di appartentenza, ma se faccio un link normale ("<a href=\"listino.pdf$row[listino]\"> listino </a>)
    nella barra in basso del browser mi viene fuori il link ed il cliente capisce che ci sono listini diversi, io vorrei semplicemente che non venga fuori questo link, oppure ....un metodo più intelligente.
    Spero seppur prolisso di essere stato chiaro

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    richiama una pagina "listino.php" nel cui interno c'è un controllo sul tipo di cliente che ha fatto la richiesta.

    A questo punto a seconda dell'utente dai in output il pdf corretto usando readfile e i corretti header per permettere il download.

    Un esempio sommario:

    codice:
    $utente // questo te lo ricavi dalla sessione o dal db a seconda di come è fatta la tua app.
    
    switch($utente->tipo) {
      
      case '1':
    
       $file_name = "listino_pubblico.pdf";
    
      break;
    
      case '2':
    
       $file_name = "listino_grossisti.pdf";
    
      break;
    
    }
    
    header("Expires: Mon, 12 Jul 1976 06:20:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    
    header("Pragma: no-cache");
    
    header('Content-type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
    readfile($file_name);
    ciao

  3. #3
    Avevo appena finito una versione più artigianale utilizzando anch'io switch e questo già mi conforta, chiaramente utilizzerò la tua decisamente più seria
    una cosa solamente, gli header li utilizzo così come me li hai passati? (a parte la variabile chiaramente) o bisogna mettere dei parametri particolari?
    Grazie
    Ciao

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Allora, se le usi cosi vanno già bene comunque:


    1. La prima linea riporta una data nel passato... io ci ho messo la mia data di nascita.. :P

    Le seguenti linee:

    codice:
    header('Content-type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
    forzano il download, potresti sostituirle con :

    codice:
    header('Content-type: application/pdf');
    E il browser dovrebbe aprire il pdf nella finestra (il problema di questo metodo è che se salvi il file ti proporrà il nome del file php).

    Comunque ti consiglio di guarare questa pagina, http://fr.php.net/manual/en/function.header.php

    Io me la sono letta a malapena e ho un po' di lacune sull'argomento

    ciao

  5. #5
    Ho provato con questo codice, ho pure verificato che $file_name contenga l'indirizzo corretto del file pdf (malgrado non sia per niente convinto sull'esattezza del codice al punto
    $file_name = "listini/listino$HTTP_SESSION_VARS[listi].pdf";
    però mi tira fuori nel browser tutta una serie di simboli criptati come se leggessi il pdf con un notepad
    Codice PHP:
    $file_name "listini/listino$HTTP_SESSION_VARS[listi].pdf"
    header("Expires: Mon, 12 Jul 1976 06:20:00 GMT");
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");

    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0"false);

    header("Pragma: no-cache");

    header('Content-type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
    readfile($file_name); 

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    se ti tira fuori tutti quei simboli vuol dire che il file lo legge, prova a fare un controllo di questo genere prima di settare l'header:

    codice:
    if(header_sent()) {
      echo "SPIACENTE, HAI GIA DATO UN OUTPUT SULLA PAGINA";
    } else {
      header....
    }
    non è una soluzione, ma capisci se hai già dato un output nella pagina, se cosi è il content type del documento è già settato ad html, e quindi come dici tu vedi il pdf come se fosse aperto dal blocco note.

    Per usare queste funzioni devi essere sicuro di non aver scritto nulla nella pagina (che ne so ad esempio la testata del tuo sito..).

    ciao

  7. #7
    In effetti viene fuori il messaggio che ho gia dato un output
    il problema è che quella pagina contiene solo quel codice e basta.
    sarà mica perchè il link a questa pagina arriva da una pagina fatta con i frame?

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    prova questo esempio preso da php.net
    codice:
    // An example using the optional file and line parameters, as of PHP 4.3.0
    // Note that $filename and $linenum are passed in for later use.
    // Do not assign them values beforehand.
    if (!headers_sent($filename, $linenum)) {
        header('Location: http://www.example.com/');
        exit;
    
    // You would most likely trigger an error here.
    } else {
    
        echo "Headers already sent in $filename on line $linenum\n" .
              "Cannot redirect, for now please click this <a " .
              "href=\"http://www.example.com\">link</a> instead\n";
        exit;
    }

  9. #9
    ti ringrazio, ma per ora per problemi di tempo mi sono aggiustato con un metodo empirico, niente di tecnico, appena ho un attimo gli do un'occhiata.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.