我正在製作一個包含四個字段(用戶名,電子郵件,密碼,密碼重複)的註冊表單的網站。我想運行驗證實驗,因此,當有人提交表單時,我希望電子郵件字段中的值能夠發送到我自己的電子郵件地址,以便我們在上線時能夠注意到他。爲了實現這一點,我使用電子郵件說明在窗體和mailer.php頁面中創建了一個html/bootstrap頁面。下面是註冊表單:如何使用php發送表單給自己的電子郵件?
<div class="bs-example">
<div class="col-md-4 col-md-offset-4">
<form action="mailer.php" id="interest-form" method="POST">
<div class="form-group">
<input type="username" class="form-control" id="inputUsername" placeholder="Username">
</div>
<div class="form-group">
<input type="email" class="form-control" id="inputEmail" placeholder="Email">
</div>
<div class="form-group">
<input type="password" class="form-control" id="inputPassword" placeholder="Password">
</div>
<div class="form-group">
<input type="password" class="form-control" id="inputPassword" placeholder="Repeat password">
</div>
<div class="checkbox">
<label><input type="checkbox">Remember me</label>
</div>
<button class='btn btn-signup btn-signup-sm btn-interest' id="interested" type="submit" name="remove_levels" value="delete">Sign up</button>
</form>
</div>
</div>
,這裏是一些JavaScript我用它來做一個確認框彈出窗口,詢問用戶是否希望得到通知我們何時推出,並留下他的郵件:
<script type="text/javascript">
$(document).ready(function(){
$('.btn').on('click', function(e){
e.preventDefault(); // this line is key to preventing page reload
// when user clicks submit button inside form
bootbox.confirm("Work on the game is still in progress. Submit the form and you will receive an email as soon as we launch.", function(result) {
("Confirm result: "+result);
if (result > 0){
$('#interest-form').submit();
};
});
});
});
當人是點擊該郵件,他被引導到mailer.php頁面看起來像這樣:
<?php
function check_input($data, $problem='')
{
return $data;
}
function show_success($message)
{
print_r($message);
}
function show_error($myError)
{
print_r("error:".$myError);
}
if (!isset($_POST["submit"])) {
$myemail = "[email protected]";
$username = check_input($_POST['inputName'], "Username");
$email = check_input($_POST['inputEmail'], "Email");
$subject = "Someone has sent you a message\r\n";
$message = "Someone has sent you a message using your contac form: \r\n Username:".$username."\r\nEmail:".$email."\r\n";
mail($myemail, $subject, $message);
show_success($message);
exit();
}
?>
現在註冊表格和bootbox確認工作,但問題的關鍵在於寄來把電子郵件地址發送到我的電子郵箱當我點擊註冊按鈕後,我把頁面放在服務器上,我得到一個405:方法不允許錯誤:
代碼:MethodNotAllowed 消息:指定的方法不允許針對此資源。 的ResourceType:OBJECT 方法:POST 的requestId:0565E2E8DB90C71B 主機ID:cWkoCKGeVwAWRH/X3brKzv1tTnNuQxylIPm8kd9Fid8U0vWulYB2bJz/IgoqyRvNor
或當我點擊鏈接,通過我的本地瀏覽器我看到一個包含確切的PHP代碼我寫了一個白色的頁面。所以我想知道以下內容:
我的mailer.php代碼是否正確寫入,或者我犯了一些愚蠢的錯誤?
我通過Amazon S3託管網站。這可能是與服務器有關的問題嗎?在這之前,我需要做些別的事嗎?
我希望這裏的某個人能夠識別問題,因爲我真的被卡住了。
由於提前,
斯泰恩
編輯:
我根據建議由奧萊這樣做,但我仍然得到同樣的錯誤消息改變了代碼。現在我的代碼如下所示:
<div class="bs-example">
<div class="col-md-4 col-md-offset-4">
<form action="mailer.php" id="interest-form" method="POST">
<div class="form-group">
<input type="text" class="form-control" name="inputUsername" value="" placeholder="Username" />
</div>
<div class="form-group">
<input type="text" class="form-control" name="inputEmail" value="" placeholder="Email" />
</div>
<div class="form-group">
<input type="password" class="form-control" name="inputPassword" value="" placeholder="Password" />
</div>
<div class="form-group">
<input type="password" class="form-control" name="inputPassword" value="" placeholder="Password" />
</div>
<div class="checkbox">
<label><input type="checkbox">Remember me</label>
</div>
<button class='btn btn-signup btn-signup-sm' id="interested">Sign up</button>
</form>
</div>
</div>
這裏是由OLE建議代碼:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
$myemail = "[email protected]";
$username = $_POST['inputName'];
$email = $_POST['inputEmail'];
$subject = "Someone has sent you a message\r\n";
$message = "Someone has sent you a message using your contac form: \r\n Username:".$username."\r\nEmail:".$email."\r\n";
if(mail($myemail, $subject, $message)){
echo "Mail is sent";
}
else {
echo "An error occured";
}
exit();
}
?>
我仍然無法擺脫那個煩人的錯誤信息,希望有人能幫助我發現我的錯誤。
得到這個什麼您收到的錯誤 – 2014-10-01 07:50:55
您的表單似乎沒有任何名爲'submit'的輸入? – 2014-10-01 07:51:31
@RowlandShaw提交部分在javascript代碼中:$('#interest-form')。submit(); – Stijn 2014-10-01 07:55:05