[PHP/PEAR] Bestand nog een keer doorsturen na POST

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
De situatie
Ik heb een sollicitatieformulier met meerdere inputvelden en 2 inputvelden waar je bestanden moet toevoegen (sollicitatiebrief en CV).

Dit formulier wordt m.b.v. PHP gecheckt op verplichte velden (o.a. NAW gegevens etc.)
Hierbij worden ook de bestanden gecheckt.

Als alle checks goed zijn doorlopen dan wordt het formulier via een PEAR HTTP_request verzonden naar een CGI script die de sollicitatie afhandelt. Over dit gedeelte heb ik geen controle/jurisdictie, dus ik moet de gegevens naar dat CGI script doorsturen.

Het probleem

De 'normale' invoervelden worden nu gewoon meegestuurd en komen ook netjes in de database terecht zoals het hoort. Het probleem is dat ik de bestanden die meegestuurd moeten worden niet meekrijg.

Nu heb ik wel wat rondgezocht (o.a. hier, maar dat leek mij echt een upload verhaal. Dit staat overigens nu wel in de code om te proberen), maar ik kom er niet echt uit hoe ik dit kan oplossen.

Waar het eigenlijk op neerkomt: Ik moet de $_FILES 1 op 1 doorsturen via PEAR naar een CGI script, maar ik weet niet hoe! :'(

Ik zal even een stukje code plaatsen zodat jullie een idee hebben wat ik doe:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//PEAR
require_once "HTTP/Request.php";

$req =& new HTTP_Request("URLnaar.cgi");
$req->setMethod(HTTP_REQUEST_METHOD_POST);
            
// vaste velden
$req->addPostData("mail:to", "emailadresje");
$req->addPostData("mail:toname", "klantnaampje");
$req->addPostData("cv:max_size", "500");

// hidden inputs 
$req->addPostData("mail:subject", "Sollicitatie vacature:".$job->functienaam);
$req->addPostData("vac_id", $job->id);
$req->addPostData("vacaturenummer", $job->vacaturenummer);
$req->addPostData("vacature", $job->functienaam);
$req->addPostData("reactiedatum", $job->reactie_datum);

// Persoonsgegevens
$req->addPostData("voornaam", $_POST["voorletters"]);
$req->addPostData("roepnaam", $_POST["roepnaam"]);
$req->addPostData("achternaam", $_POST["achternaam"]);
$req->addPostData("geboorte_dag", $_POST["geboorte_dag"]);
$req->addPostData("geboorte_maand", $_POST["geboorte_maand"]);
$req->addPostData("geboorte_jaar", $_POST["geboorte_jaar"]);
$req->addPostData("sexe", $_POST["sexe"]);

// Adresgegevens
$req->addPostData("adres", $_POST["adres"]);
$req->addPostData("huisnummer", $_POST["huisnummer"]);
$req->addPostData("postcode", $_POST["postcode"]);
$req->addPostData("woonplaats", $_POST["woonplaats"]);
$req->addPostData("telefoon", $_POST["telefoon"]);
$req->addPostData("telemobiel", $_POST["telemobiel"]);
$req->addPostData("email", $_POST["email"]);

// Sollicitatiegegevens
$req->addFile($_FILES["brief"]["name"],$_FILES["brief"]["name"]);
$req->addFile($_FILES["CV"]["name"],$_FILES["CV"]["name"]);
$req->addPostData("bron", $_POST["bron"]);
$req->addPostData("bron_anders", $_POST["bron_anders"]);

// Upload CV + Brief
if (!PEAR::isError($req->sendRequest())) {
    $response = $req->getResponseBody();
    header("Location: bedankt.php?type=sollicitatie");
}
else {
    $response = "";
}


Het gaat dus met name om regel 38 en 39.

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18-09 16:24

mulder

ik spuug op het trottoir

Denk dat je sowieso de formencoding naar binair moet zetten

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
Dat wordt toch niet tijdens de POST bepaald? Die stuurt alles toch gewoon sec door naar de server?

Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18-09 16:24

mulder

ik spuug op het trottoir

Je zet toch ook de encoding in het HTML formulier?

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
enctype="multipart/form-data" inderdaad ...

Maar bepaalt ie dan meteen al of een POST binair wordt?

In principe hoef ik alleen de inhoud van $_FILES door te sturen en dan ben ik er toch lijkt me?

Ik probeerde overigens net even dit (als ideetje):

PHP:
1
2
$req->addPostData("brief",$_FILES["brief"]);
$req->addPostData("CV",$_FILES["CV"]);


Maar dat bracht ook geen uitkomst.

[ Voor 10% gewijzigd door 1st_Ro op 11-07-2005 15:23 ]


Acties:
  • 0 Henk 'm!

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 18-09 16:24

mulder

ik spuug op het trottoir

oogjes open, snaveltjes dicht


Acties:
  • 0 Henk 'm!

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
Hmmm, heb op basis daarvan dit geprobeerd:

PHP:
1
$req->addFile($_FILES["CV"]["name"],$_FILES['userfile']['tmp_name']);


Maar dat gaat dus ook mis.

Ik ga zo eerst maar 's een testcase bouwen om te zien wat ie nou doorstuurt.
Bedankt iig tot dusver!

[ Voor 13% gewijzigd door 1st_Ro op 11-07-2005 16:36 ]

Pagina: 1