PHP Form error

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mexxwelll
  • Registratie: Juli 2005
  • Laatst online: 20-07 16:06
Beste mensen,

Ik heb nu een form in elkaar geknutselt en het werkt allemaal op 2 dingen na.

Het idee is dat ze het formulier invullen, een cv bijvoegen en dat het automatisch doorgemailt word.

1. Als de form is ingevult en gesubmit is verdwijnt de form niet.
2. Attachments worden met noname.txt verstuurd ZONDER inhoud.

code:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php
   if ($_SERVER['REQUEST_METHOD']=="POST"){
   $to="a@b.c";
   $subject="$vacature"
   $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['$email']).">";
   $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 = 
    "Vacature aanvraag: 
    Naam: $naam $achternaam
    Adres: $adres $postcode
    Woonplaats: $Plaats
    Contact: $telefoon Mobiel: $Mobiel
    Email: $email 
    Denkniveau: $Denkniveau \n\n";
   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));
     }

      $headers = "From: $from\r\n" .
         "MIME-Version: 1.0\r\n" .
         "Content-Type: multipart/mixed;\r\n" .
         " boundary=\"{$mime_boundary}\"";
      $message = "This is a multi-part message in MIME format.\n\n" .
         "--{$mime_boundary}\n" .
         "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
         "Content-Transfer-Encoding: 7bit\n\n" .
         $message . "\n\n";
      $message .= "--{$mime_boundary}\n" .
         "Content-Type: {$type};\n" .
         " name=\"{$name}\"\n" .
         //"Content-Disposition: attachment;\n" .
         //" filename=\"{$fileatt_name}\"\n" .
         "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n" .
         "--{$mime_boundary}--\n";
      if (@mail($to, $subject, $message, $headers))
         echo "<b>Aanvraag verzonden:</b>
         
         Aan: $recipient
         
         
         Voor vacature: $subject
         Bedant voor uw aanvraag, wij nemen zo spoedig mogelijk contact met u op!";
      else
         echo "Failed to send";
   }
} else {
?>
   <form name="form1" method="post"
         action="">
     <table border="0" cellspacing="0" cellpadding="2">
       <!--DWLayoutTable-->
       <tr>
         <td height="26" colspan="2">Naam:</td>
            <td colspan="3" valign="top"><input type="text" name="Naam"> </td>
         <td width=76>Achternaam:</td>
            <td width="194"><input name="Achternaam" type="text" value=""></td>
          </tr>
          
       <tr>
         <td height="26" colspan="2">Adres:</td>
            <td colspan="3" valign="top"><input type="text" name="Adres"> </td>
         <td>Postcode:</td>
            <td><input name="Postcode" type="text" value=""></td>
          </tr>
          
        <tr>
         <td height="26" colspan="2">Plaats:</td>
            <td colspan="3" valign="top"><input type="text" name="Plaats"> </td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
          
       <tr>
         <td height="26" colspan="2">Telefoon:</td>
            <td colspan="3" valign="top"><input type="text" name="Telefoon"> </td>
         <td>Mobiel:</td>
            <td><input name="Mobiel" type="text" id="Mobiel" value=""></td>
          </tr>
       <tr>
         <td height="26" colspan="2">Email:</td>
            <td colspan="3" valign="top"><input type="text" name="Email"> </td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
       </tr>
                 <tr>
         <td height="26" colspan="2">Denkniveau:</td>
            <td colspan="3" valign="top"><input name="Denkniveau" type="text" id="Denkniveau" value="MBO/HBO/WO" align="center"> </td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
                 <tr>
         <td height="26" colspan="2">Vacature:</td>
            <td colspan="5" valign="top">
            <select name="Vacature">
            <option value="BACKOFFICE MEDEWERKER SETTLEMENT">BACKOFFICE MEDEWERKER SETTLEMENT</option>
            <option value="BACKOFFICE MEDEWERKER SETTLEMENT 2">BACKOFFICE MEDEWERKER SETTLEMENT 2</option>
            <option value="Blablabla">Tadada</option>
            </select></td>
            </tr>
            <tr>
            <td height="28" colspan="3" valign="top">Voeg je CV toe!</td>
            <td colspan="4" valign="top"><input type="file" name="filename"></td>
          </tr>
            <tr>
              <td width="28" height="14"></td>
              <td width="58"></td>
              <td width="14"></td>
              <td width="44"></td>
              <td width="87"></td>
              <td></td>
              <td></td>
          </tr>
            <tr>
              <td height="28"></td>
              <td colspan="3" valign="top"><input type="submit" name="Submit"
               value="Send">
                <label></label></td>
            <td></td>
              <td></td>
              <td></td>
          </tr>
            <tr>
              <td height="10"></td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
          </tr>
       </table>
   </form> 
<?php } ?>
</body>
</html>

   
   <?php
        
        $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"; }
?>


Ziet iemand waar het fout gaat? Loop nu al uren te klooien zonder resultaat!
alvast bedankt!

[ Voor 26% gewijzigd door Mexxwelll op 24-01-2007 16:52 ]


Acties:
  • 0 Henk 'm!

  • deCube
  • Registratie: Mei 2006
  • Laatst online: 13-09 09:14
Op je eerste vraag weet ik gelijk het antwoord:

PHP:
1
if(isset($_POST['Submit'])){


in plaats van:

PHP:
1
if ($_SERVER['REQUEST_METHOD']=="POST"){

[ Voor 29% gewijzigd door deCube op 24-01-2007 16:52 ]

Work hard & be brave.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Een aantal punten:
[list=1]• Zet je code tussen de tags (wat je wel gedaan hebt) met vervolgens de juiste taal. php of html zou hier handig voor kunnen zijn
• GoT is geen code-debug team, zie ook Programming Beleid
• We helpen je liever als je wat code stukjes pakt, in plaats van de hele buts hier neer te plempen
• Je kan nadat je het emailtje hebt verstuurd een variabele zetten of juist verwijderen. Dat check je vervolgens wanneer je het formulier print (of juist dat overslaat waardoor het formulier niet wordt getoond. Je kan hiervoor makkelijk $_POST["submit"] gebruiken.
• Je bent ongelofelijk kwetsbaar voor leuke spammerts zo
• Als je een email klasse gebruikt is het allemaal makkelijk te beheren (en je bent dan met (gedeeltelijk) OOP vooruitstrevend bezig)
• HTML technisch is een table nu niet een geweldige oplossing voor een formulier opmaken /zachtjes gezegd

[ Voor 9% gewijzigd door mithras op 24-01-2007 16:56 ]


Acties:
  • 0 Henk 'm!

  • Mexxwelll
  • Registratie: Juli 2005
  • Laatst online: 20-07 16:06
deCube schreef op woensdag 24 januari 2007 @ 16:50:
Op je eerste vraag weet ik gelijk het antwoord:

PHP:
1
if(isset($_POST['Submit'])){


in plaats van:

PHP:
1
if ($_SERVER['REQUEST_METHOD']=="POST"){
Bedankt voor je reactie, maar wil niet helpen :S

Acties:
  • 0 Henk 'm!

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 01:06
Volgens mijn editor zitten er al zo 2 syntax fouten in.

Je sluit je IF statement niet goed af en je bent een ; vergeten achter je subject regel (4).

[ Voor 48% gewijzigd door InZane op 24-01-2007 17:07 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Kijk gelijk ook nog even naar de punten die mithras noemt :)

Hier op GoT zien we graag dat aangeeft welke zaken je nu hebt geprobeerd en wat daar nu niet mee lukte. Daarnaast zou het een stuk leesbaarder zijn voor iedereen als je alleen de relevante code zou posten i.p.v. alle code. Alleen zeggen wat er mis gaat, al je code dumpen en vertellen dat je "al uren" bezig bent is niet voldoende. Dus graag een kleine aanvulling :)

En nofi maaruh er zitten nogal.. eeh.. beginnersfoutjes in die vrij simpel te vinden zijn. Zo is de action van je form leeg waardoor er niks wordt gesubmit. Heb je -NMe-'s advies (-NMe- in "PHP Form error") wel ter harte genomen?

[ Voor 23% gewijzigd door Creepy op 24-01-2007 17:12 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • deCube
  • Registratie: Mei 2006
  • Laatst online: 13-09 09:14
Erg rommelig geschreven en weinig beveiliging, zoals mithras al aangaf kun je beter een class schrijven.

Overigens zou ik als ik jou was alle punten die mithras aangeeft even langslopen.

Work hard & be brave.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
En puntje nummer 8: zet error_reporting op E_ALL, helpt veel met debuggen ;)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Als je goed naar de 10001 voorbeeld upload scriptjes had gekeken dan had je daar kunnen zien dat er ook een multipart deel in de formtag staat. Die mis ik bij jouw script.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Mexxwelll
  • Registratie: Juli 2005
  • Laatst online: 20-07 16:06
Nou heb alles werkend nu,

die .class ga ik later inbouwen, het gaat er nu even om dat het werkt.. staat toch een assp server voor dus de spam word er wel uit gefilterd.. werk eigenlijk ook in netwerkbeheer en heb dit erbij gekregen om even een tijdelijke oplossing te vinden..

Verder als ik nu in de source kijk, zie ik geen email staan.. zou dat niet moeten betekenen dat spambots gewoon niets vinden?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

deCube schreef op woensdag 24 januari 2007 @ 16:50:
Op je eerste vraag weet ik gelijk het antwoord:

PHP:
1
if(isset($_POST['Submit'])){


in plaats van:

PHP:
1
if ($_SERVER['REQUEST_METHOD']=="POST"){
Onzin, dat werkt alleen slechter. Die $_POST['Submit'] variabele wordt immers niet gezet als je je formulier met Javascript verstuurt en volgens mij ook niet als je op enter drukt om het formulier te verzenden. De code die er stond is in principe goed, al kunnen daar nog wat extra checks bij op die formuliervelden die sowieso wél altijd gezet zijn.
deCube schreef op woensdag 24 januari 2007 @ 17:08:
Erg rommelig geschreven en weinig beveiliging, zoals mithras al aangaf kun je beter een class schrijven.
Een class schijven? Nergens voor nodig, er zijn talloze standaardklassen die beter zijn dan iets wat je even snel in elkaar knutselt, en bovendien zou het probleem van de topicstarter er niet mee opgelost zijn, aangezien hij alsnog zelf die class moet gaan schrijven. Daarnaast lopen de meningen over het nut van de OOP denkwijze in de procedurele scripttaal PHP nogal uit elkaar, vooral omdat diverse OO-paradigma's er nogal verkeerd of onvolledig in geïmplementeerd zijn. :)
Overigens zou ik als ik jou was alle punten die mithras aangeeft even langslopen.
Dat ben ik wel met je eens. :)
Mexxwelll schreef op woensdag 24 januari 2007 @ 18:11:
Verder als ik nu in de source kijk, zie ik geen email staan.. zou dat niet moeten betekenen dat spambots gewoon niets vinden?
Zoek eens op wat security by obscurity betekent. Hoewel die term niet 100% omschrijft wat jij nu zegt komt het wel een heel eind. Laten we het erop houden dat schijnveiligheid geen veiligheid is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Spambots zullen niks vinden idd, alleen jan en alleman die bij het form kunnen komen kunnen jou helemaal plat gaan spammen

Acties:
  • 0 Henk 'm!

  • deCube
  • Registratie: Mei 2006
  • Laatst online: 13-09 09:14
-NMe- schreef op woensdag 24 januari 2007 @ 18:37:
[...]

Een class schijven? Nergens voor nodig, er zijn talloze standaardklassen die beter zijn dan iets wat je even snel in elkaar knutselt, en bovendien zou het probleem van de topicstarter er niet mee opgelost zijn, aangezien hij alsnog zelf die class moet gaan schrijven. Daarnaast lopen de meningen over het nut van de OOP denkwijze in de procedurele scripttaal PHP nogal uit elkaar, vooral omdat diverse OO-paradigma's er nogal verkeerd of onvolledig in geïmplementeerd zijn. :)
Ik doelde hiermee op de duidelijkheid van het script, wat nu nou niet bepaald netjes is. Ben het overigens wel met je eens dat de meeste standaard classes goed genoeg zijn, dus:

@TS: check http://phpclasses.org ;)

Work hard & be brave.


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Die $_POST['Submit'] variabele wordt immers niet gezet als je je formulier met Javascript verstuurt
Wel als je de submit button kan activeren met .click ().

HTML:
1
2
3
4
5
<form action="" method="post">
<input type="submit" id="blaat">
</form>

<span onclick="document.getElementById('test').click();">Verzenden die zooi</span>

March of the Eagles

Pagina: 1