Beste php'ers, ik heb hier echt jullie hulp even nodig want ik heb 3 jaar lang een werkend contactformulier met bijlagemogelijkheid gehad, en van de één op de andere dag werkt het niet meer. Ik ben zelf een beginnend php'er op dit gebied dus bij deze zou ik het zeer op prijs stellen als iemand met php verstand even door de volgende code wil spitten om wellicht het probleem te achterhalen. Het formulier linkt op dit moment door naar de nietverzonden html pagina, terwijl het een aantal weken terug dus nog prima werd doorgemaild. Alvast bedankt mensen!


<?   
// als de mail wel f niet verzonden is gaat hij naar verzonden.php, 
// daarbij zend hij een variabele $sent mee die 1 is wanneer verzonden en 0 wanneer niet verzonden. 

if(isset($_POST['submit'])){   
    
  $max = "15000";         // Maximum grootte van het bestand
  $van  = "[email protected]";     // Het e-mail adres van de webmaster
  $naar = "[email protected]";    // Het e-mail adres van de ontvanger
  $onderwerp ="Test";            // Onderwerp

  $bericht=			 "Naam: 			". $_POST['naam'] ." ". $_POST['achternaam'] ."\n"
                  	."Adres: 			". $_POST['adres'] ."\n"
                  	."Postcode: 			". $_POST['postcode'] ."\n"
                  	."Woonplaats: 		". $_POST['woonplaats'] ."\n"
                  	."Telefoonnummer: 		". $_POST['telefoon'] ."\n"
                  	."E-mail: 			". $_POST['email'] ."\n"
                  	
					."". $_POST['bericht'] ."\n\n";
                  
    
    if (!empty($_FILES['bijlage']['name'])){ 
    // als er een bestand is
    
   $filename = $_FILES['bijlage']['name']; 

   $extentie = substr($filename, -3);   
      
       if ($bestand_size > $max){
           
         header("location: nietverzonden2.htm?sent=0"); 
          
       }elseif($extentie != "doc"){
           
         header("location: nietverzonden2.htm?sent=0");   
                      
       }else{
       
          // het type van de bijlage achterhalen
         $type = $HTTP_POST_FILES[bijlage][type];   
         if (($type == "text/plain") || ($type == "text/html"))   $codering = "8bit";   
         else  $codering = "base64";   
     
         // De bijlage controleren
         $openen = @fopen($_FILES[bijlage][tmp_name],"r");  
         
          if (!$openen){   
            echo"Er is een probleem met de bijlage, probeer het a.u.b opnieuw."; 
            echo"<br><a href=javascript:history.back()>Klik hier om terug te gaan</a>";   
          }else{    
          
           // bijlage lezen
           $inhoud_bestand = fread($openen,filesize($_FILES[bijlage][tmp_name]));   
           
             // als de codering base46 is dan moet er worden gecodeerd
             if ($codering == "base64"){  
                 
              $inhoud_bestand = chunk_split(base64_encode($inhoud_bestand));
                 
               $boundry = strtoupper(md5(uniqid(time())));  
                
               $header = "From: " . $van . "\n";    
               $header .= "MIME-version: 1.0\n";  
               $header .= "Content-Type: multipart/mixed;\n";   
               $header .= "\tboundary= " . $boundry . "\n\n";    
               $header .= "--" . $boundry . "\n";   
               $header .= "Content-Type: text/plain;\n";   
               $header .= "\tcharset=\"iso-8859-1\"\n";   
               $header .= "Content-Transfer-Encoding: quoted-printable\n\n";                 
               // het bericht toevoegen aan de mail 
               $header .=  $bericht . "\n\n";   
               
               // bijlage toevoegen 
               $header .= "--" . $boundry . "\n";   
               $header .= "Content-Type: " . $type . "\n";   
               $header .= "Content-Transfer-Encoding: " . $codering . "\n";   
               $header .= "Content-Disposition: attachment; filename=\"" . $_FILES[bijlage][name] . "\"\n\n";   
               
               // actual bijlage 
               $header .= $inhoud_bestand . "\n\n";   
               $header .= "--" . $boundry . "--"; 
             }
           
             if (@mail($naar,$onderwerp,"",$header))   
               header("location: verzonden.htm?sent=1");
             else  
               header("location: nietverzonden.htm?sent=0");    
           }
           
   }  
  
  }else{   
  $header = "From: " . $van . "\n";      
  $header .= "Content-Type: text/plain;\n";   
  $header .= "\tcharset=\"iso-8859-1\"\n";   
  $header .= "Content-Transfer-Encoding: quoted-printable\n\n";   
  
  // het bericht
  $header .=  $bericht . "\n\n"; 
  
  if (@mail($naar,$onderwerp,"",$header))   
    header("location: verzonden.htm?sent=1"); 
  else   
    header("location: nietverzonden.htm?sent=0");  
}   
}   
else   
{   
?><style type="text/css">
<!--
body {
	background-color: #000000;
	margin-left: 16px;
	margin-top: 1px;
	margin-right: 0px;
	margin-bottom: 0px;
}
.style1 {color: #E0E2EB}
body,td,th {
	color: #FFFFFF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style2 {font-size: 10px}
.style4 {font-size: 10px; font-weight: bold; }
a:link {
	color: #FFFFFF;
	text-decoration: none;
}
a:visited {
	text-decoration: none;
	color: #FFFFFF;
}
a:hover {
	text-decoration: underline;
	color: #7499C2;
}
a:active {
	text-decoration: none;
}
-->
</style>   


<title>Testing</title>
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<table width="760" height="341" border="0" align="center" cellpadding="0" cellspacing="0" background="test.jpg"> 
<tr>
  <td>&nbsp;</td>
  <td height="24">&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td height="24">&nbsp;</td>
  <td>&nbsp;</td>
  <td><div align="left"></div></td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td width="239">&nbsp;</td> 
  <td width="87" height="24"><div align="left" class="style2">
    <div align="left"><span class="style1">Naam</span></div>
  </div> </td> 
  <td width="9"><span class="style2">:</span></td>
  <td width="300">
    <div align="left">
      <input name="naam" type="text" maxlength="30"> 
    </div></td> 
  <td width="125">&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="25"><div align="left" class="style2">
    <div align="left">Achternaam</div>
  </div></td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input name="achternaam" type="text" maxlength="30"> 
    </div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="25"><div align="left" class="style2">
    <div align="left">Adres</div>
  </div></td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input name="adres" type="text" maxlength="30"> 
    </div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="24"><div align="left" class="style2">
    <div align="left">Postcode</div>
  </div></td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input name="postcode" type="text" maxlength="7">
</div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="24"><div align="left" class="style2">
    <div align="left">Woonplaats</div>
  </div></td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input name="woonplaats" type="text" maxlength="30"> 
    </div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="26" class="style2">Telefoon nr. </td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input name="telefoon" type="text" maxlength="11"> 
    </div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="22"><div align="left" class="style2">
    <div align="left">E-mail</div>
  </div></td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input name="email" type="text" maxlength="40"> 
    </div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td height="24"><div align="left" class="style2">Bijlage </div></td> 
  <td><span class="style2">:</span></td>
  <td>
    <div align="left">
      <input type="file" name="bijlage"> 
    </div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td>&nbsp;</td> 
  <td><div align="left" class="style2"></div></td> 
  <td>&nbsp;</td>
  <td>  <div align="left"></div></td> 
  <td>&nbsp;</td>
</tr> 
<tr>
  <td></td> 
  <td class="style4"><a href="javascript: history.go(-1)" target="_self">Terug</a></td> 
  <td></td>
  <td><div align="left">
    <input type="submit" value="Verstuur" name="submit">
    <input type="reset" name="Reset" value="Wissen">
  </div></td> 
  <td>&nbsp;</td>
</tr> 
</table> 
</form> 
<?   
}   
?> 
Antwoord van provider op vraag waarom het ineens niet meer werkt:

Het domein en de hosting zijn onlangs verhuist naar een andere server .
Deze Server is op alle fronten hetzelfde, maar ondersteund alleen geen MS-FrontPage meer.
PHP scripten zouden gewoon moeten werken.

Tja, heb ik wat aan///het werkt niet meer.

Heb het script op twee andere domeinen geprobeerd, op de 1 werkt het wel, op de ander ook niet.

Waar zit 'm dit in dat bovenstaand script op sommige servers wel, en blijkbaar op sommige servers niet werkt?

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

En haal de @'s bij fopen en mail weg...
Bedankt zover ,maar ik krijg het formulier nog niet werkend.

Dit zijn de errors:

Notice: Undefined index: bericht in /formulier3.php on line 26

Notice: Undefined variable: bestand_size in /formulier3.php on line 36

Notice: Use of undefined constant bijlage - assumed 'bijlage' in /formulier3.php on line 47

Notice: Use of undefined constant type - assumed 'type' in /formulier3.php on line 47

Notice: Use of undefined constant bijlage - assumed 'bijlage' in /formulier3.php on line 60

Notice: Use of undefined constant tmp_name - assumed 'tmp_name' in /formulier3.php on line 60

Notice: Use of undefined constant bijlage - assumed 'bijlage' in /formulier3.php on line 84

Notice: Use of undefined constant name - assumed 'name' in /formulier3.php on line 84

Warning: Cannot modify header information - headers already sent by (output started at /formulier3.php:26) in /formulier3.php on line 94
Zoek eerst eens al die 'constant' errors op en zet er een $ voor
Ga die errors eerst maar eens wegwerken.
Undefined index: bericht => $_POST['bericht'] bestaat niet.
Undefined variable: bestand_size => $bestand_size bestaat niet.
Use of undefined constant bijlage => De constante 'bijlage' bestaat niet.
En haal de @-jes weg, want die onderdrukken fouten.
Ik heb getracht de errors weg te werken, en ik kom een heel eind maar mijn php kennis is niet genoeg om het script weer werkend te krijgen.


Blijft vreemd dat het op de ene server wel werkt en op de ander niet (en ook daar heeft het altijd gewerkt).

Ik wil bovenstaande mensen in ieder geval bedanken voor de hulp.
@tjes zijn weggehaald trouwens

Reageren