我使用输入get方法表单创建了一个简单的单页网站,而不使用数据库连接
我在创建新网址时遇到+
和%
符号问题。
当用户输入"Aravind Kumar"
这样的名称时,会创建一个类似example.com/?name=Aravind+kumar
的网址,并在Facebook上分享链接时也会显示%
符号。
如何删除网址中的%
和+
符号?
我的表格
<form action="" class="login-form" method="get" accept-charset="UTF-8">
<div class="form-group">
<input type="text" class="form-control" required id="name" name="name" class="form-control w-40 dis-ib" placeholder="Enter your name" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-success btn-block btn-lg">Create Now</button>
</div>
</form>
当用户输入名称时,会自动为此表单创建一个网址:example.com/?name=user
答案 0 :(得分:0)
GET方法将变量(附加它们)嵌入到操作URL中。 POST方法使用HTTP请求的实体主体,因此它们不会出现在URL中。
将表单方法从GET更改为POST:即更改以下内容:
<form action="" class="login-form" method="get" accept-charset="UTF-8">
到此:
<form action="" class="login-form" method="post" accept-charset="UTF-8">
您还没有展示您的PHP,但我假设您正在使用$ _GET解释您的表单变量。使用POST方法时,需要使用$ _POST数组解释变量。如果您要发布到其他某个域/网站,您可能会发现必须使用这两种方法中的一种,具体取决于您可能无法控制的网站要求。
编辑:如果要动态地将提交的值从空格(将转换为+符号)更改为连字符,下面是使用javascript实现onsubmit()处理程序的示例表单。在提交表单之前,空格将更改为连字符。
<html>
<head>
<title>Test Page</title>
</head>
<script lang="javascript">
function getObj(id)
{
if (document.getElementById)
{
//standard browsers
return(document.getElementById(id));
}
else if (document.all)
{
//older browsers
return(document.all[id]);
}
else if (document.layers)
{
return(document.layers[id]);
}
}
function onSubmit(obj)
{
var objName = getObj('name');
objName.value = objName.value.replace(/ /i,'-'); //replace spaces with hyphens
return true;
}
</script>
<body>
Hello
<form action="" class="login-form" method="get" accept-charset="UTF-8" onsubmit="return onSubmit(this)">
<div class="form-group">
<input type="text" class="form-control" required id="name" name="name" class="form-control w-40 dis-ib" placeholder="Enter your name"/>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success btn-block btn-lg">Create Now</button>
</div>
</form>
</body>
</html>