[PHP] Form versturen werkt, attachment niet

Pagina: 1
Acties:
  • 21 views sinds 30-01-2008

  • Mexxwelll
  • Registratie: Juli 2005
  • Laatst online: 25-11 15:01
Beste mensen,

Ik ben tijd geleden begonnen met website, mijn kennis van PHP is klein maar was me toch gelukt om een form te maken en die uiteindelijk te mailen.

Nu wou ik er een attachment bij laten versturen, na het invoeren van de code
Nieuwe code:
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
51
52
53
54
55
56
   <?php
   if ($_SERVER['REQUEST_METHOD']=="POST"){
         error_reporting(0);
      
        $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
            $tmp_name = $_FILES['filename']['tmp_name'];
        $type = $_FILES['filename']['type'];
        $name = $_FILES['filename']['name'];
        $size = $_FILES['filename']['size'];
        $message = "Here is your file: $name";

        if (file_exists($tmp_name)){
        if(is_uploaded_file($tmp_name)){
        $file = fopen($tmp_name,'rb');

        $data = fread($file,filesize($tmp_name));

        fclose($file);

        $data = chunk_split(base64_encode($data));
        
        $naam = stripslashes ($_POST['Naam']);
        $achternaam = stripslashes ($_POST['Achternaam']);
        $adres = stripslashes ($_POST['Adres']);
        $postcode = stripslashes ($_POST['Postcode']);
        $Plaats = stripslashes ($_POST['Plaats']);
        $telefoon = stripslashes ($_POST['Telefoon']);
        $Mobiel = stripslashes ($_POST['Mobiel']);
        $email = stripslashes ($_POST['Email']);
        $Denkniveau = stripslashes ($_POST['Denkniveau']);
        $recipient = 'mexxwelll@gmail.com';
        $subject = stripslashes($_POST['Vacature']);
        $from = stripslashes($_POST['Email']);
        $msg = "Vacature aanvraag: 
Naam: $naam $achternaam
Adres: $adres $postcode
Woonplaats: $Plaats
Contact: $telefoon Mobiel: $Mobiel
Email: $email 
Denkniveau: $Denkniveau \n\n".stripslashes($_POST['MsgBody']);
      if (mail($recipient, $subject, $msg))
         echo nl2br(
         "<b>Aanvraag verzonden:</b>
         
         Aan: $recipient
         
         
         Voor vacature: $subject
         Bedant voor uw aanvraag, wij nemen zo spoedig mogelijk contact met u op!
         "
         );
      else
         echo "Message failed to send";
}
} else {
?>  


Oude code:
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
   <?php
   } else {
      error_reporting(0);
      $naam = stripslashes ($_POST['Naam']);
      $achternaam = stripslashes ($_POST['Achternaam']);
      $adres = stripslashes ($_POST['Adres']);
      $postcode = stripslashes ($_POST['Postcode']);
      $Plaats = stripslashes ($_POST['Plaats']);
      $telefoon = stripslashes ($_POST['Telefoon']);
      $Mobiel = stripslashes ($_POST['Mobiel']);
      $email = stripslashes ($_POST['Email']);
      $Denkniveau = stripslashes ($_POST['Denkniveau']);
      $recipient = 'mexxwelll@gmail.com';
      $subject = stripslashes($_POST['Vacature']);
      $from = stripslashes($_POST['Email']);
      $msg = "Vacature aanvraag: 
Naam: $naam $achternaam
Adres: $adres $postcode
Woonplaats: $Plaats
Contact: $telefoon Mobiel: $Mobiel
Email: $email 
Denkniveau: $Denkniveau \n\n".stripslashes($_POST['MsgBody']);
      if (mail($recipient, $subject, $msg))
         echo nl2br(
         "<b>Aanvraag verzonden:</b>
         
         Aan: $recipient
         
         
         Voor vacature: $subject
         Bedant voor uw aanvraag, wij nemen zo spoedig mogelijk contact met u op!
         "
         );
      else
         echo "Message failed to send";
}
?>


Na het invoeren van de attachment code doet hij het niet, krijg een error dat de laatste regel uit het document een Parse error: syntax error, unexpected $end

iemand een idee waar het fout gaat?

alvast bedankt

[ Voor 0% gewijzigd door RobIII op 14-01-2007 20:52 ]


  • Onbekend
  • Registratie: Juni 2005
  • Nu online

Onbekend

...

Het gaat dus in de PHP-code zelf fout.

Probeer eens de code zo te vereenvoudigen zodat je alleen een paar regels code over hebt.
Daarna is de fout zo gevonden...

Speel ook Balls Connect en Repeat


  • HielkeJ
  • Registratie: Juli 2001
  • Niet online
Maak van regel 41:
code:
1
if (mail($recipient, $subject, $msg)) {


en maak van regel 52:
code:
1
} else


Dan zou het al wat beter moeten werken.

edit
Waarom zet je eigenlijk alle superglobals om naar gewone variablen?
Als je dit niet doet, weet je verder in het script ook nog waar de gegevens vandaan komen en bespaar je toch weer een aantal regels overbodige code.

Ik ga er overigens wel vanuit dat je na de
code:
1
} else {
ook nog code hebt staan, welke netjes wordt afgesloten en ook de if op regel 2 afsluit.

[ Voor 58% gewijzigd door HielkeJ op 14-01-2007 20:47 ]


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:57

MueR

Admin Devschuur® & Discord

is niet lief

Parse errors zijn altijd tikfouten in je code. Dit moet dus erg makkelijk op te lossen zijn met een goede editor met syntax highlighting.

Anyone who gets in between me and my morning coffee should be insecure.


Verwijderd

Op regel 3 van jouw nieuwe code staat
error_reporting(0);

Maar ik zou er zelf eerst even error_reporting( E_ALL ); van maken.

Bovendien:
Wat komt er na regel 55, qua code?

En ik denk dat we allemaal een beetje in de war raken van het gebrek aan indenting.

De } op regel 54 hoort bij if(is_uploaded_file($tmp_name)){
op regel 13
De } op regel 55 hoort bij de if (file_exists($tmp_name)){
op regel 12

Daarna nog maar eens kijken, met een goede PHP editor, zoals MueR al zegt.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit is met wat debuggen prima zelf op te lossen; zeker met gegeven suggesties hier. GoT en in specifiek PRG is geen plek om je code te dumpen en te wachten totdat iemand het voor je oplost; we verwachten van jezelf ook wat eigen inzet.

Als je overigens je code al eens fatsoenlijk indent maak je het stukken leesbaarder voor jezelf (en anderen).

[ Voor 66% gewijzigd door RobIII op 14-01-2007 20:55 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.