我正在编写我自己的第一个网站。有一个部分,您可以输入您的姓名,邮件和消息给我。通过单击“发送消息”,该消息应发送到我的个人邮件。网站访问者应该通过弹出“消息已成功发送”或类似的方式收到提醒。遗憾的是,当点击“发送消息”时,会打开另一个网站,说明“发送消息失败”。任何帮助都非常感谢。
HTML:
<form action="untitled.php" method="post" target="self">
<p><input class="w3-input w3-border" type="text" id="name" name="name" placeholder="Name" required name="Name"></p>
<p><input class="w3-input w3-border" type="email" id="email" name="email" placeholder="Email" required name="Email"></p>
<p><textarea id="message" type="text" name="message" required placeholder="Message" rows="6" cols="30" ></textarea>
</p>
<button class="w3-button w3-black" type="submit" name="submit" value="submit">
<i class="fa fa-paper-plane"></i> Sende Nachricht
</button>
</p>
</form>
php:代码
<?php
$posted = false;
if( $_POST ) {
$posted = true;
$to = '[email protected]';
$name = $_POST['name'];
$mail_from = $_POST['email'];
$subject = 'Message sent from website';
$message = $_POST['message'];
$header = "From: $name <$mail_from>";
$result = $_POST['name'] == "danny"; // Dummy result
}
?>
<html>
<head></head>
<body>
<?php
if( $posted ) {
if( $result )
echo "<script type='text/javascript'>alert('submitted successfully!')</script>";
else
echo "<script type='text/javascript'>alert('failed!') </script>";
}
?>
<form action="" method="post">
Name:<input type="text" id="name" name="name"/>
<input type="submit" value="submit" name="submit"/>
</form>
</body>
</html>
欢迎来到stackoverflow :)我在下面测试了你的公式(你可以点击运行)并且看起来有效,但是你需要untitled.php或者你可以将它重命名为email.php以使其更具体,即email.php是一个代码只发送电子邮件:)
在email.php(目前无名字.php)中,请看看这个帖子How to send an email using PHP?
或将此代码复制粘贴到email.php(当前为untitled.php)
<?php
$to = '[email protected]'; //your email
$subject = 'from my website - email form';
$message = $_POST['message'];
$headers = 'From: '.$_POST['email']. "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
//thank you message
<div>Thanks for your message, I'll answer your email as soon as i can. best regards <a href="/">back »</a></div>
<form action="untitled.php" method="post" target="self">
<p><input class="w3-input w3-border" type="text" id="name" name="name" placeholder="Name" required name="Name"></p>
<p><input class="w3-input w3-border" type="email" id="email" name="email" placeholder="Email" required name="Email"></p>
<p><textarea id="message" type="text" name="message" required placeholder="Message" rows="6" cols="30" ></textarea>
</p>
<button class="w3-button w3-black" type="submit" name="submit" value="submit">
<i class="fa fa-paper-plane"></i> Sende Nachricht
</button>
</p>
</form>
如何执行这两种方法的示例 - 传统表单提交和ajax。
<?php
ob_clean();
$payload=array();
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['submit'] ) ){
/* for ajax & standard form submissions */
$args=array(
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_SANITIZE_EMAIL,
'message' => FILTER_SANITIZE_STRING
);
$_POST=filter_input_array( INPUT_POST, $args );
/* Have any additional fields been injected into the POST request? */
foreach( $_POST as $field => $value ){
if( !in_array( $field, array_keys( $args ) ) )exit( sprintf( 'unknown parameter "%s"', $field ) );
}
/* Are all the required fields in the POST array? */
foreach( array_keys( $args ) as $field ){
if( !in_array( $field, array_keys( $_POST ) ) )exit( sprintf('Empty or missing parameter "%s"',$field ) );
}
/* assign fields to variables */
extract( $_POST );
/*
check the validity of the email address -
doesn't actually determine if this is a genuine email though
*/
$email = filter_var( $email, FILTER_VALIDATE_EMAIL );
if( $email ){
$to = '[email protected]';
$from = $email;
$subject = 'Message sent from website';
$headers = sprintf( 'From: %s<%s>', $name, $email );
$status=@mail( $to, $subject, $message, $headers );
$payload['email']=$email;
$payload['status']=$status;
$payload['message']=$message;
$payload['method']='FORM';
}
if( !empty( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && $_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest' ){
header('Content-Type: application/json');
$payload['method']='AJAX';
exit( json_encode( $payload ) );
}
}
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>PHP & Javascript - send email</title>
<script>
const ajax=function(url,params,callback){
let xhr=new XMLHttpRequest();
xhr.onload=function(){
if( this.status==200 && this.readyState==4 )callback.call( this, this.response )
};
xhr.onerror=function(e){
alert(e)
};
xhr.open( 'POST', url, true );
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
xhr.send( buildparams( params ) );
};
const buildparams=function(p){
if( p && typeof( p )==='object' ){
p=Object.keys( p ).map(function( k ){
return typeof( p[ k ] )=='object' ? buildparams( p[ k ] ) : [ encodeURIComponent( k ), encodeURIComponent( p[ k ] ) ].join('=')
}).join('&');
}
return p;
};
document.addEventListener('DOMContentLoaded',function(){
let bttn=document.querySelector('input[type="button"][name="ajax-submit"]');
bttn.addEventListener( 'click', function(e){
let params={
submit:'submit',
name:document.querySelector('input[name="name"]').value,
email:document.querySelector('input[name="email"]').value,
message:document.querySelector('textarea[name="message"]').value
};
let callback=function(r){
let json=JSON.parse( r );
alert( r.status ? 'Yay - message sent!' : 'Boo - message sending failed' );
document.querySelector('form > pre').innerText=r;
};
ajax.call( this, location.href, params, callback )
},false );
},false );
</script>
<style>
form{width:60%;padding:1rem;box-sizing:border-box;margin:2rem auto 0 auto;float:none;border:1px solid black}
input,button{padding:1rem;margin:0.25rem auto}
textarea{padding:1rem;width:100%;resize:none;margin:0.5rem auto}
[type='text'], [type='email'], textarea{width:calc(100% - 2rem);}
[type='button'], button{width:100%;}
pre{width:100%;float:none;margin:auto;color:green;}
</style>
</head>
<body>
<form method='post'>
<input class='w3-input w3-border' type='text' id='name' name='name' placeholder='Name' required name='Name'>
<input class='w3-input w3-border' type='email' id='email' name='email' placeholder='Email' required name='Email'>
<textarea id='message' type='text' name='message' required placeholder='Message' rows='6' cols='30' ></textarea>
<button class='w3-button w3-black' type='submit' name='submit' value='submit'>
<i class='fa fa-paper-plane'>Sende Nachricht</i>
</button>
<input type='button' name='ajax-submit' value='Send Email using ajax' />
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $payload ) ){
printf('<pre>%s</pre>',print_r( $payload,true ) );
} else {
echo '<pre></pre>';
}
?>
</form>
</body>
</html>