我有一个表单,其中我显示了一个选择项和另外两个不可见的输入,其中有一些变量值,我需要在按下“Action”按钮时传递到同一页面。但是我遇到的问题是这些变量都是城市名,比如“纽约”,所以名字里面有一个空格,在传递变量的时候,只有“New”被传递;空间也随之消失。我读到这些变量中不应该有任何空格,那么我应该怎么做呢?
下面是我的示例代码:
// at the beginning of the code I get this variables pass from other pages
$pais=$_GET['pais'];
$name=$_GET['nombre'];
// this is how I query my table to populate my select item
$SN=mysql_real_escape_string($name);
$SP=mysql_real_escape_string($pais);
$estadoquery = "SELECT * FROM `".$SP."` ORDER BY Estado ASC";
$estadoresult = mysql_query($estadoquery);
// this is how I make my form
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="HIDDEN" name=nombre value="<? echo $SN ?>">
<input type="HIDDEN" name=pais value="<? echo $SP ?>">
<th scope="col" align="center" valign="baseline" size="18px">
<select name=estado id="estado" style="font-size:24px">
<option value="">Todos</option>
<?
while($rowp = mysql_fetch_array($estadoresult)) {
$estado = $rowp['Estado'];
$Se=mysql_real_escape_string($estado);
?>
<option value=<?php echo $Se ?>>
<?php echo $Se ?></option>
<? } ?>
</select>
</th>
<th scope="col" align="center" valign="baseline">
<input type="SUBMIT" name="ACTION" value="IR">
</th></form>
// and this is what the button action does
if(@$_POST['ACTION']=='IR')
{
$pais = $_POST['pais'];
$name = $_POST['nombre'];
$estado = $_POST['estado'];
$pais = mysql_escape_string($pais);
$name = mysql_escape_string($name);
$estado = mysql_escape_string($estado);
// this next echos are just to check my variables.
echo $pais;
echo $name;
echo $estado; // so here I can tell that this variable is not complete
}
我读到变量不能用空格传递,为什么我的$pais
变量“United States”能用空格正确传递?有人能告诉我如何实现这一点,或者如何转换我的<option value=<?php echo $Se ?>>
,使它可以通过空间?
7条答案
按热度按时间b4lqfgs41#
根据我上面的评论:
问题是选项值周围没有引号。更改如下:
你就可以走了
7tofc5zh2#
使用urlencode()。它会将空格转换为
%20
,并成功传输。.你可以用urldecode()解码。ffscu2ro3#
我认为这与URL编码有关。URL中不能有空格。但是,有一些特殊字符可用于表示URL中的空格。GET方法使用URL。
我相信这可能会有所帮助;http://php.net/manual/en/function.urlencode.php
cld4siwp4#
sxpgvts35#
对要传入get的变量使用urlencode函数。参考http://php.net/manual/en/function.urlencode.php。
然后当你想再次使用这个变量时,你可以使用urldecode来解码它。http://php.net/manual/en/function.urldecode.php
编辑后:
应为:
用qoutes和urlencode。
hof1towb6#
关于功夫的回应。urlencode()不会将白色转换为%20,而是转换为+字符。使用rawurlencode()将白色转换为%20。
你可能也想读一下这个:https://stackoverflow.com/a/2678602/4481831
iyfamqjs7#
根据HTML标准,你应该在值周围使用“(双引号),并编码特殊字符(
" < > &
),php有标准的功能:注意-既不使用mysql_真实的_escape_string也不使用urlencode,因为它们转义不同的符号,也不使用htmlspecialchars,在此上下文中使用它们是无效的。