2013-06-26 50 views
0

我没有在原始查询中显示结果后,通过php显示表单。表单显示正常,但在提交时会转到index.php,而不是使用$_SERVER['PHP_SELF']进行处理。PHP表单未提交处理

echo "<form method='post' action='". $_SERVER['PHP_SELF']."'>"; 
echo $error['find']; 
echo "<p><label for='find'>Search for Your Favorite Location:</label><br />"; 
echo "<input type='text' id='find' name='find' value='".($_POST['find'] ? htmlentities($_POST['find']) : '')."' /></p>"; 
echo "<p><input type='submit' name='submitLocation' value='Submit' /></p></form>"; 
+0

只是让'action'空着。 (但是注意:如果这个表单是在你的index.php的include语句中生成的,你将会记得“index.php”) – dognose

+0

'$ _SERVER ['PHP_SELF']'不是表单的本地文件,而是它打开的URL,所以如果它打开在'http:// www.mysite.com/index.php'它会导致你回到那里,就像上面提到的dognose。 – Prix

+0

感谢您的及时回复。表单不在index.php上,它在wordpress的“页面”上。我会试着留下行动空白,看看如何解决。 – user2479915

回答

0

您可以通过将action保留为空来实现该结果。我清理了一下代码,现在看起来是这样的:

<?php 
if (isset($_POST['submitLocation'])) 
{ 
echo isset($_POST['find']) ? htmlentities($_POST['find']) : ''; 
} 
?> 

<html> 
<body> 
<form action="" method="post"> 
<p><label for='find'>Search for Your Favorite Location:</label><br/> 
<input type='text' id='find' name='find' value='' /></p> 
<input type='submit' name='submitLocation' value='Submit' /> 
</form> 
</body> 
</html> 

它检查表单提交或者不使用PHP的isset()功能。如果是:那么它只是回应用户输入的字符串。