Могу ли я использовать action = 'POST' для PHP из контактной формы в React JS? - PullRequest
0 голосов
/ 27 октября 2019

Я пытался опубликовать данные формы из визуализированной формы React JS, вызвав 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 = 'james_ross@outlook.fr';

  $headers = 'From: ' . $emailFrom . '\n\n';

  mail($emailTo, $emailSubject, $emailBody, $headers);

  header('Location: index.js/mailsent');
}

Если мне нужно использовать другую технику / язык вместо PHP, пожалуйста, посоветуйте мне достойный источник, чтобы прочитать его, Спасибо,

1 Ответ

0 голосов
/ 27 октября 2019

action="contact.php" - это относительная ссылка, и похоже, что ваш интерфейс работает как xxx/index.js/, вам нужно установить абсолютный URL-адрес, например action="/contact.php" или action="xxx/contact.php", где xxx - папка с вашим php-скриптом.

Если вы разрабатываете с реагированием, то вы не хотите переключаться между страницами на стороне сервера и на стороне клиента, просто отправьте форму с помощью ajax и отобразите вывод в своем приложении реагирования.

Ваш код PHPимеет проблему с безопасностью: $ emailFrom не определен, если у вас есть какая-то старая конфигурация PHP с register_globals, чем возможно вставить собственный заголовочный контент и, например, отправлять спам-сообщения на любые адреса электронной почты.

...