HiHo,
Für ein Projekt nutze ich PHPMailer und fdpf um PDF FIles als Anhang zu senden.
Wie nicht anders zu erwarten spruckt fdpf mir nen Header error aus
Woran es liegt weiss ich, es darf vorher nix an den Browser gesendet werden aber genau dies muss das Script machen da er vorher den HTML Kopf sendet samt CSS.
Nein, anders geht es nicht da sonst das Bestellformular aufgrund des Fehlenden Styles schrecklich aussieht.
HIer die Datei, habt ihr evtl noch andere Lösungen?
Alles anzeigen
Für ein Projekt nutze ich PHPMailer und fdpf um PDF FIles als Anhang zu senden.
Wie nicht anders zu erwarten spruckt fdpf mir nen Header error aus
Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/xxxxxxx/htdocs/theme/cache/%%FA^FA4^FA44DF90%%page_header.htm.php:9) in /var/www/virtual/xxx/htdocs/class/pdf/pdf_inc/fpdf.php on line 998
FPDF error: Some data has already been output to browser, can't send PDF file
Woran es liegt weiss ich, es darf vorher nix an den Browser gesendet werden aber genau dies muss das Script machen da er vorher den HTML Kopf sendet samt CSS.
Nein, anders geht es nicht da sonst das Bestellformular aufgrund des Fehlenden Styles schrecklich aussieht.
HIer die Datei, habt ihr evtl noch andere Lösungen?
Quellcode
- <?PHP
- include('./include/init.php');
- global $Core, $Smarty, $lang;
- define('FPDF_FONTPATH', './class/pdf/pdf_inc/font/');
- include_once('./class/pdf/pdf_inc/fpdf.php');
- include_once('./class/pdf/pdf_inc/class_calculation_pdf.php');
- require('./class/mail/class.phpmailer.php');
- $pakage = trim(htmlspecialchars($_GET['pakage']));
- // Header laden
- $Core->page_header($lang['BUY'] . ' • ' . $pakage);
- $message = '';
- // Absenden
- if (isset($_POST['send']))
- {
- $buy_date = $Core->userdate(time());
- $message = false;
- // Alle felder ausgefüllt?
- if ( !$_POST['name'] or !$_POST['adresse'] or !$_POST['plz'] or !$_POST['ort'] or !$_POST['phone'] or !$_POST['email'] )
- {
- $message .= 'Du hast nicht alle Felder ausgefült <br />';
- $fehler = true;
- }
- // Email gültig
- if ( !$Core->check_email($_POST['email']) )
- {
- $message .= 'Du hast eine Falsche Email Adresse angegeben <br />';
- $fehler = true;
- }
- // AGB Akzeptiert
- if ( !@$_POST['acept'] )
- {
- $message .= 'Sie müssen die AGBs akzeptieren. <br />';
- $fehler = true;
- }
- //Kein Fehler aufgetaucht?
- if ( !isset($fehler) )
- {
- // EIntragen der Kunden Daten
- $pdoparams = array(
- ':paket' => $_GET['pakage'],
- ':anrede' => $_POST['anrede'],
- ':name' => $_POST['name'],
- ':adresse' => $_POST['adresse'],
- ':ort' => $_POST['plz'] . ' ' . $_POST['ort'],
- ':phone' => $_POST['phone'],
- ':email' => $_POST['email'],
- );
- $sql = 'INSERT INTO ' . KUNDEN . '
- (paket, anrede, name, adresse, ort, phone, email)
- VALUES (:paket, :anrede, :name, :adresse, :ort, :phone, :email)';
- $stmt = MyDB::getInstance()->prepare($sql);
- $stmt->execute($pdoparams);
- // AUsgabe der letzten Kunden ID
- $Kunden_ID = MyDB::getInstance()->lastInsertId();
- $bodytext = $lang['BUY_EMAIL_TEXT'];
- $bodyhtml = $lang['BUY_EMAIL_TEXT'];
- /* -------------------------- */
- $pdf = new Calculation();
- // INI-Datei laden
- $pdf->global = parse_ini_file('./class/pdf/pdf_inc/pdf_config.ini',TRUE);
- // Grundeinstellungen
- $pdf->customer['adress'] = $_POST['name'].'\n'.$_POST['adresse'].'\n\n'.$_POST['plz'] . ' ' . $_POST['ort'];
- $pdf->calculation['date'] = $buy_date;
- $pdf->calculation['number'] = $Kunden_ID['id'];
- $pdf->calculation['subject'] = "Produkt Bestellung";
- $pdf->calculation['subject_info'] = "Produkt Bestellung";
- // Grundeinstellungen,Layout setzen
- $pdf->CalculationInitRender();
- // Project-Daten einlesen
- include('./class/pdf/pdf_inc/project.inc');
- // Zahlungsziel, AGB, Endsumme etc. setzen
- $pdf->CalculationEnd();
- $pdf_doc = $pdf->Output('', 'S');
- // Email senden
- $mail = new PHPMailer();
- $mail->From = $Core->config['email'];
- $mail->FromName = 'xxxx';
- $mail->Subject = 'xxxx Bestellung des Paketes ' . $_GET['pakage'];
- $mail->AltBody = $bodytext;
- $mail->MsgHTML($bodyhtml);
- $mail->AddAddress( $_POST['email'] );
- // PDF Anhang mitsenden
- $mail->AddStringAttachment($pdf_doc, 'pdf_doc.pdf', '', 'application/pdf');
- $mail->Send();
- $message = 'Danke für ihre Bestellungen. In wenigen Minuten sollten sie eine Email mit weiteren Informationen verhalten.';
- }
- }
- $agb_link = '<a href="agb.php">'.$lang['AGB'].'</a>';
- $Smarty->assign(array(
- 'PAKAGE_VERSION_BUY' => $lang['PAKAGE'] . ' ' . $pakage . ' ' . $lang['BUY'],
- 'PAKAGE' => $pakage,
- 'RP-M' => (@$_GET['pakage'] == 'rp-m')? true : false,
- 'RP-L' => (@$_GET['pakage'] == 'rp-l')? true : false,
- 'AGB_ACEPT' => sprintf($lang['AGB_ACEPT'], $agb_link),
- 'MESSAGE' => $message,
- ));
- $Smarty->display('buy.htm');
- // Footer laden
- $Core->page_footer();
- ?>