Avatar billede sjh Nybegynder
08. september 2005 - 07:33 Der er 12 kommentarer og
1 løsning

problem med post method og session_start()

Jeg sedder og leger lidt med fpdf (http://www.fpdf.org/) og er støt på et problem når jeg bruger method="POST" så sker der ikke noget.. men bruger jeg method="GET" så er der ikke nogle problemer..

Jeg ved godt at jeg skal bruge $_POST[] og $_GET[]..

jeg har prøvet at fjerne session_start() under method="POST" og setter de indstillinger manuel så er der ikke nogle problemer..

hvad kan der være galt??
Avatar billede showsource Seniormester
08. september 2005 - 07:59 #1
ehh, du skal jo ha' session_start() før noget som helst output?
Avatar billede sjh Nybegynder
08. september 2005 - 08:07 #2
Jeps det ved jeg godt men der er ikke nogle problemer når jeg bruger GET[].. det er KUN når jeg bruger POST[]..

altså:
<form name="print" method="get" target="_Blank" action="/pdf/index.php"> Virker
<form name="print" method="post" target="_Blank" action="/pdf/index.php"> Virker Ikke


PDF fetter..
<?php
    session_start();
  define("HOST", "localhost");
  define("USER", "....");
  define("PASS", "....");
  define("DB", "....._dk");
  $sqlConn = mysql_connect(HOST, USER, PASS);
  mysql_select_db(DB);
?>
<?php
  if (!isset($_SESSION["LOGIN_ID"])) {
    header("Location: /index.php");
        break;
  }

  require_once("fpdf.php");

  bla bla kode..
  bla bla kode..
  bla bla kode..
  bla bla kode..

  $pdf -> Output($strFilename, "I");
?>
Avatar billede neonman Nybegynder
08. september 2005 - 08:21 #3
<?
session_start();

echo '
<form name="print" method="post" target="_Blank" action="/pdf/index.php">

alle dine inputs her.

</form>
';

?>



prøv med den her code... og se om det evt. ikke virker :)
Avatar billede sjh Nybegynder
08. september 2005 - 08:27 #4
det gør det.. det er jo ikke det som er problemet.. Jeg vil poste fra en side til en anden side (min egen) jeg kan godt poste username og password ingen problemer.. men når jeg poster det til min pdf-side så sker der ikke noget.. jeg kan heller ikke se kilde kode på den eller noget som helst..
Avatar billede olebole Juniormester
08. september 2005 - 08:44 #5
<ole>

Der er ikke noget i det viste, der burde skabe problemer  :)

/mvh
</bole>
Avatar billede sjh Nybegynder
08. september 2005 - 08:48 #6
kan det være deres (fpdf) output sjov som ikke virker som det skal??

ser sådan ud:

function Output($name='',$dest='')
{
    //Output PDF to some destination
    //Finish document if necessary
    if($this->state<3)
        $this->Close();
    //Normalize parameters
    if(is_bool($dest))
        $dest=$dest ? 'D' : 'F';
    $dest=strtoupper($dest);
    if($dest=='')
    {
        if($name=='')
        {
            $name='doc.pdf';
            $dest='I';
        }
        else
            $dest='F';
    }
    switch($dest)
    {
        case 'I':
            //Send to standard output
            if(ob_get_contents())
                $this->Error('Some data has already been output, can\'t send PDF file');
            if(php_sapi_name()!='cli')
            {
                //We send to a browser
                header('Content-Type: application/pdf');
                if(headers_sent())
        $this->Error('Some data has already been output to browser, can\'t send PDF file');
                header('Content-Length: '.strlen($this->buffer));
                header('Content-disposition: inline; filename="'.$name.'"');
            }
            echo $this->buffer;
            break;
        case 'D':
            //Download file
            if(ob_get_contents())
                $this->Error('Some data has already been output, can\'t send PDF file');
            if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
                header('Content-Type: application/force-download');
            else
                header('Content-Type: application/octet-stream');
            if(headers_sent())
                $this->Error('Some data has already been output to browser, can\'t send PDF file');
            header('Content-Length: '.strlen($this->buffer));
            header('Content-disposition: attachment; filename="'.$name.'"');
            echo $this->buffer;
            break;
        case 'F':
            //Save to local file
            $f=fopen($name,'wb');
            if(!$f)
                $this->Error('Unable to create output file: '.$name);
            fwrite($f,$this->buffer,strlen($this->buffer));
            fclose($f);
            break;
        case 'S':
            //Return as a string
            return $this->buffer;
        default:
            $this->Error('Incorrect output destination: '.$dest);
    }
    return '';
}
Avatar billede sjh Nybegynder
08. september 2005 - 08:52 #7
har lige prøvet "D" og post.. det virker fint nok..

$pdf -> Output($strFilename, "D"); //-- Download file
Avatar billede olebole Juniormester
08. september 2005 - 08:57 #8
Har du teste, om den evt. smider interne fejl?
Avatar billede sjh Nybegynder
08. september 2005 - 09:01 #9
ja det kan det vel næsten ikke være når det virker med $_GET[] det er kun når jeg gør det med $_POST[]

Jeg har lavet det sådan.. så jeg ikke skal ændre på det hele tiden..

<?php
    function GET_POST($strText) {
        if (isset($_POST[$strText])) {
            $strReturn = $_POST[$strText];
        } else {
      $strReturn = $_GET[$strText];
        }
        return $strReturn;
    }
?>

men ellers hvordan ser jeg interne fejl?
Avatar billede neonman Nybegynder
08. september 2005 - 09:06 #10
forstår ikke hvorfor det ikke virker...... men ja


hvis du har din form

side1.php

<form action="side2.php" mehod="post">
</form>


og så på

side2.php

echo $_POST['mit_input_felt'];


:) burdte da at virke... evt. smid post før dit PDF Crap køre ;) måske der er en fejl i din PDF funcktion osm stopper det hele :)
Avatar billede sjh Nybegynder
08. september 2005 - 09:16 #11
ja.. nu har jeg prøvet at gemme output.. det er det samme som kommer ud.. så det må næsten være IE som har en bug..

  require_once("test.php");
  ob_start("save_output");


//-- test.php
<?php
  function save_output($strHtml) {
    $f=fopen("save.txt",'wb');
    fwrite($f, $strHtml);
    fclose($f);
    return $strHtml;
  }
?>
Avatar billede sjh Nybegynder
08. september 2005 - 10:15 #12
når nu har jeg lave det med en side fil som den kan hoppe til.. desværre bare ikke sådan jeg havede ville ha haft det :(

<?php
  session_start();
  if (!isset($_SESSION["MOVIE_LOGIN_ID"])) {
    header("Location: /index.php");
        break;
  }
  $user_name  = $_SESSION["LOGIN_NAME"];
  $strFilename = ($user_name.".pdf");
  header("Cache-control: private");
  header("Content-Type: application/pdf");
  header("Content-Length: ".filesize($strFilename));
  header('Content-Disposition: filename="'.$strFilename.'"');
  flush();
  readfile($strFilename);
?>

i må godt smide et svar alle sammen så kan i dele som tak for jeres forsøg..
Avatar billede sjh Nybegynder
09. september 2005 - 08:21 #13
når så får neonman point.. tak for jeres forsøg..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester