Problemen met else error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Keven Vanovertveldt

Keven Vanovertveldt

10/01/2019 20:53:58
Quote Anchor link
Beste forumleden,

OP mijn contact formulier krijg ik volgende error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Fatal error: Uncaught Error: Call to undefined function ereg() in /customers/3/1/3//httpd.www/pages/contact.php:55
Stack trace: #0 /customers/3/1/3//httpd.www/index.php(145): require() #1 {main} thrown in /customers/3/1/3//httpd.www/pages/contact.php on line 55


Via volgende pagina (https://www.phphulp.nl/php/script/snippets/contact-script/1653/contactscript/865/)
vond ik volgend gedeelte:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
// Daarna een controle met een reguliere expressie uitvoeren:
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $emailadres)) {
        return TRUE;
    }


Dit heb ik nu kunnen oplossen maar volgende error krijg ik nog steeds:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Parse error: syntax error, unexpected 'else' (T_ELSE), expecting end of file in /customers/3/1/3//httpd.www/pages/contact.php on line 124


Geen idee wat er mis zou kunnen gaan.

Mijn fout zit in lijn 124 (hier op lijn 9):
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
<?php
/* ..... */
if(!empty($error_msg))
    {

    //Een van de velden werd niet goed ingevuld
    echo "<div class=\"style1\"><b>Het bericht kon niet worden verzonden door volgende redenen:</b></div><br>";
    echo $error_msg;
    echo "<br><div class=\"style1\">Klik op <a href=javascript:history.back(1)><b>Ga terug</b></a> en vul alle velden in.</span><br><br>";
    }

else
    {  
    $recipient = "info@example.com"; //Het email adres van de persoon die vragen moet ontvangen.
    $subject = "Contact."; //Subject van de mail.  
    $header = "From: " . $_POST['naam'] . "  " . $_POST['voornaam'] ." <info@example.com>\r\nReply-to: <" . $_POST['MAILFROM'] . ">";
    $mail_body = "Contact:\n----------\n\n";
    $mail_body .= "Vooraam: " . $_POST['voornaam'] . "\n";
    $mail_body .= "Naam: " . $_POST['naam'] . "\n";  
    $mail_body .= "E-mail: " . $_POST['MAILFROM'] . "\n";
    
    $mail_body .= "Inhoud: " . $_POST['inhoud'] . "\n";
    $mail_body .= "Onderwerp: " . $_POST['SUBJECT'] . "\n";
    $mail_body .= "IP-adres: " .$_SERVER["REMOTE_ADDR"]. "\n";
    $mail_body .= "Browser: " .$_SERVER["HTTP_USER_AGENT"]. "\n";
    $mail_body .= "Referer: " .$_SERVER["HTTP_REFERER"]. "\n";
    $mail_body .= "Host: " .$_SERVER['HTTP_HOST']. "\n";
    $mail_body .= "Tijd: " . date("d-m-Y") . " " . date("H:i") . "\n\n";
    $mail_body .= "Bericht:\n";
    $mail_body .= $_POST['field'];  
    mail($recipient, $subject, $mail_body, $header); //verzenden email
    echo "<div class=\"style1\"><b>Beste " .$_POST['naam']. ", uw bericht is succesvol verzonden.</b></div><br>
    <div class=\"style1\">Er zal zo spoedig mogelijk contact met u opgenomen worden.</div><br><br>"
;
    echo "<div class=\"style1\"><a class=\"main\" href='javascript:history.back(1)'>< Ga terug</a></div>";
    }
}

else
{
?>


<form action="" method="POST" name="contact">
  <table border="0" align="left" width="50%" class="style1">
            <input type='hidden' id='antispam' name='antispam' value='' />
            <script type='text/javascript'>
            document.getElementById('antispam').value='IkWilGeenSpam';
            </script>
    <tr>
...    
Gewijzigd op 10/01/2019 21:01:11 door - Ariën -
 
PHP hulp

PHP hulp

16/01/2019 03:43:16
 
- Ariën -
Beheerder

- Ariën -

10/01/2019 20:59:32
Quote Anchor link
ereg() bestaat al tegenwoordig niet meer, dit moet je dus omschrijven naar preg_match.

Waar komt die else van lijn 34 t/m 36 vandaan? Die lijkt nog loos, of we missen een stuk van je code.
Gewijzigd op 10/01/2019 21:02:45 door - Ariën -
 
Keven Vanovertveldt

Keven Vanovertveldt

10/01/2019 21:56:02
Quote Anchor link
Ja tuurijk, is maar een deel van de code.
Het probleem me de ereg() functie is intussen opgelost.

Hier mijn volledige pagina code, het is de else op lijn 119 die voor problemen zorgt volgens de error:
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
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?php
if(!defined("site")) {
    echo "<br /><center>Access denied!</center> \n";
}
else {
 // Start Google CAPCHA
    function post_captcha($user_response) {
        $fields_string = '';
        $fields = array(
            'secret' => '',
            'response' => $user_response
        );
        foreach($fields as $key=>$value)
        $fields_string .= $key . '=' . $value . '&';
        $fields_string = rtrim($fields_string, '&');

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
        curl_setopt($ch, CURLOPT_POST, count($fields));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);

        $result = curl_exec($ch);
        curl_close($ch);

        return json_decode($result, true);
    }


    // Call the function post_captcha
    $res = post_captcha($_POST['g-recaptcha-response']);
    // Stop Google CAPCHA
?>

<div class="title">Contact</div><br />


<?
$vervuild
   = FALSE; // TRUE als het formulier geen fouten bevat


if(!empty($_POST['Submit']))
{


// START: Antie spam.
if ($_POST['antispam'] != 'IkWilGeenSpam' )
    {
$error_msg .='<div class="style1">- <b>Ik wil geen spam!</b></div>'; }
// STOP: Antie spam.

if(strlen($_POST['voornaam']) == 0)
    {
$error_msg .="<div class=\"style1\">- Voer astublieft uw voornaam in.</div>"; }

if(strlen($_POST['naam']) == 0)
    {
$error_msg .="<div class=\"style1\">- Voer astublieft uw naam in.</div>"; }
    
if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['MAILFROM']))
    {
$error_msg .="<div class=\"style1\">- Voer astublieft een geldig email adres in.</div>"; }

// Eerst een snelle controle uitvoeren:
    // een e-mailadres moet uit minimaal 7 tekens bestaan:

    if (strlen($_POST['MAILFROM']) < 7) {
        return FALSE;
    }

    // Daarna een controle met een reguliere expressie uitvoeren:
    if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['MAILFROM'])) {
        return TRUE;
    }
else {
        return FALSE;
    }


            if (!is_email($_POST['MAILFROM'])) {
                $error_msg .= "<strong>" . htmlentities($_POST['MAILFROM']) . "</strong> is geen geldig e-mailadres. ";
                $vervuild  = TRUE;
            }
        }



if(strlen($_POST['inhoud']) == 0)
    {
$error_msg .="<div class=\"style1\">- Duid astublieft de inhoud aan.</div>"; }

if(strlen($_POST['SUBJECT']) == 0)
    {
$error_msg .="<div class=\"style1\">- Voer astublieft uw onderwerp in.</div>"; }
 
if(strlen($_POST['field']) == 0)
    {
$error_msg .="<div class=\"style1\">- Voer astublieft uw bericht in.</div>"; }
    
if (!$res['success'])
    {
$error_msg .="<div class=\"style1\" style=\"line-height: 16pt;\">- Vink alstublieft de CAPTCHA box aan.</div><br/>"; }
    
if(!empty($error_msg))
    {

    //Een van de velden werd niet goed ingevuld
    echo "<div class=\"style1\"><b>Het bericht kon niet worden verzonden door volgende redenen:</b></div><br>";
    echo $error_msg;
    echo "<br><div class=\"style1\">Klik op <a href=javascript:history.back(1)><b>Ga terug</b></a> en vul alle velden in.</span><br><br>";
    }

else
    {  
    $recipient = "info@example.be"; //Het email adres van de persoon die vragen moet ontvangen.
    $subject = "Contact."; //Subject van de mail.  
    $header = "From: " . $_POST['naam'] . "  " . $_POST['voornaam'] ." <info@example.be>\r\nReply-to: <" . $_POST['MAILFROM'] . ">";
    $mail_body = "Contact:\n----------\n\n";
    $mail_body .= "Vooraam: " . $_POST['voornaam'] . "\n";
    $mail_body .= "Naam: " . $_POST['naam'] . "\n";  
    $mail_body .= "E-mail: " . $_POST['MAILFROM'] . "\n";
    
    $mail_body .= "Inhoud: " . $_POST['inhoud'] . "\n";
    $mail_body .= "Onderwerp: " . $_POST['SUBJECT'] . "\n";
    $mail_body .= "IP-adres: " .$_SERVER["REMOTE_ADDR"]. "\n";
    $mail_body .= "Browser: " .$_SERVER["HTTP_USER_AGENT"]. "\n";
    $mail_body .= "Referer: " .$_SERVER["HTTP_REFERER"]. "\n";
    $mail_body .= "Host: " .$_SERVER['HTTP_HOST']. "\n";
    $mail_body .= "Tijd: " . date("d-m-Y") . " " . date("H:i") . "\n\n";
    $mail_body .= "Bericht:\n";
    $mail_body .= $_POST['field'];  
    mail($recipient, $subject, $mail_body, $header); //verzenden email
    echo "<div class=\"style1\"><b>Beste " .$_POST['naam']. ", uw bericht is succesvol verzonden.</b></div><br>
    <div class=\"style1\">Er zal zo spoedig mogelijk contact met u opgenomen worden.</div><br><br>"
;
    echo "<div class=\"style1\"><a class=\"main\" href='javascript:history.back(1)'>< Ga terug</a></div>";
    }
}

else
{
?>


<form action="" method="POST" name="contact">
  <table border="0" align="left" width="50%" class="style1">
            <input type='hidden' id='antispam' name='antispam' value='' />
            <script type='text/javascript'>
            document.getElementById('antispam').value='IkWilGeenSpam';
            </script>
    <tr>
    
        <td width="30%">
          <b>Voornaam:</b> <font color="#CC0000">*</font></td>
        <td width="20%">
            <input name="voornaam" type="text" size="29"></td>
    </tr>
    <tr>
    
        <td width="30%">
          <b>Naam:</b> <font color="#CC0000">*</font></td>
        <td width="20%">
            <input name="naam" type="text" size="29"></td>
    </tr>
    <tr>
        
        <td width="30%">
          <b>E-mail:</b> <font color="#CC0000">*</font></td>
        <td width="20%">
            <input name="MAILFROM" type="text" size="29"></td>
    </tr>
    <tr>
        
        <td width="30%">
          <b>Inhoud:</b> <font color="#CC0000">*</font></td>
        <td width="20%">
        <select name="inhoud">
        <option value="" selected="selected">(maak een keuze)</option>
        <option value="Andere">Andere</option>
        </select></td>
    </tr>
    <tr>
        
        <td width="30%">
          <b>Onderwerp:</b> <font color="#CC0000">*</font></td>
        <td width="20%">
            <input name="SUBJECT" type="text" size="29" maxlength="30"></td>
    </tr>
    <tr>
        
        <td colspan="2">
          <b>Bericht:</b> <font color="#CC0000">*</font><br>
           <div align="left"><textarea name="field" cols="42" rows="6"></textarea></div>
          <br>
          
          <div align="right">
          Velden met een <font color="#CC0000">*</font> zijn verplicht in te vullen.&nbsp;&nbsp;</div>

          <br />
          
             <div align="right">
             <input type="Submit" name="Submit" value="Verzenden">
             <noscript>
             <input type="button" name="buiten gebruik" value="Buiten gebruik!">
             </noscript>
            &nbsp;
              <input type="reset" name="cmdWissen" value="Wis">&nbsp&nbsp;</div></td>
    </tr>
    </table>
</form>
<?php
}
?>

<?php
}
?>
Gewijzigd op 10/01/2019 22:03:45 door Keven Vanovertveldt
 
- Ariën -
Beheerder

- Ariën -

10/01/2019 22:22:26
Quote Anchor link
Je hebt blijkbaar een }else{ na een }else{ staan, en dat kan uiteraard niet.
Probeer het probleem eens te isoleren door wat code tijdelijk weg te halen, zodat je een betere overzicht hebt welke statements je hebt.

Je kan ook per accolade er een //comment achterzetten die vertelt waar het bij hoort, en als je netjes TAB gebruikt, moet je het ook snel kunnen zien.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/01/2019 23:12:04
Quote Anchor link
Keven Vanovertveldt op 10/01/2019 20:53:58:
Via volgende pagina (https://www.phphulp.nl/php/script/snippets/contact-script/1653/contactscript/865/)
vond ik volgend gedeelte:

Ook code heeft een houdbaarheidsdatum. Zo is dat script 12 jaar oud. Dan is de kans aanwezig dat er verouderde / achterhaalde / niet werkende technieken in verwerkt zitten.
 
Keven Vanovertveldt

Keven Vanovertveldt

12/01/2019 16:08:45
Quote Anchor link
Wel, ik heb een aantal keer een if voor de error messages:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(strlen($_POST['inhoud']) == 0)
    { $error_msg .="EROOR BERICHT"; }


En dan een else voor de mail_body:
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
else
    {  
    $recipient = "info@example.be"; //Het email adres van de persoon die vragen moet ontvangen.
    $subject = "Contact."; //Subject van de mail.  
    $header = "From: " . $_POST['naam'] . "  " . $_POST['voornaam'] ." <info@example.be>\r\nReply-to: <" . $_POST['MAILFROM'] . ">";
    $mail_body = "Contact:\n----------\n\n";
    $mail_body .= "Vooraam: " . $_POST['voornaam'] . "\n";
    $mail_body .= "Naam: " . $_POST['naam'] . "\n";  
    $mail_body .= "E-mail: " . $_POST['MAILFROM'] . "\n";
    
    $mail_body .= "Inhoud: " . $_POST['inhoud'] . "\n";
    $mail_body .= "Onderwerp: " . $_POST['SUBJECT'] . "\n";
    $mail_body .= "IP-adres: " .$_SERVER["REMOTE_ADDR"]. "\n";
    $mail_body .= "Browser: " .$_SERVER["HTTP_USER_AGENT"]. "\n";
    $mail_body .= "Referer: " .$_SERVER["HTTP_REFERER"]. "\n";
    $mail_body .= "Host: " .$_SERVER['HTTP_HOST']. "\n";
    $mail_body .= "Tijd: " . date("d-m-Y") . " " . date("H:i") . "\n\n";
    $mail_body .= "Bericht:\n";
    $mail_body .= $_POST['field'];  
    mail($recipient, $subject, $mail_body, $header); //verzenden email
    echo "<div class=\"style1\"><b>Beste " .$_POST['naam']. ", uw bericht is succesvol verzonden.</b></div><br>
    <div class=\"style1\">Er zal zo spoedig mogelijk contact met u opgenomen worden.</div><br><br>";
    echo "<div class=\"style1\"><a class=\"main\" href='javascript:history.back(1)'>< Ga terug</a></div>";
    }
}


En vervolgens nog een else (en daar zit wss de fout) voor het formulier zelf:
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
<?php
else
{
?>

<form action="" method="POST" name="contact">
  <table border="0" align="left" width="50%" class="style1">
    <tr>
    
        <td width="30%">
          <b>Voornaam:</b> <font color="#CC0000">*</font></td>
        <td width="20%">
            <input name="voornaam" type="text" size="29"></td>
    </tr>
    <tr>
    ...

?>


Vroeger werkte dit zonder probleem.
"if" en "else" zijn toch niet veranderd in functie??
Gewijzigd op 12/01/2019 16:12:52 door Keven Vanovertveldt
 
Thomas van den Heuvel

Thomas van den Heuvel

12/01/2019 16:24:39
Quote Anchor link
Nee, maar bij elke else hoort één if, en elke if kan maar één else hebben.

Als je meer gevallen wilt onderscheiden dan de conditie in dat ene if-statement zul je:
- ofwel meerdere condities moeten toevoegen met } elseif (<conditie #2>) {, en zo voor elke conditie een apart elseif-blok maken,
- ofwel een apart if-statement maken

Daarbij helpt het als je je code netjes inspringt, dat wil zeggen, spaties of tabs invoegt aan het begin van je regels, zodat je direct kunt zien in welk accolade-blok je zit.

PHP interesseert het geen biet wat je hiermee doet, maar als de code syntactisch niet klopt dan levert dit gewoon een foutmelding op.
Gewijzigd op 12/01/2019 16:25:14 door Thomas van den Heuvel
 
- Ariën -
Beheerder

- Ariën -

12/01/2019 16:44:17
Quote Anchor link
De werking van if-elseif-else is overigens nooit aangepast.
 



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.