Forum Moderators: coopster

Message Too Old, No Replies

Multi page forms in PHP

         

palmspringsasian

4:23 am on Dec 4, 2011 (gmt 0)

10+ Year Member



Hi:

I am practicing creating a multi-page form.

So, I have made two dummy forms, and I got a free " FormtoEmail.php".

If the form I am working on now is working, I will build a real form.

Unforturnately, it is not working very well.

The problem I am having is that the data on my second form is not sent to my email address.

I really need your help because I want to learn.

Below are the codes for all my files.

Please take a look and tell me what is wrong with them.

Thank you very much in adance for your help.

1. Below is the code for my first form. The form is on a Web page.

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<form method="Post" action="/formtwo.php">
<p> Email
<input type="text" name="Email">
</p>
<p>&nbsp;</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
</body>
</html>

2. Below is the code for my second form. It is a PHP form.


<form method="Post" action="/FormtoEmail.php">
<p>Comments
<textarea></textarea>
</p>
<p>&nbsp;</p>
<p>
<input type="submit" value="Submit">
<input type="hidden" name="Email"
value="<?php echo $_POST['Email']; ?>">

</p>
</form>


3. Below is the code for FormtoEmail.php

<?php
session_start();
if($_SESSION['ses_request']){$_REQUEST = array_merge($_SESSION['ses_request'],$_REQUEST);}

$my_email = "palmspringsasian@aol.com";


/*

Enter the continue link to offer the user after the form is sent. If you do not change this, your visitor will be given a continue link to your homepage.

If you do change it, remove the "/" symbol below and replace with the name of the page to link to, eg: "mypage.htm" or "[elsewhere.com ]"

*/

$continue = "[silerhoangwebsite.netai.net ]";

/*

Step 3:

Save this file (FormToEmail.php) and upload it together with your webpage containing the form to your webspace. IMPORTANT - The file name is case sensitive! You must save it exactly as it is named above! Do not put this script in your cgi-bin directory (folder) it may not work from there.

THAT'S IT, FINISHED!

You do not need to make any changes below this line.

*/

$errors = array();

// Remove $_COOKIE elements from $_REQUEST.

if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}

// Check all fields for an email header.

function recursive_array_check_header($element_value)
{

global $set;

if(!is_array($element_value)){if(preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i",$element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}

}

}

recursive_array_check_header($_REQUEST);

if($set){$errors[] = "You cannot send an email header";}

unset($set);

// Validate email field.

if(isset($_REQUEST['email']) && !empty($_REQUEST['email']))
{

if(preg_match("/(%0A|%0D|\n+|\r+|:)/i",$_REQUEST['email'])){$errors[] = "Email address may not contain a new line or a colon";}

$_REQUEST['email'] = trim($_REQUEST['email']);

if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

}

// Check referrer is from same site.

if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";}

// Check for a blank form.

function recursive_array_check_blank($element_value)
{

global $set;

if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}

}

}

recursive_array_check_blank($_REQUEST);

if(!$set){$errors[] = "You cannot send a blank form";}

unset($set);

// Display any errors and exit if errors exist.

if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;}

if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");}

// Build message.

function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}

$message = build_message($_REQUEST);

$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."";

$message = stripslashes($message);

$subject = "FormToEmail Comments";

$headers = "From: " . $_REQUEST['email'];

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

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<title>Dreamweaver Tutorial - Contact Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#ffffff" text="#000000">

<div>
<center>
<b>Thank you <?php print stripslashes($_REQUEST['name']); ?></b>
<br>Your message has been sent
<p><a href="<?php print $continue; ?>">Click here to continue</a></p>

</center>
</div>

</body>
</html>

Habtom

4:29 am on Dec 4, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



On Step 2.

Change
<input type="hidden" name="Email"
value="<?php echo $_POST['Email']; ?>">

To:

<input type="hidden" name="email"
value="<?php echo $_POST['Email']; ?>">

Field names are case sensitive

palmspringsasian

9:41 am on Dec 4, 2011 (gmt 0)

10+ Year Member



Thank you very much for a quick reply.

Unfortunately, I am still having the same problem: Data on the second form are not sent to user's email addresses.

I appreciate your advice any way.

Habtom

2:36 pm on Dec 4, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Are you getting any error messages?

palmspringsasian

9:02 pm on Dec 4, 2011 (gmt 0)

10+ Year Member



Thanks again for a quick reply.

No, I am not getting any error message.

The problem is that when users type something into the message box on the second form, the information is not sent to my email address. The data ( email address ) on the first form is always sent. I do not know where the error is to fix.

The good thing is that I got something fixed after I did what you told me. That was the sender's email address.

Before I took your advice, the part for sender's email address always showed " unknown sender".

Well, again thank you very much.

Take care!

Habtom

9:33 pm on Dec 4, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You need to give this a name (any name not already in use)
<textarea></textarea>

like this

<textarea name="msg_frm2"></textarea>

It looks like the function build_message puts all submitted info in to one variable $message.

So just adding the name of the textarea as shown above, should solve your problem.

palmspringsasian

1:34 am on Dec 5, 2011 (gmt 0)

10+ Year Member



Dear Habtom:

I have got the problem fixed with your instructions.

I am so happy now.

I have learned something very valuable from you.

It is sad that I have posted my question on many Web sites,

and a lot of people have viewed my message. However, they

could not do anything to help me.

So far, you are the only one who has helped me.

I am so glad that I got you.

You are so helpful.

May I have your email address in case I have some more

questions to ask in the future?

To me, contacting somebody directly is very convenient for

me.

Again, thanks a million.

Have a great holiday!

Take care!

Habtom

2:38 am on Dec 5, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



There are lots of people at WebmasterWorld willing to help others with questions on the forums. I do whenever I can. Keep your questions brief, and to the point, someone will certainly respond.

Welcome to WebmasterWorld btw.