0
我有一個將變量傳遞給fpdf的問題。第一個腳本獲取發送到過濾類的過帳文本,該類將過濾後的POST-s作爲2元素數組返回。首先劇本是這樣的:將變量傳遞給fpdf
include('service.php');
include('pdf.php');
$pdf_filter = new Pdf_filter;
$filter = $pdf_filter->pdfFilter();
var_dump($filter);
extract($filter);
我提取$filter
陣列從中獲取變量(過濾腳本創建被髮送POST變量,我可以echo
他們,所以我不知道這是不是甚至是必要的)。
第二個腳本是這樣的:
require('E:\Xampp\php\fpdf181\fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);
$pdf->Cell(195,5, $tytul, 0,1,'C');
$pdf->Cell(195,5, $petycja, 0,1,'C');
$pdf->Output();
,我得到這個錯誤:
Notice: Undefined variable: tytul in E:\Xampp\htdocs\php\bazy_danych\obiektowe\my\pdf.php on line 10
Notice: Undefined variable: petycja in E:\Xampp\htdocs\php\bazy_danych\obiektowe\my\pdf.php on line 11
Fatal error: Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file' in E:\Xampp\php\fpdf181\fpdf.php:271
Stack trace: #0 E:\Xampp\php\fpdf181\fpdf.php(1063): FPDF->Error('Some data has a...')
#1 E:\Xampp\php\fpdf181\fpdf.php(999): FPDF->_checkoutput()
#2 E:\Xampp\htdocs\php\bazy_danych\obiektowe\my\pdf.php(12): FPDF->Output()
#3 E:\Xampp\htdocs\php\bazy_danych\obiektowe\my\test.php(3): include('E:\\Xampp\\htdocs...')
#4 {main} thrown in E:\Xampp\php\fpdf181\fpdf.php on line 271
我應該如何傳遞變量?有趣的:它的工作原理,如果我用的是未經過濾的$_POST
用下面的代碼:
require('E:\Xampp\php\fpdf181\fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);
$pdf->Cell(195,5, $_POST['tytul'], 0,1,'C');
$pdf->Cell(195,5, $_POST['petycja'], 0,1,'C');
$pdf->Output();
編輯:我會後的最初形式和過濾功能:
形式:
<form action="test.php" method="POST">
Wpisz tytuł petycji (35 znaków):<br>
<input type="text" name="tytul" maxlength="35" size="35" placeholder="Tytuł petycji" required><br>
Wpisz treść petycji (500 znaków):<br>
<textarea name="petycja" maxlength="500" rows="4" cols="50" placeholder="Treść petycji" required></textarea><br>
<input type="submit" value="Napisz petycje">
</form>
過濾功能:
class Pdf_filter{
protected $title;
protected $text;
public function pdfFilter(){
if (isset($_POST)){
foreach ($_POST as $key => $val) {
$filterVal = strip_tags($val);
$filterVal = htmlspecialchars($filterVal);
$filterVal = stripslashes($filterVal);
$filterVal = str_replace("\\", "", $filterVal);
$filter = array($key => $filterVal);
foreach ($filter as $key => $val) {
echo "[$$key]";
echo "$val<br>";
${$key} = $val;
}
}
if(!preg_match("/^[\sa-zA-ZĄĆĘŁŃÓŚŹŻąćęłńóśźż0-9-_,.:\'?()]+$/", $tytul)){
echo "Niedozwolone znaki $tytul!";
exit();
}
elseif(!preg_match("/^[\sa-zA-ZĄĆĘŁŃÓŚŹŻąćęłńóśźż0-9-_,.:\'?()]+$/", $petycja)){
echo "Niedozwolone znaki $petycja!";
exit();
}
else{
return $filter = array('tytul'=>$tytul,'petycja'=>$petycja);
}
}
else{
echo "Proszę wypełnić wszytskie pola!";
}
}
}
我猜你正在使用'$ tytul = $ _POST ['tytul'];'在第二個腳本中?或者是在其他一些沒有給出的腳本中設置?不知道它們是如何設置的,我無法給你一個很好的答案,但很可能你正在使用沒有正確使用的類變量。 –
我想你可能是正確的「使用類變量」不正確。但是整個腳本是這樣的:2個文本形式(tytul i petycja)通過$ _POST傳遞給第一個腳本 - >過濾$ _POST - >將過濾的變量返回到第一個腳本 - >將變量傳遞給第二個腳本。如果您需要更多代碼,請讓我知道要寫什麼。 – korni
是的,我想看看如何設置變量。因此,如果您要提供該代碼以及該文件如何鏈接(包括/需要)。 –