PHP script draait niet.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ton Coolen

Ton Coolen

14/07/2023 16:18:13
Quote Anchor link
Ik heb ergens een script gevonden maar het draait helaas niet. ik heb er zelf geen verstand van. Wie kan me helpen


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
//mail formulier voor bijlage
$email ='******';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method


    if($_SERVER['REQUEST_METHOD'] == 'POST')
  if($from == "" || $email == "" || $subject == "" || $file == "" || $bericht == "")
  {

     echo "<center><small><font face=\"Arial\">Gelieve alle velden correct in te vullen.<br><a href=\"javascript:history.back(-1)\">Probeer het opnieuw</a></font></small></center>";
  }

  elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $email))
  {

     echo "<center><small><font face=\"Arial\">Gelieve een geldig e-mailadres in te vullen.<br><a href=\"javascript:history.back(-1)\">Probeer het opnieuw</a></font></small></center>";
  }

  else
  {
         //if file upload send with email as mixed
         if(!empty($_FILES['file']['name']))
         {

            //check filesize
             if($_FILES['file']['size'] < 1024*1024)
             {

                  $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
                $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
                   $headers .= "MIME-Version: 1.0\r\n";
                   //email bestaat uit meerdere  bestanden dus vertel wat de scheidings teken is en dat het een multipart is
                   $headers .= "Content-Type: multipart/mixed; boundary=\"".bound."\"\r\n";
                   //we zenden een attachment mee
                   $headers .= "Content-Disposition:  attachment\r\n";
                   //readfile
                   $fp = fopen($_FILES['file']['tmp_name'],'r');
                   $bestand = fread($fp,$_FILES['file']['size']);
                   fclose($fp);
                   //create body
                   //generenen een body. Dit is een multi part gezeik

                   $body.= "This is a multi-part message in MIME format.\r\n";
                   $body.= "\r\n";
                //boundary
                $body.= "--".bound."\r\n";
                //content type + charater set (iso in dit geval)
                $body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
                //codering (7 bit)
                $body.= "Content-Transfer-Encoding: 7bit\r\n";
                $body.= "\r\n";
                //het bericht
                $body.= $_POST['bericht'] ."\r\n";
                //boundary
                $body.= "--".bound."\r\n";
                //content type + naam bestand (database.sql)
                $body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
                //codering
                $body .= "Content-Transfer-Encoding: base64\r\n";
                //als bijlage toegevoegd
                $body.= "Content-disposition: attachment\r\n";
                $body .= "\n";
                //de inhoud van het bestand
                $body .= chunk_split(base64_encode($bestand )) . "\r\n";
                mail($email,$_POST['subject'],$body,$headers);
                echo 'Email (Met een bijlage) is verzonden';
            }

            else
            {
                 echo 'Bestands groote is te groot';
             }
        }

        else
        {
            $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "MIME-Version: 1.0\r\n";
               $bericht = $_POST['bericht'];
               mail($email,$_POST['subject'],$bericht,$headers);
               echo 'Email (Zonder een bijlage) is verzonden';
         }
     }

     else
     {
        //mail formulier je moet zelf het fomullier maken

        echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"POST\" enctype=\"multipart/form-data\">";
         echo "Naam: <input type='text' name='from'><br>";
         echo "Email:<input type='text' name='email'><br>";
         echo "Onderwerp:<input type='text' name='subject'><br>";
         echo "Bestand:<input type='file' name='file'><br>";
         echo "Bericht:<textarea name='bericht'></textarea><br />";
        echo "<input type=\"submit\" value=\"Verzenden\">";
    }

?>
Gewijzigd op 14/07/2023 18:49:16 door - Ariën -
 
PHP hulp

PHP hulp

28/04/2024 15:06:32
 
Adoptive Solution

Adoptive Solution

14/07/2023 17:01:53
Quote Anchor link
Aan het eind van regel 9 ontbreekt {

En aan het eind van het script ontbreekt de afsluitende }
 
- Ariën  -
Beheerder

- Ariën -

14/07/2023 17:47:37
Quote Anchor link
Ik raad je aan om je mailadres weg te halen.
 
Jan R

Jan R

14/07/2023 18:04:32
Quote Anchor link
Blijkbaar wel een verouderd script.
De tags font en center zijn verouderd in html5

Kijk ook eens naar uw spelling
E-mail en grootte i.p.v. email en groote
Bestandsgrootte is 1 woord.
Hoofdletter na een haakje?
Punt na een zin.
 
- Ariën  -
Beheerder

- Ariën -

14/07/2023 18:51:03
Quote Anchor link
Ik raad aan om mail(....) in een if-else te gieten. Want nu ga je ervan uit dat het altijd lukt, terwijl mail() ook kan falen.
 
Ton Coolen

Ton Coolen

14/07/2023 19:11:29
Quote Anchor link
Beste PHP luitjes,

Op de eerste plaats bedankt voor jullie inzet en raad.
Nu ik ging kijken zag ik het ook dat de Nederlanse taal in het script te wensen overlaat. Zoals ik al had aangegeven, heb ik het scirpt enkele jaren geleden ergens gedownload, maar omdat het niet werkte heb ik het ergens geparkeerd. Ik denk dat ik dan toch maar ergens anders iets moet gaan zoeken wat wel werkt, omdat ik er geen verstand van heb. Luitjes, nogmaals bedankt.
 
Ad Fundum

Ad Fundum

15/07/2023 08:14:26
Quote Anchor link
Geachte heer Coolen,

Dank voor uw inzendingen.
Neemt u alstublieft contact op met het dichtstbijzijnde internetbureau in uw omgeving.
Daar is de vereiste kennis en tijd aanwezig om genoemde functionaliteit werkend te krijgen.
U kunt daar meteen advies krijgen over het versturen van (bulk) e-mail.

Met vriendelijke groet,
Ad
 
- Ariën  -
Beheerder

- Ariën -

15/07/2023 10:43:22
Quote Anchor link
Ton, had je nog naar de uitleg van Adoptive Solution gekeken?
 
Ton Coolen

Ton Coolen

15/07/2023 14:29:12
Quote Anchor link
Beste luitjes,

Op de eerste plaats iedereen bedankt voor de inzet en goede raad. Wat ik al eerder aangegeven heb in voorgaande berichten is dat ik totaal geen verstand heb van het programmeren in welke scripttaal dan ook. Ik was er vanuit gegaan dat één van jullie het script wel draaiende zou krijgen. Helaas was het dus een illusie. Maar ik heb daar vrede mee. Ik ben 74 jaar en heb geen interesse meer om me echt in die programmeertechnieken te verdiepen. Dus lieve mensen, nogmaals bedankt allemaal, en ik laat het hierbij. Ik zou wel graag van iemamd horen hoe ik nu deze topic moet sluiten.
 
- Ariën  -
Beheerder

- Ariën -

15/07/2023 15:44:15
Quote Anchor link
Ieder zijn mening en besluit, maar dit is opsich geen rocket-science:

Adoptive Solution op 14/07/2023 17:01:53:
Aan het eind van regel 9 ontbreekt {

En aan het eind van het script ontbreekt de afsluitende }


Misschien dat het dan wel goed werkt. Dus geef het een kans, en probeer het eens.
Misschien ben je dus al voor 99,99% bij de oplossing i.p.v. op te geven. Hier is geen programmeerkennis voor nodig.

Voor de rest sluiten we geen topics, tenzij ze de huisregels overtreden. Ze zinken vanzelf omlaag.
Gewijzigd op 15/07/2023 15:46:20 door - Ariën -
 
Adoptive Solution

Adoptive Solution

15/07/2023 15:49:26
Quote Anchor link
Kwam er inmiddels achter dat regel 14 (de regex email) ook niet goed is.
Even // ervoor zetten.

Verder geen intentie om de rest uit te vlooien.
 
Ivo P

Ivo P

17/07/2023 09:47:15
Quote Anchor link
Het is even jammer dat niet bekend is waarom het script niet werkt.
Een foutmelding zou nuttig zijn.

Daarvoor zouden de regels

error_reporting(E_ALL);
ini_set('display_errors', true);

nuttig zijn bovenin het script. Bijvoorbeeld op regel 2 direct.

Daarnaast denk ik dat de functie eregi "iets" verouderd is: hij is niet eens meer te vinden op php.net, maar nog wel op
http://php.adamharvey.name/manual/en/function.eregi.php

Sinds php 5.3 Deprecated en sinds 7.0 verwijderd uit php.

Daarnaast:
het script vertrouwt er zo te zien op dat de velden uit een formulier, zoals te vinden in $_POST['from'] op magische wijze in $from terecht komen. Ook dat is in een grijs verleden al afgeschaft.
Dus voorbij regel 10 kom je al niet.


Ik zou een ander (actueler) script zoeken. Het liefst iets met phpmailer.

even uit de losse pols:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $ontvanger = '[email protected]';

  include 'file_met_php_mailer.php';

  $from = filter_input(INPUT_POST, 'from', FILTER_VALIDATE_EMAIL);
  $bericht = filter_input(INPUT_POST, 'bericht');
  $subject = filter_input(INPUT_POST, 'sunject');

  if ($from && $bericht && $subject) {

    $mail = new phpmailer();
    $mail->setFrom($from, $from . ' via website');
    $mail->addReplyTo($from);
    $mail->addAddress($ontvanger);

    $mail->Subject = $subject;
    $mail->Body = $bericht';

    if($_FILES['
file']['size'] < 1024*1024 && $_FILES['file']['size'] > 0) {

      $mail->addAttachment($_FILES['
file']['tmp_name']
    }


    if ($mail->send()) {
       echo '
mail is verstuurd';
    }
    else {
       echo '
versturen van mail ging niet goed';
    }
  }

  
}

// en ELSE het formulier tonen.
?>


PHPMailer neemt je heel wat werk uit handen.

Toevoeging op 17/07/2023 09:53:22:

En dan kan het nog steeds zo zijn dat je mail niet ontvangen wordt, omdat het FROM adres niet klopt.

FROM definieert wie de mail zegt te versturen. Daar kan ik dus een mailadres als [email protected] invullen.
De mail wordt vervolgens door jouw mailserver / webserver verstuurd.

De ontvangende kant ziet dan "er komt een mail binnen van server X maar die is niet gemachtigd om mails te versturen namens phphulp.xyz." En grote kans dat die dus als spam / fake geweigerd wordt.

Daarom zou je bij FROM ook iets moeten zetten als $mail-setFrom('[email protected]', 'website formulier');
Want DAAR komt de mail vandaan.

REPLY-TO definieert waarheen een eventueel antwoord verstuurd moet worden.
Gewijzigd op 17/07/2023 09:49:13 door Ivo P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.