PHP - 表单提交后未设置$ _POST变量

时间:2016-12-03 13:35:50

标签: php html forms web-services post

我知道这是一个非常有问题的问题,我在检查了几乎所有已经问过的类似问题之后写了这个问题。在每个发布的问题中,解决方案是在表单中添加name属性,但在获取错误之前我已经完成了。

所以这就是问题所在: 我正在尝试实现一个基本的SOAP Web服务,现在只使用从提交表单传递的名称打印一个句子。在这里,我添加了客户端,服务器和表单代码。 我希望有人可以帮忙!

soapserver.php

$server = new nusoap_server;

$server->configureWSDL('server','urn:server');

$server->wsdl->schemaTargetNamespace = 'urn:server';

$server->register('register',
                array('username' => 'xsd:string'),  //input parameter
                array('return' => 'xsd:string'),    //output
                'urn:server',                       //namespace
                'urn:server#helloServer',           //SOAP action
                'rpc',
                'encoded',
                'Registrar un usuari');             //description

function register($username) {
    return 'L\'usuari '.$username.' s\'ha registrat correctament!'; 
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

soapclient.php

$wsdl = "http://localhost/soapserver.php?wsdl";

$client = new nusoap_client($wsdl,'wsdl');

$err = $client->getError();

if ($err) {
    echo '<h2>Constructor error</h2>' . $err;
    exit();
}
if ($_POST) {
    echo $_POST;
}
if (isset($_POST["user"])) {
    echo $_POST["user"];
}

soapform.html

<html>
<body>
    <form name="reg_form" action="soapclient.php" method="POST">
                    Username: <input type="text" name="user"/>
                    Password: <input type="password" name="password"/>
                    <input type="submit" name="submit" value="Sign up"/>
    </form>

</body>
</html>

我提交表单时得到的结果是什么,因为isset($ _ POST [“user”])和isset($ _ POST)返回false,因此没有任何反应。

2 个答案:

答案 0 :(得分:3)

我只是将其作为答案发布,以便任何有同样问题的人都可以轻松找到答案。

我只是通过$ _REQUEST改变$ _POST来解决这个问题,即使我还不知道为什么其他方式不会工作...

修改:在深入检查之后,我已经看到Chrome发送的请求是GET请求,而它必须是POST。所以最后我已修复它将操作从auto tmp_func = bind(some_func, placeholders::_1, placeholders::_2, ...other_parameters); pool.add_task(i_from, i_to, tmp_func); 更改为i_max,现在它发送了一个POST,变量$ _POST具有用户名的值。

答案 1 :(得分:2)

你可以尝试

if ((!is_array($_POST)) || (count($_POST) < 1)) {
    $_POST = json_decode(file_get_contents('php://input'), true)
}