这是我的表格:
<?php
echo '<form method="get" action="" name="formulaire">';
echo '<input type="text" name="info1" title="" value="" />';
echo '<input type="text" name="info2" title="" value="" />';
echo '<input type="text" name="info3" title="" value="" />';
echo '<input type="submit" value="Envoyer" />';
echo '</form>';
echo '$info1 = '.$_GET["info1"].'<br />';
echo '$info2 = '.$_GET["info2"].'<br />';
echo '$info3 = '.$_GET["info3"].'<br />';
?>
我的问题是,提交后,所有变量都会显示在网址中,即使它们是空的。
我希望仅在URL中显示非空变量。
有没有办法用PHP做到这一点?
答案 0 :(得分:10)
<html>
<head>
<script type="text/javascript">
function myFunction()
{
var myForm = document.getElementById('form-id');
var allInputs = myForm.getElementsByTagName('input');
var input, i;
for(i = 0; input = allInputs[i]; i++) {
if(input.getAttribute('name') && !input.value) {
input.setAttribute('name', '');
}
}
}
</script>
</head>
<form id="form-id" method="get" action="" name="formulaire" onsubmit="myFunction()">
<input type="text" name="info1" title="" value="" />
<input type="text" name="info2" title="" value="" />
<input type="text" name="info3" title="" value="" />
<input type="submit" value="Envoyer" />
</form>
<?php
echo '$info1 = '.$_GET["info1"].'<br />';
echo '$info2 = '.$_GET["info2"].'<br />';
echo '$info3 = '.$_GET["info3"].'<br />';
?>
</html>
答案 1 :(得分:3)
它不是一个PHP问题,它是什么填充表格。表格中的所有值都会发送。您需要使用Javascript来检查它。
如果表单项设置为禁用,则不会发送它,例如
<script>
$(function() {
$('form').submit(function() {
$(':input[value=""]').attr('disabled', true);
}
});
</script>
http://api.jquery.com/ready/ 如果放在页面的任何地方,应该可以工作
此外,您不需要回显HTML
<form method="get" action="" name="formulaire">
<input type="text" name="info1" title="" value="" />
<input type="text" name="info2" title="" value="" />
<input type="text" name="info3" title="" value="" />
<input type="submit" value="Envoyer" />
</form>
<?php
echo '$info1 = '.$_GET["info1"].'<br />';
echo '$info2 = '.$_GET["info2"].'<br />';
echo '$info3 = '.$_GET["info3"].'<br />';
?>
分离PHP和HTML
答案 2 :(得分:1)
用PHP无法完成。这是html表单的标准行为。如果你想这样做,你必须使用表单的javascript和onsubmit
,循环并删除空元素或构建查询字符串location.href=myQueryString
。
答案 3 :(得分:0)
单击提交按钮时,浏览器将形成URL。无法使用PHP更改浏览器的功能。您可以尝试将表单方法更改为POST
。
或者,您可以使用JavaScript拦截提交表单,并使用JavaScript生成转发到的URL。
答案 4 :(得分:0)
可能可以优化,但这是我的建议,使用PHP:
if (!isset($_GET['clean'])) {
$_GET['clean'] = 1;
redirect($_SERVER['SCRIPT_URL'] . '?' . http_build_query(array_filter($_GET)));
}
unset($_GET['clean']);
答案 5 :(得分:0)
我们可以轻松地将网址设置为空,而无需javascript或其他插件,此处代码将其放在会话代码之后的代码顶部,但请注意我们只能使用post方法。它是安全的而不是更复杂的
header("Cache-Control: no cache");
session_cache_limiter("private_no_expire");
欢呼声