wit pagina, syntax error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mohamed nvt

Mohamed nvt

21/09/2022 23:21:29
Quote Anchor link
Wanneer ik onderstaand pagina oproep, dan krijg ik een wit pagina.
Er is blijkbaar een syntax fout,maar ik kan het niet vinden.
live voorbeeld: jocke-overwater.nl/contact.php

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
92
93
94
95
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// define variables and set to empty values
$vnaamErr = $anaamErr = $emailErr = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (empty($_POST["voornaam"])) {
    $vnaamErr = "Graag uw voornaam invullen";
  }
else {
    $voornaam = test_input($_POST["voornaam"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
      $vnaamErr = "Uw voornaam mag alleen letters en spaties bevatten";
    }
  }


  if (empty($_POST["achternaam"])) {
    $anaamErr = "Graag uw achternaam invullen";
  }
else {
    $achternaam = test_input($_POST["achternaam"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
      $anaamErr = "Uw achternaam mag alleen letters en spaties bevatten";
    }
  }


  if (empty($_POST["mailadres"])) {
    $emailErr = "Graag uw mailadres invullen";
  }
else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Het formaat van het ingevoerde mailadres is niet correct";
    }
  }


  $uwvraag = $_POST["mailadres"] ;
  if (empty($vnaamErr && $anaamErr && $emailErr)) {
    //mail versturen
  
    $to = "Naar het mailadres";
    $subject = "Mail afkomstig uit de website";
    $body = "";
    $body. = "Voornaam: " . $voornaam . "\r\n";
    $body. = "Achternaam: " . $achternaam . "\r\n";
    $body. = "Het mailadres: " . $voornaam . "\r\n";
    $body. = "Uw vraag: " . $uwvraag. "\r\n";
    $headers ="From: [email protected] \r\n";
    $headers .="MIME-Version: 1.0" . "\r\n";
    $headers .="Content-type:text/html;charset=UTF-8" . "\r\n";
    if (mail($to,$subject,$body)) {
      echo "bedankt voor uw mail. We nemen zsm contact met je op!";
    }
else {
      echo "Mail niet verstuurd!";
    }
    
  }
else {
    echo "Er is iets mis gegaan met het contactformulier.";
  }

}
function
test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}




$page = "contact";
include "Inc/header.php";
?>

<div class="main">
<div class="formulier">
<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
        <label for="Voornaam">Voornaam</label><br />
        <input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        <label for="achternaam">Achternaam</label><br />
        <input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        <label for="Mailadres">Mailadres</label><br />
        <input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        </br>
        <label for="uwvraag">Uw vraag:</label></br>
        <textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
        <input type="submit" value="Verzenden"> <input type="reset" value="Reset">
    </form>
  </div>  
  </div>
  <?php
include "Inc/footer.php";
?>
Gewijzigd op 21/09/2022 23:33:15 door Mohamed nvt
 
PHP hulp

PHP hulp

29/03/2024 10:59:17
 
- Ariën  -
Beheerder

- Ariën -

21/09/2022 23:22:39
Quote Anchor link
Wat zegt de error-log?
 
Mohamed nvt

Mohamed nvt

21/09/2022 23:31:25
Quote Anchor link
- Ariën - op 21/09/2022 23:22:39:
Wat zegt de error-log?


Bij de ISP bedoel je?
 
- Ariën  -
Beheerder

- Ariën -

21/09/2022 23:40:35
Quote Anchor link
In ieder geval op de webserver.
 
Ivo P

Ivo P

22/09/2022 09:28:53
Quote Anchor link
of zet dit in een .htaccess file op je ontwikkel-omgeving:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Dat zou ook parse-errors moeten weergeven.
Als je script een } mist of een ; dan kan het script niet starten. Dan komt hij dus ook niet op regel 2,3 en 4 om error-reporting aan te zetten en eindig je met een wit scherm als de webserver standaard uitgaat van "geen errors tonen"
 
Mohamed nvt

Mohamed nvt

22/09/2022 22:12:17
Quote Anchor link
Het probleem heb ik opgelost!
Vanaf regel 44 t/m 48 was er te veel ruimte tussen . en =.
Vanaf regel 37 check ik of alle variabelerrors leeg zijn, zo dan verstuur ik het formulier en anders wordt er een bericht weergegeven dat er iets mis gegaan met het formulier.
En juist nadat ik alles correct heb ingevuld in het formulier en dus de variabelerrors leeg zijn, wordt het formulier niet verzonden.
Iemand een idee waar ik het moet dan gaan zoeken?

Toevoeging op 22/09/2022 22:35:51:

Ik ben weer een stapje verder en nu kom ik twee bijzondere foutmeldingen tegen!
Om het formaat van het mailadres te controleren gebruik ik op regel 33 een functie om dit te doen. Nadat ik het juiste mailadres formaat heb ingevuld krijg ik toch de melding dat het formaat niet correct is!
En schijnbaar lijkt alles goed te gaan, want de controle of alle variabelerrors leeg zijn, gaat goed op regel 37 en de controle op regel 50 gaat ook goed, want na alles op het formulier verschijnt de melding van regel 51 en toch krijg ik geen mail binnen.
Hoe kan dit dan?
Iemand een idee!
Gewijzigd op 22/09/2022 22:39:24 door Mohamed nvt
 
- Ariën  -
Beheerder

- Ariën -

22/09/2022 22:36:41
Quote Anchor link
Ik sla alle validatie-fouten altijd op in een array, en zodra die leeg is ( controleer met: count($errors) == 0 ) kan je aan het e-mail proces beginnen.

Als er iets fout gaat kan je altijd een hele rits met foutmeldingen tonen.

Toevoeging op 22/09/2022 22:47:35:

En probeer ook zulke foutmeldingen als dit te vermijden.

"Er is iets mis gegaan met het contactformulier."

Vermeld wát er aan de hand is als het een foutmelding voor de gebruiker is. En als het een foutmelding is omdat je script niet werkt, vermeld dan dat het aan de website ligt. En log de fout op de achtergrond voor de programmeurs.

Niets is zo vervelend als onduidelijke foutmeldingen.
Gewijzigd op 22/09/2022 22:48:32 door - Ariën -
 
Jan R

Jan R

23/09/2022 06:43:45
Quote Anchor link
2 X dezelfde controle nba elkaar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (empty($vnaamErr) && empty($anaamErr) && empty($emailErr)) {
  $uwvraag = $_POST["mailadres"] ;
  if (empty($vnaamErr && $anaamErr && $emailErr)) {


uwvraag is gelijk aan mailadres???
Het mailadres is gelijk aan $voornaam.
Consequent hoofdlettergebruik. Overal hoofdletter behalve "bedankt voor uw".
Wat doet $page = "contact";? $page wordt niet meer gebruikt.
Vermijd afkortingen en indien toch graag juist. zsm ==> z.s.m..
Gewijzigd op 23/09/2022 10:20:43 door Jan R
 
Ivo P

Ivo P

23/09/2022 09:50:27
Quote Anchor link
je functie test_input() test helemaal niets. deze functie verandert je data.

En ook nog eens onnodig. Ja, het kan handig lijken om al je input-data "schoon te maken" zodat deze "onschadelijk" is.
Maar data kan voor verschillende toepassingen op verschillende manieren lastig zijn.

* In een SQLquery is een ' vervelend, aangezien dat de begrenzing van een string aangeeft.
* in html is een < het begin van een html-tag, en dat wil je niet op je scherm hebben, danwel je wilt niet dat iemand javascript opneemt in de invoer
* ooit in een grijs verleden leek het de bouwers van PHP verstandig om bepaalde tekens direct te escapen met \ om een en ander ook veilig te hebben voor duffe programmeurs die zelf niet opletten. Daarom was vaak de stripslashes functie nodig. Maar dat is volgens mij ook al in php 5.weinig opgeheven.

Anyway:
trim(). Ok, kan ik me in vinden.
stripslashes() alleen als je php 4 draait. Ander kan iemand die het over C:\Windows heeft zijn tekst zien veranderen
htmlspecialchars() alleen in combinatie met het printen van tekst op scherm, of opbouwen van de body van de mail.

je verandert nu ook tekens die in een mail-adres voor voor mogen komen.
Ik heb bijvoorbeeld een mail adres ivo'[email protected] . En dat is een legaal formaat. Maar jij sloopt die ' tot &#39;

---
preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
$vnaamErr = "Uw voornaam mag alleen letters en spaties bevatten";

Wat is er toch mis met namen die andere tekens dan A-Z bevatten?
Ik ken zat mensen die een é of ë in de naam hebben.

Een naam die uit 1 spatie (of 10 voor mijn part), sta je weer wel toe.
Eerst constateer je dat de invoer niet leeg is (if (empty($_POST["voornaam"])) {)
Daarna haal je de data door test_input, zodat je de spaties trimt.

En tenslotte gebruik je * in je regex die ook 0 tekens prima vindt....
Gewijzigd op 23/09/2022 09:51:35 door Ivo P
 
Mohamed nvt

Mohamed nvt

24/09/2022 12:42:48
Quote Anchor link
Naar aanleiding van jullie feedback, heb ik het eea aangepast, helaas ontvang ik nog steeds geen mail vanuit het contactformulier.
Momenteel loop ik tegen de volgende errors aan:
1. Blijkbaar is de errors array leeg en ik krijg netjes de bevestiging dat het alles goed gaat, regel 53 en toch krijg ik geen mail binnen, ook niet in de spam map.
Iemand een idee waar ik het moet zoeken?



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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php

// define variables and set to empty values
$errors = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (empty($_POST["voornaam"])) {
    $errors['voornaam'] = "Graag uw voornaam invullen";
  }
else {
    $voornaam = test_input($_POST["voornaam"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
      $errors['voornaam'] = "Uw voornaam mag alleen letters en spaties bevatten";
    }
  }


  if (empty($_POST["achternaam"])) {
    $errors['achternaam'] = "Graag uw achternaam invullen";
  }
else {
    $achternaam = test_input($_POST["achternaam"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
      $errors['achternaam'] = "Uw achternaam mag alleen letters en spaties bevatten";
    }
  }


  if (empty($_POST["mailadres"])) {
    $errors['mailadres'] = "Graag uw mailadres invullen";
  }
else {
    $email = test_input($_POST["mailadres"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $errors['mailadres'] = "Het formaat van het ingevoerde mailadres is niet correct";
    }
  }


  $uwvraag = test_input($_POST["uwvraag"]) ;
 
  if (count($errors) == 0) {
    //mail versturen
  
    $to = "[email protected]";
    $subject = "Mail afkomstig uit de website";
    $message= "";
    $message.=  "Voornaam: " .$voornaam. "\r\n";
    $message.= "Achternaam: " .$achternaam. "\r\n";
    $message.= "Het mailadres: " .$email. "\r\n";
    $message.= "Uw vraag: " . $uwvraag. "\r\n";
    $headers ="From: [email protected] \r\n";
    $headers.="MIME-Version: 1.0" . "\r\n";
    $headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
    
    if (mail($to,$subject,$message,$headers)) {
      echo "Bedankt voor uw mail. Er wordt contact met u opgenomen!";
    }
else {
      echo "Mail niet verstuurd!";
    }
    
  }

}
function
test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}




$page = "contact";
include "Inc/header.php";
?>

<div class="main">
<div class="formulier">
<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
        <label for="Voornaam">Voornaam</label><br />
        <input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        <span>
          <?php
            if (isset($errors['voornaam'])) {
              echo $errors['voornaam'];
            }

          ?>

        </span>
        <label for="achternaam">Achternaam</label><br />
        <input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        <span>
          <?php
          if (isset($errors['achternaam'])) {
            echo $errors['achternaam'];
          }

          ?>

        </span>
        <label for="Mailadres">Mailadres</label><br />
        <input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
        </br>
        <span>
          <?php
          if (isset($errors['mailadres'])) {
            echo $errors['mailadres'];
          }

          ?>

        </span>
        <label for="uwvraag">Uw vraag:</label></br>
        <textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
        <input type="submit" value="Verzenden"> <input type="reset" value="Reset">
    </form>
  </div>  
  </div>
  <?php
include "Inc/footer.php";
?>
 
- Ariën  -
Beheerder

- Ariën -

24/09/2022 13:22:16
Quote Anchor link
Hoe ziet je errors array eruit?
 
Jan R

Jan R

24/09/2022 18:36:33
Quote Anchor link
Zijn uw e-mail instellingen wel juist?

Gebruik anders phpmailer of een ander packet. Minder problemen en meer controle
 
Ozzie PHP

Ozzie PHP

24/09/2022 21:26:18
Quote Anchor link
Als je het nou eens gewoon even simpel houdt. Vergeet die hele lap code en maak een nieuwe pagina test.php aan met daarin het onderstaande:

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
<?php

echo 'Test pagina aangeroepen.';

$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.=  "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";

mail($to,$subject,$message,$headers);

?>

Roep vervolgens de pagina test.php aan in je browser. Ontvang je de mail nu wel? Dan zit de fout in de rest van je code. Ontvang je de mail nog steeds niet, dan gaat er iets fout met het versturen.
 
Mohamed nvt

Mohamed nvt

24/09/2022 23:27:53
Quote Anchor link
- Ariën - op 24/09/2022 13:22:16:
Hoe ziet je errors array eruit?

Zoals hierboven regel 4 of wat bedoel je precies?


Toevoeging op 24/09/2022 23:28:38:

Jan R op 24/09/2022 18:36:33:
Zijn uw e-mail instellingen wel juist?

Gebruik anders phpmailer of een ander packet. Minder problemen en meer controle


Welke e-mailinstellingen bedoel je?
Ik heb geen ervaringen met phpmailer. Is het lastig te configureren voor een contactformulier?

Toevoeging op 24/09/2022 23:31:42:

Ozzie PHP op 24/09/2022 21:26:18:
Als je het nou eens gewoon even simpel houdt. Vergeet die hele lap code en maak een nieuwe pagina test.php aan met daarin het onderstaande:

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
<?php

echo 'Test pagina aangeroepen.';

$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.=  "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";

mail($to,$subject,$message,$headers);

?>

Roep vervolgens de pagina test.php aan in je browser. Ontvang je de mail nu wel? Dan zit de fout in de rest van je code. Ontvang je de mail nog steeds niet, dan gaat er iets fout met het versturen.


Dit werkt WEL bij mijn eigen ISP, maar niet bij het hostingbedrijf waar jocke-overwater.nl wordt gehost.
Overigens, de gehele code van contact.php werkt ook niet bij mijn eigen ISP....
 
Ozzie PHP

Ozzie PHP

25/09/2022 00:37:20
Quote Anchor link
>> maar niet bij het hostingbedrijf waar jocke-overwater.nl wordt gehost

Vervang deze regel:

mail($to,$subject,$message,$headers);

eens door

mail($to,$subject,$message,$headers, '-f [email protected]');

En probeer het dan nog eens.
 
- Ariën  -
Beheerder

- Ariën -

25/09/2022 00:44:33
Quote Anchor link
Mohamed nvt op 24/09/2022 23:27:53:
- Ariën - op 24/09/2022 13:22:16:
Hoe ziet je errors array eruit?

Zoals hierboven regel 4 of wat bedoel je precies?

Ik heb het over hoe je array eruit ziet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($errors);
?>

En pas Ozzie's code aan naar dit:

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
<?php

echo 'Test pagina aangeroepen.';

$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.=  "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";

if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
}
else {
echo "Het is mislukt.";
}


?>


Dan zie je meteen of de mail() functie aangeroepen wordt.
Hoewel ikzelf toch liever phpMailer adviseer en dan via SMTP.
Dat werkt veel makkelijker, en is beter te debuggen omdat je dan meer controle hebt over de verbinding.
Gewijzigd op 25/09/2022 00:48:31 door - Ariën -
 
Mohamed nvt

Mohamed nvt

25/09/2022 13:42:30
Quote Anchor link
Ozzie PHP op 25/09/2022 00:37:20:
>> maar niet bij het hostingbedrijf waar jocke-overwater.nl wordt gehost

Vervang deze regel:

mail($to,$subject,$message,$headers);

eens door

mail($to,$subject,$message,$headers, '-f [email protected]');

En probeer het dan nog eens.


Bij Strato webhosting werkt bovenstaande wel, maar bij Hostnet, waar het domeinnaam Jocke-Overwater.nl wordt gehost, helaas niet.

Toevoeging op 25/09/2022 13:44:27:

- Ariën - op 25/09/2022 00:44:33:
Mohamed nvt op 24/09/2022 23:27:53:
- Ariën - op 24/09/2022 13:22:16:
Hoe ziet je errors array eruit?

Zoals hierboven regel 4 of wat bedoel je precies?

Ik heb het over hoe je array eruit ziet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($errors);
?>

En pas Ozzie's code aan naar dit:

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
<?php

echo 'Test pagina aangeroepen.';

$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.=  "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";

if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
}
else {
echo "Het is mislukt.";
}


?>


Dan zie je meteen of de mail() functie aangeroepen wordt.
Hoewel ikzelf toch liever phpMailer adviseer en dan via SMTP.
Dat werkt veel makkelijker, en is beter te debuggen omdat je dan meer controle hebt over de verbinding.


Wanneer ik print_r ($errors) aanroep, dan is het leeg!
Ik doe dit nadat ik gecontroleerd heb of de inhoud van de errors array groter is dan een 0
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if (count($errors) == 0) {
    print_r($errors);


Toevoeging op 25/09/2022 13:45:51:

Ik heb een sterk vermoeden dat het probleem ligt aan Hostnet, waar het domeinnaam Jocke-overwater.nl wordt gehost, maar vreemd genoeg werkt de gehele code ook niet bij Strato..
Waar moet ik het zoeken denken jullie? Of vinden jullie dat ik perse moet overstappen naar PHPMailer?
 
- Ariën  -
Beheerder

- Ariën -

25/09/2022 13:53:00
Quote Anchor link
Het probleem ligt niet bij je error-array.
Zelf raad ik aan om geen gebruik te krijgen van de mail()-functie en dus wel de SMTP-manier met phpMailer te gebruiken.
 
Mohamed nvt

Mohamed nvt

25/09/2022 19:43:49
Quote Anchor link
- Ariën - op 25/09/2022 13:53:00:
Het probleem ligt niet bij je error-array.
Zelf raad ik aan om geen gebruik te krijgen van de mail()-functie en dus wel de SMTP-manier met phpMailer te gebruiken.

Oke, dankjewel voor jouw advies en ik ga mij verder verdiepen in PHPMailer.
Vreemd genoeg werkt de mail() wel bij Strato webhosting.
 
Ivo P

Ivo P

26/09/2022 10:35:29
Quote Anchor link
Heb je dit gelezen: https://helpdesk.hostnet.nl/hc/nl-nl/articles/360015074777-E-mail-versturen-vanaf-je-website

Wat levert dit stukje op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
}
else {
echo "Het is mislukt.";
}

?>


zegt PHP dat het gelukt is of niet?
Dit zegt namelijk of PHP de mail aan een mailserver kon overhandigen. Zeg maar zoals je een brief in de brievenbus op de hoek van de straat gooit.

Daarna kunnen er nog 100 dingen fout gaan: De server kan zelf detecteren dat het mailadres van de afzender niet bestaat en daarom de mail droppen.
De ontvangende servers kunnen concluderen dat de hostnet mailserver niet bij de afzender hoort en daarom de mail niet accepteren. Of dat de Hostnet server een te grote spamrating heeft.

Kortom: je kunt meekijken tot de mailserver hem aanpakt. En met PHPMailer kun je eventueel net iets meer info krijgen. Maar dan nog zit er verschil tussen "de mail wordt niet aangemomen door de mailserver" "de mail wordt niet verstuurd" en "de mail komt niet aan bij de ontvanger".

Effectief zal hij in deze 3 gevallen inderdaad niet aankomen bij de ontvanger, maar het waarom en op welke plek is de zoektocht.
 
- Ariën  -
Beheerder

- Ariën -

26/09/2022 11:22:00
Quote Anchor link
Een paar tips voor goede afhandeling van de mail()-functie:

- Gebruik je eigen domeinnaam in het mailadres als afzender, dus geen hotmail.com, gmail.com of whatever.com

- Zorg dat het mailadres ook bestaat als alias die aan een mailbox of forwarder gekoppeld is.

Maar phpMailer blijft het beste.
Gewijzigd op 26/09/2022 11:23:17 door - Ariën -
 

Pagina: 1 2 volgende »



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.