我正在本地服务器上设置一个简单的表单,但是POST和GET方法均不返回任何内容。
我在制作自己的表格时发现了这个问题。然后,我尝试使用在线教程代码来查看它们是否存在相同的问题。因此,我几乎可以确定这不是代码问题。当我使用isset()或??来“修复”这些代码时,结果页面为空白。
我正在使用Windows 10 x86,PHP 7,node.js本地服务器,从https://www.w3schools.com/php7/php7_forms.asp和https://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();
};
答案 0 :(得分:1)
用于运行PHP的代码非常基础。与您的兴趣相关的关键遗漏是您无所事事地填充$_POST
。您只是在没有输入的情况下执行PHP程序。
要从Node.js程序内部运行PHP,您应该使用node-php之类的模块。
使用Apache HTTPD之类的东西运行PHP(使用mod_php),然后将请求转发到单独的Node.js服务器,以便在那里运行代码(使用mod_proxy),可能会更好。