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
그래, 어떻게 변수가 설정되는지보고 싶습니다. 따라서 해당 코드를 제공하고 해당 코드가 어떻게 링크되어 있는지 (포함/필수) –