【发布时间】:2015-07-07 19:11:24
【问题描述】:
我是一个非编码员或一个非常新的人。我调整了现有的 HTML 表单以在电子邮件模板中工作。有一个字段(用户电子邮件地址)和提交按钮。当用户单击提交时,一个 php 脚本会向我发送一封包含提交数据的电子邮件。这个东西在桌面上的 Gmail 和 Outlook 上运行良好,但是当我打开电子邮件并单击移动应用程序上的提交按钮时它不起作用(例如,gmail、outlook 或 spark 的收件箱)。我得到的错误(在被重定向到移动浏览器之后)是:“您需要提交表单”和一个验证错误(即没有输入数据)。虽然我确实收到一封电子邮件说表单已提交,但没有收到任何数据(即使我已经确定输入了数据)。请帮忙!
<?php
if(!isset($_POST['submit']))
{
//This page should not be accessed directly. Need to submit the form.
echo "error; you need to submit the form!";
}
$email = $_POST['email'];
//Validate first
if(empty($email))
{
echo "we need your email address for this to work!";
exit;
}
if(IsInjected($email))
{
echo "Bad email value!";
exit;
}
$email_from = 'hello@melltoo.me';//<== update the email address
$email_subject = "New Pay&Ship Beta User from Existing Users";
$email_body = "The user $email.\n is responding positively to your email".
"He/she wants to be a part of beta testing for Pay&Ship ".
$to = "hello@melltoo.me";//<== update the email address
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $email \r\n";
//Send the email!
mail($to,$email_subject,$email_body,$headers);
//done. redirect to thank-you page.
header('Location: thank-you.html');
// Function to validate against any email injection attempts
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>PHP form to email sample form</title>
<!-- define some style elements-->
<style>
label,a
{
font-family : Arial, Helvetica, sans-serif;
font-size : 12px;
}
/*FORM STYLES*/
.tagline-form-object{margin-top:20px;text-align:center}.footer-form-input,
.tagline-form-input{background-color:#FFF;font-size:20px;padding:10px 15px;font-weight:700;color:#555459;border-radius:4px;width:300px;margin-right:10px}
.tagline-form-submit{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:#0cb37b;font-size:20px;padding:10px 30px;border-radius:4px;font-weight:700;color:#FFF;text-shadow:0 1px 2px rgba(0,0,0,.5);cursor:pointer}
.tagline-form-submit:hover{background-color:#3DA7F2}
.tagline-form-submit:active{border-bottom:1px solid #194BA3;margin-top:1px}
</style>
<!-- a helper script for vaidating the form-->
<script language="JavaScript" src="scripts/gen_validatorv31.js" type="text/javascript"></script>
</head>
<body>
<!-- Start code for the form-->
<form method="post" name="myemailform" action="form-to-email.php">
<p>
<input type="text" class="tagline-form-input" name="email" value="user-email@email.com">
</p>
<input class="tagline-form-submit" type="submit" name='submit' value="Add 25 AED to my account!">
</form>
<script language="JavaScript">
// Code for validating the form
// Visit http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
// for details
var frmvalidator = new Validator("myemailform");
frmvalidator.addValidation("name","req","Please provide your name");
frmvalidator.addValidation("email","req","Please provide your email");
frmvalidator.addValidation("email","email","Please enter a valid email address");
</script>
</body>
</html>
【问题讨论】:
标签: php html forms mobile html-email