0

以下のコードでレンダリングされたページの送信ボタンをクリックすると、URLが次のようになります 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

私は何を間違っていますか?

4

1 に答える 1

0

を使用してフォームを送信すると、フォームmethod="get"の属性が URL になり、ボタンを含むフォーム入力要素が URL に追加されactionたクエリ文字列に寄与し、サーバーに送信されます。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 にエンコードされた一連の入力の 1 つの例外は、button入力です。これは、押したボタンのみです。他のボタンは無視されます。

これにより、期待した URL が取得されない理由についてのヒントが得られるはずです。

于 2013-10-10T11:11:02.967 に答える