未定义的索引错误&POST / GET没有输出

时间:2019-03-26 12:30:27

标签: php

我正在本地服务器上设置一个简单的表单,但是POST和GET方法均不返回任何内容。

我在制作自己的表格时发现了这个问题。然后,我尝试使用在线教程代码来查看它们是否存在相同的问题。因此,我几乎可以确定这不是代码问题。当我使用isset()或??来“修复”这些代码时,结果页面为空白。

我正在使用Windows 10 x86,PHP 7,node.js本地服务器,从https://www.w3schools.com/php7/php7_forms.asphttps://www.w3resource.com/php/super-variables/ $ _ REQUEST.php复制的代码。

有人知道PHP是否有问题吗?

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>
<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

webserver.js

var express = require('express');
var app = express();

var execPHP = require('./execphp.js')();

execPHP.phpFolder = 'C:\\Users\\Dshop\\Desktop\\php-7.3.3\\Server1';

app.use('*.php',function(request,response,next) {
    execPHP.parseFile(request.originalUrl,function(phpResult) {
        response.write(phpResult);
        response.end();
    });
});

app.listen(3000, function () {
    console.log('Node server listening on port 3000!');
});

execphp.js

/**
*
*/
class ExecPHP {
    /**
    *
    */
    constructor() {
        this.phpPath = 'C:\\Users\\Dshop\\Desktop\\php-7.3.3\\php.exe';
        this.phpFolder = '';
    }   
    /**
    *
    */
    parseFile(fileName,callback) {
        var realFileName = this.phpFolder + fileName;

        console.log('parsing file: ' + realFileName);

        var exec = require('child_process').exec;
        var cmd = this.phpPath + ' ' + realFileName;

        exec(cmd, function(error, stdout, stderr) {
            callback(stdout);
        });
    }
}
module.exports = function() {
    return new ExecPHP();
};

what shows up in server

what results in

1 个答案:

答案 0 :(得分:1)

用于运行PHP的代码非常基础。与您的兴趣相关的关键遗漏是您无所事事地填充$_POST。您只是在没有输入的情况下执行PHP程序。

要从Node.js程序内部运行PHP,您应该使用node-php之类的模块。

使用Apache HTTPD之类的东西运行PHP(使用mod_php),然后将请求转发到单独的Node.js服务器,以便在那里运行代码(使用mod_proxy),可能会更好。