Jump to content

Radio Button Results to Email


julesfrog

Recommended Posts

Hello,

 

I have a simple PHP form that sends the results as a message to my email address. The form is composed only of text areas and text fields. All works well until I try to introduce radio buttons. When I get the message the result is blank. This is the form:

 

<form id="contact-form" name="contact-form" method="post" action="submit.php">
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
    <tr>
      <td><label for="name">Your Name:</label></td>
      <td><input type="text" class="validate[required,custom[onlyLetter]]" name="name" id="name" value="<?=$_SESSION['post']['name']?>" /></td>
      <td id="errOffset"> </td>
    </tr>
    
    <tr>
      <td><label for="email">Your Email Address:</label></td>
      <td><input type="text" class="validate[required,custom[email]]" name="email" id="email" value="<?=$_SESSION['post']['email']?>" /></td>
      <td> </td>
    </tr>

    <tr>
      <td valign="top"><label for="message">How can we help you</label></td>
      <td><textarea name="message" id="message" cols="35" rows="3"><?=$_SESSION['post']['message']?></textarea></td>
      <td valign="top"> </td>
    </tr>
    
    <tr>
      <td><label for="contact">Preferred method of contact:</label></td>
      <td>
          <label class="second" for="contact">By Email:</label><input name="<?=$_SESSION['post']['contact']?>" id="contact-email" type="radio" value="Email" checked />
          <label class="second" for="contact">By Phone:</label><input name="<?=$_SESSION['post']['contact']?>" id="contact-phone" type="radio" value="Phone" />
      </td>
      <td id="errOffset"> </td>
    </tr>
    
    <tr>
      <td><label for="captcha">Security Question: <?=$_SESSION['n1']?> + <?=$_SESSION['n2']?> =</label></td>
      <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td>
      <td valign="top"> </td>
    </tr>
    
    <tr>
      <td valign="top"> </td>
      <td colspan="2"><input type="submit" name="button" id="button" value="Submit" />
      <input type="reset" name="button2" id="button2" value="Reset" />
      
      <?=$str?>          <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td>
    </tr>
  </table>
  </form>
  <?=$success?>

 

And this is the submit.php file it refers to:

 

<?php

/* config start */

$emailAddress = '[email protected]';

/* config end */


require "phpmailer/class.phpmailer.php";

session_name("fancyform");
session_start();


foreach($_POST as $k=>$v)
{
if(ini_get('magic_quotes_gpc'))
$_POST[$k]=stripslashes($_POST[$k]);

$_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
}


$err = array();

if(!checkLen('name'))
$err[]='The name field is too short or empty!';

if(!checkLen('email'))
$err[]='The email field is too short or empty!';
else if(!checkEmail($_POST['email']))
$err[]='Your email is not valid!';

if((int)$_POST['captcha'] != $_SESSION['expect'])
$err[]='The captcha code is wrong!';


if(count($err))
{
if($_POST['ajax'])
{
	echo '-1';
}

else if($_SERVER['HTTP_REFERER'])
{
	$_SESSION['errStr'] = implode('<br />',$err);
	$_SESSION['post']=$_POST;

	header('Location: '.$_SERVER['HTTP_REFERER']);
}

exit;
}


$msg=
'Name:	'.$_POST['name'].'<br />
Email:	'.$_POST['email'].'<br />
Message:	'.$_POST['message'].'<br />
Contact by:	'.$_POST['contact'].'
';


$mail = new PHPMailer();
$mail->IsMail();

$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = "Contact Form";
$mail->MsgHTML($msg);
$mail->Send();


unset($_SESSION['post']);

if($_POST['ajax'])
{
echo '1';
}
else
{
$_SESSION['sent']=1;

if($_SERVER['HTTP_REFERER'])
	header('Location: '.$_SERVER['HTTP_REFERER']);

exit;
}

function checkLen($str,$len=2)
{
return isset($_POST[$str]) && strlen(strip_tags($_POST[$str])) > $len;
}

function checkEmail($str)
{
return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
}

?>

 

These are the 2 files I've been updating. I'm definitely not good at PHP so any help cracking this problem would be welcome.

 

Thank you.

Link to comment
https://forums.phpfreaks.com/topic/221689-radio-button-results-to-email/
Share on other sites

Why are you using a dynamic name+ attribute for the button group? I'd imagine from looking at the code that processes the form, it should be name="contact", no?

<input name="<?php $_SESSION['post']['contact'] ?>" id="contact-email" type="radio" value="Email" checked />

I got this form from http://tutorialzine.com/2009/09/fancy-contact-form/. I'm pretty new at PHP and I was just trying to follow the method used by that developer. I tried to remove the dynamic name and attribute and replaced it by "contact" but that didn't do it.

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.