Foutje in Code

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Jo Mou

Jo Mou

28/06/2016 09:51:43
Quote Anchor link
Heren,
Ik heb geen kaas gegeten van Php, dat is al een slecht begin.
ik had een basiswebsite die elk jaar maar een maand online komt. Vroeger werkte de php code ervan, plots niet meer. Kan iemand me helpen ?

wat is er mis met dit stukje code ? Het is een invulform

mail("[email protected]", $subject, $msg, $headers, "From: BLBLABL Team <[email protected]>");
of zit mijn fout ergens anders in de code ?

op de verzendknop zit dit :
<div id=\"contactknop\"><input type=\"submit\" name=\"verzenden3\" value=\"Verzend!\"></div>
Gewijzigd op 28/06/2016 09:58:14 door Jo Mou
 
PHP hulp

PHP hulp

03/12/2024 20:33:11
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:02:51
Quote Anchor link
Wat werkt er niet? Wat gebeurt er? En wat deed je precies?
 
Ward van der Put
Moderator

Ward van der Put

28/06/2016 10:05:18
Quote Anchor link
Voeg eens deze twee regels toe aan het begin van het PHP-script?
Dan zie je waarschijnlijk een foutmelding die aangeeft wat er aan het script mankeert.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>


In deze expressie met de functie mail() staat één argument te veel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mail("[email protected]", $subject, $msg, $headers, "From: Zomergem Beachsports Team <[email protected]>");
?>


From is een mailheader: die hoort in de string $headers.
 
Jo Mou

Jo Mou

28/06/2016 10:05:31
Quote Anchor link
Dag Arien
Bedankt voor de snelle reply.

Ik heb een basis php pagina waar 2 forms op staan. En deze werken niet meer en ik vind de reden niet

http://78.22.156.152:10000/seasonbreaks/index-5.php



Toevoeging op 28/06/2016 10:08:26:

Ik krijg nu dit als foutcode

Deprecated: Function eregi() is deprecated in /volume1/web/seasonbreaks/index-5.php on line 15 Notice: Undefined index: TeamNaam in /volume1/web/seasonbreaks/index-5.php on line 195 Notice: Undefined index: Reservespeler in /volume1/web/seasonbreaks/index-5.php on line 198

en

Notice: Undefined variable: headers in /volume1/web/seasonbreaks/index-5.php on line 207
Gewijzigd op 28/06/2016 10:07:54 door Jo Mou
 
- SanThe -

- SanThe -

28/06/2016 10:09:35
Quote Anchor link
Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:10:02
Quote Anchor link
Dan zijn een aantal variabelen niet gedefineerd, en gebruik je een verouderde eregi-functie.

Laat je relevante code eens zien?
 
Jo Mou

Jo Mou

28/06/2016 10:14:49
Quote Anchor link
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
<?php
if(check_mail($Email) == 1)
                {

        $msg = "Zomergem Beachsports: Inschrijving Beachvolley\n";
            $msg .= "\n";
        $msg .= "Team Naam: " . htmlentities($_POST['TeamNaam']) . "\n";
        $msg .= "Speler 1: " . htmlentities($_POST['NaamSpeler1']) . "\n";
        $msg .= "Speler 2: " . htmlentities($_POST['NaamSpeler2']) . "\n";
        $msg .= "Reservespeler: " . htmlentities($_POST['Reservespeler']) . "\n";
        $msg .= "E-mail: " . htmlentities($_POST['Email']) . "\n";
        $msg .= "Catergorie : " . htmlentities($_POST['Poule']) . "\n";
        $subject = "Zomergem Beachsports: Inschrijving Beachvolley";
            echo "<table style=\"margin-left:19px\" class=\"form\">
                  <tr><td>Uw inschrijving is doorgegeven. Alvast bedankt!<br><br>"
;
        echo "Wijzigingen aan uw inschrijving kan u doorgeven door een e-mail te sturen naar xxx<br><br>";
        echo "Let wel, uw inschrijving is pas definitief wanneer u het inschrijvingsgeld hebt overgeschreven op rekeningnummer BE27 0635 2660 7173 met vermelding: Teamnaam + beachtennis. Op die manier willen wij voorkomen dat ploegen op het laatste moment afzeggen. U ontvangt binnen de 3 dagen een bevestigingsmail!</td></tr></table>";
           mail('[email protected]', $subject, $msg, "From: Zomergem Beachsports Team <[email protected]>");
                  
                                        }

                                        else
                                        {
                echo "<a href=\"javascript:history.back(-1)\">Terug</a><br><br>";
            echo "<ol>";
                    echo "<li><b>Ongeldig</b> e-mailadres</li>";
                                        }
                                    }

?>

- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!


Toevoeging op 28/06/2016 10:19:11:

mijn excuses arien
Gewijzigd op 28/06/2016 10:17:54 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:20:04
Quote Anchor link
Ik zie hier weinig fouts aan wat opeens stuk kan gaan.
Wel wat opmerkingen om niet voor elke regel een echo te starten en single-quotes (') te gebruiken. Dit voorkomt het 'escapen' van de dubbele quotes uit je HTML.

De enige fout is nog je eregi-functie, maar die vind ik niet in je gegeven code terug.
 
Jo Mou

Jo Mou

28/06/2016 10:22:20
Quote Anchor link
- Ariën - op 28/06/2016 10:20:04:
De enige fout is nog je eregi-functie, maar die vind ik niet in je gegeven code terug.


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
function check_mail($email)
{
    $email_host = explode("@",$email);
    $email_host = isset($email_host['1']) ? $email_host['1'] : "";
    $email_domein = gethostbyname($email_host);
    
    $geldig = 0;
      
    if($email_domein !== $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
    {
        $geldig = 1;
    }
    return $geldig;
}
Gewijzigd op 28/06/2016 10:22:37 door Jo Mou
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:24:00
Quote Anchor link
Je kan beter de filter_var() van PHP gebruiken om je mailadressen te controleren i.p.v. een door iemand zelf bedachte reguliere expressie. Want deze zal volgens mij al vastlopen met TLD's zoals .amsterdam, .flight, .musea etc.

http://www.w3schools.com/php/filter_validate_email.asp
Gewijzigd op 28/06/2016 10:25:17 door - Ariën -
 
Jo Mou

Jo Mou

28/06/2016 10:24:32
Quote Anchor link
Ok, bedankt. Doe ik

Toevoeging op 28/06/2016 10:29:15:

Heren, bedankt voor jullie tijd, maar hoe meer ik verander hoe meer fouten er op komen. Ik ken er gewoon niks van.
Zal beter de site gewoon offline halen :)
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:32:54
Quote Anchor link
Of een PHP-tutorials leren ;-)

http://phptuts.nl/view/39/

Wat gaat er nu dan fout, en wat heb je nu veranderd?
 
Jo Mou

Jo Mou

28/06/2016 10:36:37
Quote Anchor link
Ja, beter niet aan iets beginnen zonder kennis van zake. Maar ja, tis niet voor mij , maar voor een vriend.

Dus

1. Ik heb de eregi-functie volledig gewist en vervangen door

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

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

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo("$email is a valid email address");
}
else {
    echo("$email is not a valid email address");
}


?>

Daar krijg ik een fout op (Notice: Undefined variable: email in /volume1/web/seasonbreaks/index-5.php on line 7 is not a valid email address)

2. Ik krijg onder mijn form deze

Notice: ob_end_flush(): failed to delete and flush buffer. No buffer to delete or flush in /volume1/web/seasonbreaks/index-5.php on line 389

3. De form werkt nog steeds niet :)



Toevoeging op 28/06/2016 10:37:44:

Ik ga er gewoon afblijven, php pagina wegdoen, en een html pagina van maken. Schoenmaker blijf bij je leest :)
Gewijzigd op 28/06/2016 10:37:02 door Jo Mou
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:39:27
Quote Anchor link
Ik ben benieuwd waarom die ob_*(); functies erin zitten. Ik acht de kans groot dat ze niet eens nodig zijn.
En hoe ziet jouw check_mail() functie er nu uit?
 
Jo Mou

Jo Mou

28/06/2016 10:44:21
Quote Anchor link
Ariën,

Ik heb beslist de pagina niet te gebruiken. Omdat het me toch niet zal lukken ongeacht welke goeie tips jullie me zullen geven. Je hoeft er dus je tijd niet meer in de steken.

Toch bedankt
 
- Ariën  -
Beheerder

- Ariën -

28/06/2016 10:46:51
Quote Anchor link
Of je volgt een PHP-tutorial. Maar eventueel kan je ook een vacature aanmaken in het Vacature-forum van de site.

Zomaar een paar mogelijkheden als je niet op wilt geven.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/06/2016 13:38:41
Quote Anchor link
Om de impact op je code zo klein mogelijk te houden is het verstandig om zo weinig mogelijk structureel te wijzigen.

Indien er een probleem in de functie check_mail() is dan los je dit ook daar op.

Een functie is niets meer dan een zwarte doos waar je iets instopt (in dit geval $email) en waar iets uitkomt (in dit geval 0 of 1). Het enige wat aangepast dient te worden is de inhoud (ook wel implementatie genoemd) van de functie met behoud van het gedrag hiervan (invoer $email; uitvoer 0 of 1) zodat aan de buitenkant van de functie in wezen niets verandert.

Je zou er dus zoiets van kunnen maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function check_mail($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL) === false ? 0 : 1;
}

?>
Gewijzigd op 28/06/2016 13:49:42 door Thomas van den Heuvel
 



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.