是否可以在html表单后执行一些php代码?

问题描述:

我是新来的PHP,HTML和Web服务。 我想要做的是发送一个名称变量与HTML表单到一个web服务,并呼应它的回应回我的表单的同一页。现在我的问题是,在发布firstname变量之前,Web服务的调用发生了。是否有一种方法来执行我的PHP代码的其余部分后,我点击提交按钮?所以我可以在firstname变量设置后调用Web服务。是否可以在html表单后执行一些php代码?

这是我的代码我尝试了一些东西,但他们并没有真正帮助我。 谢谢。

<?php 
$path = 'c:\\wamp\\www\\nusoap.php'; 
require_once $path; 
$client = new nusoap_client("http://localhost/nusoap/productlist.php?wsdl", TRUE); 

?> 
<html> 
<head> 
<title>Personal INFO</title> 
</head> 
<body> 
<?php 
echo '<form method="post" action="">'; 
echo 'First Name:'; echo '<input type="text" size="12" maxlength="12" name="Fname">'; echo '<br  />'; 
'<input type="submit" value="Submit" class="button"> 
</form>' 
?> 
<?php 
if (isset($_POST['Fname'])) 
{ 
$Fname = $_POST["Fname"]; 
$result = $client->call("getName", array($Fname)); 
} 
//echo $Fname; 

$error = $client->getError(); 
if ($error) { 
    echo "<h2>Constructor error</h2><pre>" . $error . "</pre>"; 
} 
if ($Fname != NULL or ""){ 
//$result = $client->call("getName", array($Fname)); 
} 
if ($client->fault) { 
    echo "<h2>Fault</h2><pre>"; 
    echo ($result); 
    echo "</pre>"; 
} 
else { 
    $error = $client->getError(); 
    if ($error) { 
     echo "<h2>Error</h2><pre>" . $error . "</pre>"; 
    } 
    else if (isset($Fname)){ 
     echo "<h2>Respond</h2><pre>"; 
     echo $result; 
     echo "</pre>"; 
    } 
} 
?> 
</body> 
</html> 
+1

这应该是这样做的:'if(isset($ _ POST ['Fname']))'。如果在'if'语句中应该包含更多逻辑,请将其移到那里。 (这听起来像*大多数*如果不是*所有*的逻辑属于那里)。另一种方法可能是有两个单独的页面,一个用于渲染表单,另一个用于在提交后处理它。 – David 2014-10-06 13:50:02

要检查表单被提交或没有,你可以使用下面的代码:

<form action="#" method="POST"> 
    <button type="submit">Submit</button> 
</form> 
<?php 
    if($_SERVER['REQUEST_METHOD'] == "POST"){ 
      // Do something with posted data 
      // For example: if(isset($_POST['Fname'])) { echo $_POST['Fname']; } 
    } 
?> 

$_SERVER是包含有有关服务器如何被调用多个信息数组键一个全球性的阵列中,访客等等。在这里,我们用它来检查请求方法,在这种情况下,在提交表单时是POST。

isset()函数检查指定的字符串或数组是否确实存在。因此,在这种情况下,我们使用IF语句说,如果变量$_POST['Fname']事实上确实存在,我们应该做一些事情。您也可以在其前面添加一个!来做相反的事情。这会说如果值没有设置:

if (!isset($_POST['Fname'])) { echo "Did you forget your name?"; } 
+0

这会强制首先提交表单,然后在if($ _SERVER ['REQUEST_METHOD'] ==“POST”){}条件内执行php代码? – Tal 2014-10-06 14:22:09

+0

不可以。这只会检查表单是否已过帐。用php强制发布表单似乎是一种不好的方式来做某事。你不想在用户输入值之前强制发布任何帖子 – 2014-10-06 15:11:20

+0

好的,我添加了你的条件并改变了一些其他的东西,现在一切正常:D谢谢! – Tal 2014-10-06 15:20:54