PHP - 如何在提交后隐藏表单
Posted
技术标签:
【中文标题】PHP - 如何在提交后隐藏表单【英文标题】:PHP - How to hide the form after it's submitted 【发布时间】:2013-10-02 15:42:16 【问题描述】:我有一个放在容器中的域名检查表。在我提交表单后,会检查域名的可用性,并在与表单相同的容器中显示一条消息。显示消息时,我希望表单和第一个 H2 消失。我该怎么做?
我的代码:
<div id="domain-name-check">
<h2>Is uw domeinnaam nog vrij?</h2>
<form method='post' class="clearfix">
<input type=text name=domain>
<select name="suffix">
<option value=".nl">.nl</option>
<option value=".be">.be</option>
<option value=".com">.com</option>
<option value=".net">.net</option>
<option value=".org">.org</option>
<option value=".biz">.biz</option>
<option value=".info">.info</option>
<option value=".mobi">.mobi</option>
<option value=".ws">.ws</option>
<option value=".cc">.cc</option>
</select>
<input type=submit name=proses value=Check>
</form>
<?php
if(isset($_POST['proses']))
$domain_name = "$_POST[domain]"."$_POST[suffix]";
$arrHost = @gethostbynamel("$domain_name");
$date = date('y-m-d');
if(empty($arrHost))
echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
$availability = "yes";
else
echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
$availability = "no";
mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());
?>
</div>
【问题讨论】:
考虑将这些用双引号<input type=submit name=proses value=Check>
括起来,如 <input type="submit" name="proses" value="Check">
和 <input type="text" name="domain">
还要考虑有不同的页面而不是条件内容的单个页面。 Google 的模板引擎,例如“Smarty”
您不必以巨大的表格为例来解决您的问题。请 - 这指的是每个人 - 将您的示例代码保持在最低限度。因此,1) 阅读代码和 2) 回复它会更容易,尤其是。随着代码的更正。就这么简单。
【参考方案1】:
更正的代码:
仅当我们没有提交表单值时才显示表单。
因此,在else
标签中编写您的 html 代码,如下所示:
<div id="domain-name-check">
<?php
if(isset($_POST['proses']))
$domain_name = "$_POST[domain]"."$_POST[suffix]";
$arrHost = @gethostbynamel("$domain_name");
$date = date('y-m-d');
if(empty($arrHost))
echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
$availability = "yes";
else
echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
$availability = "no";
mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());
else
?>
<h2>Is uw domeinnaam nog vrij?</h2>
<form method='post' class="clearfix">
<input type=text name=domain>
<select name="suffix">
<option value=".nl">.nl</option>
<option value=".be">.be</option>
<option value=".com">.com</option>
<option value=".net">.net</option>
<option value=".org">.org</option>
<option value=".biz">.biz</option>
<option value=".info">.info</option>
<option value=".mobi">.mobi</option>
<option value=".ws">.ws</option>
<option value=".cc">.cc</option>
</select>
<input type=submit name=proses value=Check>
</form>
<?php
?>
</div>
【讨论】:
投反对票,因为缺少对更改内容或修复代码的原因的解释。不讨论技术或文档链接。这个问题的答案对社区没有任何价值。 嗨@michaelward82,感谢您的投票。我明白了。从现在开始,我将提供适当的解释、链接、文档。这是本站的荣耀。 那么我将收回反对票 :) 希望您继续享受使用 SO!【参考方案2】:<div id="domain-name-check">
<?php if(!isset($_POST['proses'])) ?><h2>Is uw domeinnaam nog vrij?</h2>
<form method='post' class="clearfix">
<input type=text name=domain>
<select name="suffix">
<option value=".nl">.nl</option>
<option value=".be">.be</option>
<option value=".com">.com</option>
<option value=".net">.net</option>
<option value=".org">.org</option>
<option value=".biz">.biz</option>
<option value=".info">.info</option>
<option value=".mobi">.mobi</option>
<option value=".ws">.ws</option>
<option value=".cc">.cc</option>
</select>
<input type=submit name=proses value=Check>
</form>
<?php //endif form submitted
if(isset($_POST['proses']))
$domain_name = "$_POST[domain]"."$_POST[suffix]";
$arrHost = @gethostbynamel("$domain_name");
$date = date('y-m-d');
if(empty($arrHost))
echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
$availability = "yes";
else
echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
$availability = "no";
mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());
?>
</div>
【讨论】:
【参考方案3】:这可以通过稍微重构当前代码来完成:
<?php
if(isset($_POST['proses']))
# code ...
else
?>
<div id="domain-name-check">
<!-- your form code goes here -->
</div>
<?php
//end of else block
?>
完整代码:
<?php
if(isset($_POST['proses']))
$domain_name = "$_POST[domain]"."$_POST[suffix]";
$arrHost = @gethostbynamel("$domain_name");
$date = date('y-m-d');
if(empty($arrHost))
echo "<h2>$domain_name is beschikbaar</h2> <a href='/offerte-aanvragen/".$domain_name."/'>Vraag een offerte aan</a>";
echo "AVAILABLE";
$availability = "yes";
else
echo "<h2>$domain_name is helaas bezet</h2> <a href='/offerte-aanvragen/".$domain_name."/verhuizen/'>Verhuis uw domein</a>";
echo "NOT AVAILABLE";
$availability = "no";
mysql_query("INSERT domainnames SET dns='".$domain_name."', available='".$availability."', timestamp='".$date."'")or die(mysql_error());
else
?>
<div id="domain-name-check">
<h2>Is uw domeinnaam nog vrij?</h2>
<form method='post' class="clearfix">
<input type=text name=domain>
<select name="suffix">
<option value=".nl">.nl</option>
<option value=".be">.be</option>
<option value=".com">.com</option>
<option value=".net">.net</option>
<option value=".org">.org</option>
<option value=".biz">.biz</option>
<option value=".info">.info</option>
<option value=".mobi">.mobi</option>
<option value=".ws">.ws</option>
<option value=".cc">.cc</option>
</select>
<input type=submit name=proses value=Check>
</form>
</div>
<?php
?>
【讨论】:
【参考方案4】:在您的表单标签下,插入一个隐藏的表单字段,如下所示:
<form method='post' class="clearfix">
<input type="hidden" name="action" id="action" value="hideme" />
.................................
.............................
</form>
现在在您的 $_POST 部分下,使用以下逻辑:
if (isset($_POST['action'])&& ($_POST['action']=='hideme'))
//perform your intended task on submission
else
//Show My form code again
简单!
【讨论】:
【参考方案5】:HTML 代码可以用 PHP 包装以有条件地显示它。
考虑以下作为此类功能的模板:
<?php if (condition) ?>
<p>HTML</p>
<?php ?>
就这么简单。
在这种情况下,您的情况可能是
if (isset($_POST['proses'])
【讨论】:
【参考方案6】:将<h2>Is uw domeinnaam nog vrij?</h2>
替换为
if (!isset($_POST))
echo '<h2>Is uw domeinnaam nog vrij?</h2>';
这将确保如果没有提交表单,那么h2
将对用户可见
或者你可以使用javascript
【讨论】:
【参考方案7】:使用以下内容:
<?php
if ( isset( $_POST['field_name'] ) )
.... // submit
exit();
?>
<html>
<form ... action="" method="POST">
....
....
</form>
</html>
【讨论】:
以上是关于PHP - 如何在提交后隐藏表单的主要内容,如果未能解决你的问题,请参考以下文章
php中如何对提交表单地址栏参数进行加密或者隐藏,或者其他安全性的处理