php code resulteert in lege pagina

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
deze code geeft als resultaat een lege pagina dus geen foutmelding. ziet iemand een fout?

PHP:
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
 
<?php
ini_set('display_errors', 1);  
error_reporting( E_ALL );
if(isset($_POST['submit'])){

// your email address
$youremail = "xxx@xx.nl";

// field validation
if ($email=="" || $comments=="" || $name=="")

{
print ("All fields are required! Please go back and try again.");
}

else {

// send email
$headers = "From: \"$name\" <$email>\n";
$subject = "Feedback Form"; 
$message = "$comments";

mail ("$youremail", "$subject", $message, $headers);
print ("Thank you $name, your email has been sent.");

} 

else{
?>
<form action="formmail.php" method="post">
Name: <input type="text" name="name"><br>

Email: <input type="text" name="email"><br>
Comments: <textarea name="comments"></textarea><br>
<input type="submit" name="submit">
</form>
<?
}
?>

[ Voor 3% gewijzigd door cschot op 28-05-2009 21:35 ]


Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20-09 17:02
Zou je even code-tags aan kunnen zetten?

Overzicht van UBB-codes #tag_code

PHP:
1
error_reporting "e_all";


is zowiezo al fout, om de "e_all" moeten haakjes, voor de syntax. E_ALL is een constante, dus dat klopt ook niet.

Zet in plaats daarvan eens dit boven in je script:
PHP:
1
2
ini_set('display_errors', 1); 
error_reporting( E_ALL );

[ Voor 58% gewijzigd door doeternietoe op 28-05-2009 21:32 ]


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Gebruik code tags ;) En kijk eens naar je eerste regel. http://www.w3schools.com/PHP/func_error_reporting.asp

Acties:
  • 0 Henk 'm!

Verwijderd

shorttags niet toegestaan (einde zit er 1)?
zet display_errors ook even aan mocht dat nog niet zijn gebeurd

Om me maar even niet uit te laten over de verdere scripting...

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 17:19

Onbekend

...

Als er geen form is verzonden gaat hij het verwerken? Volgens mij moet de uitroepteken weg.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
error_reporting "e_all";

Zou je geen () gebruiken?

Daarnaast is je code nou niet echt om over naar huis te schrijven :/

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik zou eens debuggen. Lijkt me niet al te moeilijk. Haal gewoon stukken code weg, en kijk waar het script vastloopt. (volgens mij is dat op de eerste regel al ;))

Acties:
  • 0 Henk 'm!

  • MuisM4t
  • Registratie: Mei 2007
  • Niet online
Op deze manier kan jouw server gebruikt worden voor het versturen van spam.


Zie ook http://www.byte.nl/docs/Mail-Header-Injectie.html

[ Voor 18% gewijzigd door MuisM4t op 28-05-2009 21:38 ]


Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
bedankt,
ik heb hem aangepast zoals jullie zeiden maar het probleem loopt nog

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

Je bent ergens een speciaal teken vergeten. Indent je code eens netjes (dit ziet er echt niet uit), dan zal je direct zien waar de fout zit.

Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
zodra het script werkt ga ik wat tegen injectie doen. maar het werkt nog niet

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Waarschijnlijk staat display_errors uit, en heb je een parse-error.
Bij een parse-error wordt je code niet ge-execute, en dus doet jouw ini_set() niets.

Plaats eens het volgende in een .htaccess
code:
1
php_flag display_errors On


Maak een nieuwe pagina waarin je phpinfo() aanroept om te controleren of display_errors inderdaad true is.

Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
@ dataghost

dankje ik het na de 2e if een accolade vergeten
@allemaal
bedankt!;-) het werkt weer

[ Voor 8% gewijzigd door cschot op 28-05-2009 21:44 ]


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
Op regel 28 hoort nog een } gok ik :)

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

Trouwens, je moet denk ik display_startup_errors hebben en die kan je voor zover ik weet niet in je script instellen, dat zal via een .htaccess moeten mits toegestaan, anders via de server-configuratie.

Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
ik heb hosting dus dat zal wel aanstaan bij mijn provider

Acties:
  • 0 Henk 'm!

Verwijderd

Gebruik eerst eens overal netjes $_POST['name'], $_POST['comments'] en $_POST['email']. Op code uit het jaar 2002 zit niemand te wachten.

Verder moet je op je ontwikkelmachine error_reporting globaal op zijn minst op E_ALL zetten, en display_errors aan. In het script zelf is het leuk, maar bij een parse error* zie je dus niks.

En als het niet in php.ini gaat, dan gaat dat wel met een .htaccess bestand.

[edit]
* En 2 keer else gebruiken voor dezelfde conditional levert natuurlijk die parse error op. Accollade } voor regel 28.
Leer goed indenten, leer goed debuggen. Dit is gewoon aanklooien.

[ Voor 26% gewijzigd door Verwijderd op 28-05-2009 21:50 ]


Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20-09 17:02
cschot schreef op donderdag 28 mei 2009 @ 21:44:
ik heb hosting dus dat zal wel aanstaan bij mijn provider
Misschien een idee om dat toch even te controleren? Ik zou nooit ergens van uit gaan voordat ik het zeker wist.

Acties:
  • 0 Henk 'm!

  • Delusion
  • Registratie: Mei 2009
  • Nu online
PHP:
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
<?php
ini_set('display_errors', 1);  
error_reporting( E_ALL );

if( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit']) )
{

    // your email address
    $youremail = "xxx@xx.nl";
    
    // field validation
    if( empty($email) || empty($comments) || empty($name) )
    {
        echo "All fields are required! Please go back and try again.";
    }
    else
    {
    
        // send email
        $headers = 'From: ' . $name ' <' . $email . '>' . "\n";
        $subject = "Feedback Form"; 
        $message = $comments;
        
        mail($youremail, $subject, $message, $headers);
        echo 'Thank you' . $name . ', your email has been sent.';
    
    } 

else
{
    ?>
    <form action="formmail.php" method="post">
    Name: <input type="text" name="name"><br>
    
    Email: <input type="text" name="email"><br>
    Comments: <textarea name="comments"></textarea><br>
    <input type="submit" name="submit">
    </form>
    <?
}
?>


Heb ik even snel gedaan

Probeer dat eens, ik vind je coding echt een rommel, en vars zoals $name zou ik gewoon $_POST laten, want ik zie hier nergens hoe je dat opvangt.

[edit]
Nvm, zie dat het al opgelost is.

[ Voor 3% gewijzigd door Delusion op 28-05-2009 22:02 ]


Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
thanx delusion ik ga dit als basis gebruiken

Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
dit script stuur geen email.

als ik de gegevens heb ingevuld gaat hij door maar hij blijft wit. er komt niet te staan dat de mail verzonden is. in mijn inbox komt de mail ook niet. ik gebruik nu het script wat delusion gemaakt heeft. de error reporting werkt wel, maar er komt nu geen melding.

[ Voor 11% gewijzigd door cschot op 28-05-2009 22:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Sorry, maar je basis is nog steeds ruk. Je gaat uit van register_globals, je gebruikt een submitknop met name="submit", je gaat ervan uit dat de POST variabelen "email", "comments" en "name" altijd zijn ingevuld, je flikkert zomaar een variabele uit de request in de mail headers...

Allemaal een recept voor een hoop ellende. Ik veeg wekelijks de rommel bij elkaar die zulke scripts veroorzaken. Gebruik sowieso een degelijke mailer class die elke mogelijkheid tot MIME injection afvangt.

Wat gebeurt er volgens jou als ik als naam iets als het volgende invul?
" <bill@microsoft.com>
X-Dit-Hoort-Hier-Niet: foo
X-From: "


Delusion heeft je probleem niet opgelost, hij heeft je code iets verduidelijkt, maar het script bevat nog steeds een parse error.

[ Voor 9% gewijzigd door Verwijderd op 28-05-2009 22:12 ]


Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
ik denk dat bill gates niet blij is:P

het gaat er mij om dat dit script werkt. als het werkt dan ga ik al die anti-spam dingen erin gooien. maar als het nu al niet werkt heeft dat nog geen zin.

hoe moet ik die submit anders noemen dan?
wat moet ik in die .htaccess zetten om die parse error zichtbaar te maken?

[ Voor 99% gewijzigd door cschot op 28-05-2009 22:18 ]


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
verder nog iets met error handling:

code:
1
2
mail($youremail, $subject, $message, $headers);
echo 'Thank you' . $name . ', your email has been sent.';


dus zelf al faalt de mail functie, je krijgt gewoon een 'goed' melding.

mail() heeft een return value, het is wijs die te gebruiken.

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 15:51
Misschien gewoon eerst eens een basiscursus PHP zoeken? Of op zijn minst wat doen met alle antwoorden die je ondanks de zeer geringe eigen inzet toch al gekregen hebt...

Heb je dit überhaupt zelf gemaakt? Met dingen als "your email address" lijkt het nogal op een scriptje dat je van een of andere site kunt plukken en dan een variabele veranderen en hopen dat het werkt.

Acties:
  • 0 Henk 'm!

  • Mike2k
  • Registratie: Mei 2002
  • Laatst online: 22-08 11:59

Mike2k

Zone grote vuurbal jonge! BAM!

@delusion:
PHP:
1
if( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit']) )

hoeft niet perse, tenslotte, een simpele
PHP:
1
if (isset($_POST['submit'])) {

zou al volstaan.

@cschot:
That script is bound to get your server blacklisted! ;)
Je zou bijv eens kunnen kijken of het email adres wel een echt email adres kan zijn...
Split het email adres op het "@" en haal het 2de deel (het domein dus) eens door deze functie: http://nl3.php.net/getmxrr
Als die "TRUE" is, dan bestaat er een MX record voor het domein, anders niet...

You definitely rate about a 9.0 on my weird-shit-o-meter
Chuck Norris doesn't dial the wrong number. You answer the wrong phone.


Acties:
  • 0 Henk 'm!

  • Delusion
  • Registratie: Mei 2009
  • Nu online
@Fastex:
Dat weet ik, maar dat gebruik ik wel als extra check. :)

Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
het script is idd van internet. ik had eerst een heel uitgebreid script en dat werkte. maar het gaat meer is voor een intern netwerk. waarschijnlijk komt het niet open op internet. ik heb het wel nagekeken voordat ik jullie om raad vroeg maar ik ben beginner dus zie je snel dingen over het hoofd en omdat die error reporting niet werkte(heb ik er zelf ingezet) kon ik dus ook niet op die manier de fout ontdekken. Ik heb wel cursussen voor php gevolgd op internet.

@fastex

ik ga die emailcheck functie er later inzetten. het gaat mij er eerst om of ik vanuit het simpelste kan mailen.

[ Voor 11% gewijzigd door cschot op 28-05-2009 22:36 ]


Acties:
  • 0 Henk 'm!

  • cschot
  • Registratie: Februari 2008
  • Laatst online: 07-12-2020
ik ga hem gewoon helemaal zelf typen en na elk accoladetje testen.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik gebruik overigens juist alleen

PHP:
1
2
3
if('POST' == $_SERVER['REQUEST_METHOD'])
{
}


want als je een image gebruikt als submit (type="image" name="submit") stuurt de ene browser wel submit en de ander submit_x en submit_y (IE6 geloof ik sowieso). En als jij ineens je name anders noemt dan submit blijft t nu ook nog werken.

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 19-09 13:37
Waarom zou je überhaupt op $_POST['submit'] controleren? Je kunt toch net zo goed gewoon controleren of de POST-variabelen die je wilt hebben zijn ingevuld? (Dus email, comments en name) Met de $_POST['submit'] doe je toch niks uiteindelijk...

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
cschot schreef op donderdag 28 mei 2009 @ 22:34:
@fastex

ik ga die emailcheck functie er later inzetten. het gaat mij er eerst om of ik vanuit het simpelste kan mailen.
Ik wil niet lullig doen, maar als je met zulke eenvoudige problemen al telkens vast loopt, is het misschien te hoog gegrepen om ervanuit te gaan dat je de emailcheck functie straks wel goed maakt. Er zijn namenlijk enorm veel dingen die je af moet vangen, en dat los je niet op door maar een beetje te proberen totdat het goed lijkt te werken.

Tuurlijk moet iedereen een keer leren, maar je kan dan beter vanaf het begin ook de punten die, onder andere in dit topic, aangedragen worden gebruiken.

Zo is het handig om een fatsoenlijke mailer te gebruiken die al een hoop injectie tegen kan gaan en niet de mail functie. De register-globals die je gebruikt kun je ook beter niet gebruiken. Als laatste zul je inderdaad beter aan identing moeten doen, want dat voorkomt al een hoop problemen met bijvoorbeeld vergeten accolades.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
ZanderZ schreef op vrijdag 29 mei 2009 @ 11:45:
Waarom zou je überhaupt op $_POST['submit'] controleren? Je kunt toch net zo goed gewoon controleren of de POST-variabelen die je wilt hebben zijn ingevuld? (Dus email, comments en name) Met de $_POST['submit'] doe je toch niks uiteindelijk...
Precies, daarom :)
Pagina: 1