我已尝试从React JS呈现的表单中发布表单数据,并使用表单的动作部分调用aq php文件...我已经将表单和附加的PHP文件上传到了我的网站,但是当表单被填充时提交完毕,不发送电子邮件,URL更改回首页,其中PHP文件的名称标记为(index.js / contact.php)。
我的代码是否低于标准?
或者这是否无法通过将React JS和PHP结合使用来完成?
contactMe.js
import React, { Component } from 'react';
class ContactMe extends Component {
render() {
return (
<div className='contact-body'>
<div className='contact-right'>
<div className='contact-side'>
<h2 style={{ fontSize: '25px', fontFamily: 'Anton', paddingTop: '10px'}}>
Contact Me
</h2>
<hr />
<div className='contact-list'>
<div className='form'>
<form action="contact.php" method='post'>
<input type="text" name="name" placeholder="Your name..." />
<input type="email" name="email" placeholder="Your email..." />
<textarea name="message" placeholder="Message me..."></textarea>
<input type="submit" value="Submit" />
</form>
</div>
</div>
</div>
</div>
</div>
)
}
}
export default ContactMe;
contact.php
<?php
if (isset($_POST['submit'])) {
$userName = $_POST['name'];
$userEmail = $_POST['email'];
$userMessage = $_POST['message'];
$emailSubject = 'New Message From My Website Visitor';
$emailBody = 'Visitor Name: ' . $userName . '\n\n' .
'Visitor Email: ' . $userEmail . '\n\n' .
'Message: ' . $userMessage . '\n\n';
$emailTo = '[email protected]';
$headers = 'From: ' . $emailFrom . '\n\n';
mail($emailTo, $emailSubject, $emailBody, $headers);
header('Location: index.js/mailsent');
}
如果我需要使用另一种技术/语言来代替PHP,请告知我适当的资源来阅读它,谢谢,
[action="contact.php"
是相对链接,它看起来像您的前端以xxx/index.js/
的身份运行,您必须将其设置为像action="/contact.php"
或action="xxx/contact.php"
一样的绝对URL,其中xxx是php脚本的文件夹。
如果您使用react开发,而不希望在服务器和客户端页面之间切换,只需使用ajax发送表单并在react应用中显示输出。
您的PHP代码存在安全问题:没有定义$ emailFrom,如果您使用register_globals进行了一些旧的PHP配置,则可以插入自己的标头内容和f.e。将垃圾邮件发送到任何电子邮件地址。