maraska
12.08.2013, 12:41:49
Witam.
Napisałem skrypt, którego celem jest wystawienie dokumentu .pdf, zapis tego pliku i wysłanie maila z linkiem do pliku.pdf.
Maile wysyła klasa phpmailer, a pdf generuje może znana wam klasa fpdf.
require('/fpdf17/fpdf.php');
Jednego maila wysyła bez problemu, ale jak to się podepnie pod zapytanie do bazy, to przy trzecim wyskakuje:
Fatal error: Cannot redeclare show() (previously declared in /opt/forma.php:1378)
W tej linii inicjowana jest funkcja generująca .pdf
function show($a).......
Wydaje mi się, że jedynym wytłumaczeniem jest to, że mój skrypt forma.php chce generować kolejny .pdf gdy poprzedni jest jeszcze "obrabiany" przez fpdf.php .
Co o tym myślicie i czy znacie może jakieś rozwiązanie takiego problemu?
b4rt3kk
12.08.2013, 12:49:19
A po cholerę generujesz ten PDF za każdym razem, skoro wysyłasz tylko link do niego? Podeślij link, a PDF generuj w momencie kliknięcia w owy link. Chyba prościej?
maraska
12.08.2013, 13:06:31
Nie bardzo potrafię wymyślić, jak to zrobić
Lokalizacja pdf to:
$pdf->Output('/opt/forma_'.$id.'_'.$key.'.pdf','F');
Otwierasz to klikając np. w serwis.pl/forma_'.$id.'_'.$key.'.pdf"]http://www.serwis.pl/forma_'.$id.'_'.$key.'.pdf
Trzeba by robić jakąś stronę przejściową .php zawierającą tylko jeden guzik "Pokaż" - mało elegancko
?
b4rt3kk
12.08.2013, 13:20:25
Strona przejściowa może wyglądać tak:
// generowanie PDF
$pdf -> output($link);
Link może wyglądać tak:
<a href="generuj.php">Plik.pdf
</a>
I nikt się nawet nie spostrzeże (chyba że zajrzy do źródła), że plik został wygenerowany dynamicznie. Jedyne zastrzeżenie jest takie by ktoś nie wygenerował z linku pliku nie przeznaczonego dla niego.
maraska
12.08.2013, 13:28:34
Ano, prawda.
<a href="generuj.php?key=xxxxxxxxxxxxxxxxxxx">Plik.pdf</a>
mlawnik
12.08.2013, 23:02:21
i cannot redeclare show() oznacza, że nie możesz ponownie tej funkcji zadeklarowac, więc gdzieś masz zduplikowany kod (albo wywoływany 2 razy)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.