webForumDet fria alternativet

Bifoga fil som skapas av en annan fil

PHP

5 svar · 468 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej,

Jag har ett script som skapar en faktura då man kallar på invoice.php?faktura=1234.
Nu ska jag i vissa fall bifoga en faktura i ett mail, mailet skickas från filen filnamn.php.

Kan jag "köra" filen invoice.php?faktura=1234 innifrån filnamn.php på något sätt?
Det jag vill åstadkomma är att när filnamn.php körs, ska en faktura skapas "i bakgrunden" från filen invoice.php?faktura=1234 som jag sen kan bifoga i mitt mail.

Vilken är den bästa lösningen för att åstadkomma det här?

Tack!

Medlem sedan jan. 2004140 inlägg
#2

Rent spontant - räcker det inte med en require_once ?

Medlem sedan feb. 20034 441 inlägg
#3

dreas skrev:

Rent spontant - räcker det inte med en require_once ?

Då får jag:

Warning: require_once(/school.invoice.php?invoice=2245000) [function.require-once]: failed to open stream: Operation not permitted

Filen school.invoice.php genererar en PDF fil m.h.a FPDF och jag kan välja hur filen ska skapas, som fil, som stream osv. enligt Output() i dokumentationen.

Vilken av dom är lämpligast för mitt ändamål?

Medlem sedan mars 20007 896 inlägg
#4

Vad genererar school.invoice.php för utdata? Sparas PDF-filen på servern, eller skickas den till klienten? Du skulle kunna anropa sidan via fsockopen() eller helt enkelt med file_get_contents() med hela URL:en, så att PHP-koden tolkas innan utdata skickas.

$output = file_get_contents("http://www.domain.com/school.invoice.php?invoice=1234");
/* Om school.invoice.php sparar ner PDF-filen på servern: */
$pdfFile = file_get_contents("/path/to/invoice1234.pdf");

Med sockets kan du styra lite mer vad som skickas till sidan och vad du ska ta emot.

Så det beror lite på hur PDF-filen sparas eller om den streamas.

Medlem sedan feb. 20034 441 inlägg
#5

Får det inte att funka alls...
Såhär står det i dokumentationen:

Destination where to send the document. It can take one of the following values:

\* I: send the file inline to the browser. The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.
\* D: send to the browser and force a file download with the name given by name.
\* F: save to a local file with the name given by name (may include a path).
\* S: return the document as a string. name is ignored.

Jag tolkar det som att det är I jag ska använda för att få en stream.
Men det funkar inte med något av ovanstående sätt.

Medlem sedan feb. 20034 441 inlägg
#6

Nu löste det sig.
Jag valde "F" som argument till Output och när jag körde file_get_contents skapas PDF filen i en tempmapp, som jag sedan kan bifoga i mailet.

Konstigt dock att det inte fungerar att ta emot filen som en ström.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)