Re: form not submitting inofrmation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, March 16, 2007 1:05 pm, Bruce Gilbert wrote:
> I have a form on my website, that used to work, but I just realized
> that now it doesn't. You don't get any errors, but I am not receiving
> an email with the information after the submittal.
>
> The form is located at http://www.inspired-evolution.com/Contact.php
>
> and the PHP is:
>
> [php]
> <?php
> include("emailval.php");
> $site_name = "Inspired-Evolution.com";
> $site_owner_email = "webguync@xxxxxxxxx";
> $your_domain = "www.inspired-evolution.com";
> $current_url = $_SERVER['REQUEST_URI'];
>
> $submit = $_REQUEST['submit'];
>
> if(isset($submit)){
>
> 	$name = $_REQUEST['name'];
> 	$flizzum_flazzum = $_REQUEST['flizzum_flazzum'];
> 	$subject = $_REQUEST['subject'];
> 	$msg = $_REQUEST['msg'];
>
> 	if(strlen($name) < 2){
> 		$name_warn = "true";
> 	}
> 	if (MailVal($flizzum_flazzum, 2)){
> 		$email_warn = "true";
> 	}
> 	if(strlen($msg) < 2){
> 		$msg_warn = "true";
> 	}
>
> 	if (preg_match("/$your_domain/i", "$flizzum_flazzum")) {
> 	  $bogus_warn = "true";
> 	}
>
> 	if((!isset($name_warn))&&
> 		(!isset($email_warn))&&
> 		(!isset($bogus_warn))&&
> 		(!isset($msg_warn))){
>
> 	// headers for the email listed below
> 	$headers .= "From: $name <$flizzum_flazzum>\n";  // your email client
> will show the person's email address like normal
> 	$headers .= "Content-Type: text/plain; charset=iso-8859-1\n"; // sets
> the mime type
> 	$recipient = "webguync@xxxxxxxxx";
>
> 	$subject = "Contact From $site_name - $subject"; // this is the
> subject of the email
>
> 	$msg = wordwrap( $msg, 1024 );

Word-wrap for email at 1024 columns?

Ugh.

> 	mail($recipient, $subject, stripslashes($msg), $headers); // the
> mail() function sends the message to you

First off, mail() returns a value true/false to indicate whether its
attempt to inject the email into the sending queue succeeded.

It does NOT tell you if the email actually went out, but it at least
tells you if it has any chance at all of going out "soon".

Check the return value, and if it's FALSE, don't lie to the user and
say that the email was sent, when you know from the get-go that it
wasn't :-)

Also, you REALLY are wide open to spammer email header injection
attack here...

If I POST data where $_POST['name'] consists of the data between the
ASCII lines:

-----------------------------------------------------
"PHP Spammer" <spam@xxxxxxxxxxx>
Cc: victim1@xxxxxxxxxxx, victim2@xxxxxxxxxxx, victim3@xxxxxxxxxxx
-----------------------------------------------------

Then I have just used YOUR form mail to send out my spam to you, and 3
victimes.

Multiply that Cc: line by, oh, 1000 Cc: lines, and you see a problem, eh?

A quick simple check that nobody's name, email, or subject has a
newline in it will foil this.  Do it.

After that, there are several things that could go wrong.

To diagnose them, try some or all of the following:

1. send email from the command line, and see if that works.

2. su to the User PHP runs as (User in httpd.conf for PHP Apache
Module) and repeat test 1

3. Check if sendmail is even running and/or processing the mail queues.
   3a. ps auxwwww | grep sendmail
   3b. ls /var/spool/
       Then ls /var/spool/XXX where XXX looks like any of:
       mail, sendmail, mqueue, clientmqueue, etc

If you find a big honking list of all the email that never went out,
then you probably don't have sendmail running.

WARNING:
A quick way at that point to bring your server to its knees is to fire
up sendmail...  It will then attempt to process all that backlog of
email.  If you just don't care about the old emails, blow them away
before firing up sendmail.  If you NEED those emails to go out, no
matter how late, then consider figuring out how to throttle sendmail
before you fire it up.

-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux