使用 get 请求的 url 特殊字符


Url special character using get request

当我单击以下代码呈现的页面上的提交按钮时,我希望我的网址看起来像 locl.cms.com/upload/season.php?sid=20&currentPage=1

echo '<form action="" method="get"> 
  <button id="previouspage" name="'.$encodedURL.'" type="submit" 
    value="'.$page.'">Previous Page</button> 
  <button id="nextpage" name="currentPage" type="submit" 
    value="'.$pageN.'">Next Page</button> 
  </form>'; 
echo "Inside Div"; 
echo '</div>'; 

哪里

$url='sid='.$sid.'&currentPage';
$encodedURL=urlencode($url);

当我单击Previous Page按钮时,我的 URL 变为locl.cms.com/upload/season.php?sid%253D20%2526currentPage=1

我做错了什么?

当您提交带有 method="get" 的表单时,表单的 action 属性将成为 URL,表单输入元素(包括按钮(有助于附加到 URL 的name=value查询字符串,然后将其发送到服务器。在这里,名称和值将被URL编码(这就是您在OP中看到的特殊字符(。

// The URL making pseudo code ( run by the browser )
if ( form.method is-fully-qualified-with-protocol-etc )
    base_url = form.action
elseif ( form.action is-full-path-begining-with-forward-slash )
    base_url = page.protocol+'://'+page.url.hostname+':'page.url.port+form.action
elseif ( form.action is-a-relative-path-or-blank )
    base_url = page.url+form.action
encoded_form_input = ''
for-each ( form.input_elements as input_element )
    encoded_form_input += urlencode(input_element.name) + '=' + urlencode(input_element.value) + '&'
final_url = base_url + '?' + encoded_form_input;

编码到 URL 的输入集的一个例外是button输入,它只会是您按下的按钮。其他按钮将被忽略。

希望这应该为您提供一些指示,说明为什么您没有获得预期的URL。