Jump to content

Converting and sending web form data as XML


creative1

Recommended Posts

Hi, I'm new to PHP and have dabbled a little but need some help or someone to point me in the right direction if possible.

 

I have an ajax web-form that sends the inputed data to a php file and then emails the results to the designated address (all working fine).

 

However, what I am looking to do is have the php file (in addition to the current function) convert the data into XML and then attach the XML file to the email that is sent out.

 

As mentioned I'm new to php and have a small amount of knowledge so any help on this would be very much appreciated.

 

Cheers

 

 

 

 

Link to comment
Share on other sites

So basically there are 3 parts:

 

[*]Build the XML string from the submitted form fields

[*]Save the XML string as a .xml file

[*]Send the XML file as an attachment to an email

 

Part 1 - build the XML string. I presume you're posting the form data?



$name = htmlentities($_POST['name']);
$comments = htmlentities($_POST['comments']);

$xml = trim("

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<submission>
<name>$name</name>
<comments>$comments</comments>
</submission>

");

 

Part 2 - write the XML file. Code here: http://www.tizag.com/phpT/filewrite.php

 

Part 3 - send as email attachment. Code here: http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php

Link to comment
Share on other sites

Many Thanks for this info, your right I am posting the info, one quick question on building the string?

 

The php file I'm using already performs some validation, returns results etc, where would I look to start building the string from before or after the validation? (I realise i will need to include the "htmlentities") 

Below if the code for the form I am using.

 

Many thanks

 

Ben

 

<?php

if(!$_POST) exit;

	$name     = $_POST['name'];
        $email    = $_POST['email'];
        $phone   = $_POST['phone'];
        $subject  = $_POST['subject'];
        $comments = $_POST['comments'];
        $verify   = $_POST['verify'];

	if(trim($name) == '') {
        	echo '<div class="error_message">Attention! You must enter your name.</div>';
		exit();
        } else if(trim($email) == '') {
        	echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
		exit();
    } else if(trim($phone) == '') {
        	echo '<div class="error_message">Attention! Please enter a valid phone number.</div>';
		exit();
	} else if(!is_numeric($phone)) {
        	echo '<div class="error_message">Attention! Phone number can only contain digits.</div>';
		exit();
        } else if(!isEmail($email)) {
        	echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
		exit();
        }

        if(trim($subject) == '') {
        	echo '<div class="error_message">Attention! Please enter a subject.</div>';
		exit();
        } else if(trim($comments) == '') {
        	echo '<div class="error_message">Attention! Please enter your message.</div>';
		exit();
        } else if(trim($verify) == '') {
    	echo '<div class="error_message">Attention! Please enter the verification number.</div>';
		exit();
    } else if(trim($verify) != '4') {
    	echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>';
		exit();  
    }

        if($error == '') {
        
		if(get_magic_quotes_gpc()) {
            	$comments = stripslashes($comments);
            }


        
         $address = "example@yourdomin.net";


         
         $e_subject = 'You\'ve been contacted by ' . $name . '.';


        

	 $e_body = "You have been contacted by $name with regards to $subject, their additional message is as follows.\r\n\n";
	 $e_content = "\"$comments\"\r\n\n";
	 $e_reply = "You can contact $name via email, $email or via phone $phone";

         $msg = $e_body . $e_content . $e_reply;

         if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) {



	 echo "<fieldset>";			
	 echo "<div id='success_page'>";
	 echo "<h1>Email Sent Successfully.</h1>";
	 echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
	 echo "</div>";
	 echo "</fieldset>";

	 } else {

	 echo 'ERROR!';

	 }
                      
}

function isEmail($email) { 

return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));

}
?>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.