将Node app中的表单数据重定向到PHP文件

时间:2016-03-09 02:08:56

标签: javascript php node.js forms express

使用Node& amp;有什么方法可以让表单数据重定向到同一文件夹中的PHP文件表达。

HTML

<form action="contact.php" method="post" role="form">
                    <div class="form-group">
                        <input type="text" class="form-control input-lg" id="nameinput" placeholder="Subject" name="contact-subject">
                    </div>
                    <div class="form-group">
                        <input type="email" class="form-control input-lg" id="emailinput" placeholder="Email" name="contact-email">
                    </div>
                    <div class="form-group">
                        <textarea class="form-control" rows="6" name="contact-message"></textarea>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-outline-white btn-big">Submit</button>
                    </div>
                </form>

当我点击提交时,它给了我&#34;不能POST /contact.php"。我知道这与我使用Express&amp; amp; Bodyparser。

Server.js

var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded());
app.use(express.static(path.join(__dirname, './client')));
app.listen(8000, function() {
  console.log('cool stuff on: 8000 check if right server');
});

我已经尝试取出&#34; app.use(bodyParser.urlencoded())&#34;,但它仍然会出现同样的错误。

已使用锚点替换表单中的提交按钮,并将表单操作更改为&#34;&#34;

<a href="contact.php" class="btn btn-outline-white btn-big">Submit</a>

只需在点击提交时下载contact.php文件。

这是我试图访问的PHP文件。

<?php
// get posted data into local variables
$EmailTo = "ENTER EMAIL";
$Subject = "Message via Portfolio";
$Name = Trim(stripslashes($_POST['contact-name'])); 
$EmailFrom = Trim(stripslashes($_POST['contact-email']));  
$Message = Trim(stripslashes($_POST['contact-message'])); 

// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (!$validationOK) {
  print "<h2>There was an error. Please try to send the message again. </h2>";
  exit;
}

// prepare email body text
$Body = "You've got this email from your website:";
$Body .= "\r\n";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\r\n";
$Body .= "Email: ";
$Body .= $EmailFrom;
$Body .= "\r\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\r\n";

// send email 
$success = mail( $EmailTo, $Subject, $Body );

//redirect to success page 
if ($success){
    print "<meta http-equiv=\"refresh\" content=\"0;URL=index.html\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=index.html\">";
}
?>

有没有办法做到这一点,而不是使用app.post&amp;用javascript重写整个php? 。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作来运行php(确保您有一台能够运行PHP的服务器)。

  1. 在您的节点目录中Server.js创建名为php
  2. 的目录
  3. 将您的contact.php移至php目录
  4. 将表单操作设置为php目录中的contact.php
  5. Server.js中通过app.use(express.static(__dirname + 'php'));
  6. 将php drectory设置为静态

    希望这有帮助。

    但是当你在节点上时,使用express来使用route.post处理表单数据。