我可以从React JS的联系表单中使用action ='POST'到PHP吗?

问题描述 投票:0回答:1

我已尝试从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,请告知我适当的资源来阅读它,谢谢,

php reactjs forms email form-submit
1个回答
0
投票

[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。将垃圾邮件发送到任何电子邮件地址。

© www.soinside.com 2019 - 2024. All rights reserved.