5

http://example.com/filename.php?dosomethinghttp://somesite.net?logoffのようなリンクは何をするのか疑問に思っていました。

私はPHPについてあまりよく知らず、英語は私の母国語ではないので、このような良い情報を見つけることができませんでした。

http://mysite.com/edit.php?editpasswordhttp://mysite.com/edit.php?editnameはまったく異なるコンテンツを提供できることを知っていますが、どうすれば実装できますか?

これらのコード行を?editpasswordに実装したいとします。

Password
<input type="password" name="password">
<input type="submit">

そしてこれらの行を?editnameに

Type your name
<input type="text" name="name">
<input type="submit">

を含む可能性のあるファイルでそれを行うにはどうすればよいですか?

<?php 
require "includes/head.php"; 
require "includes/nav.php";
if(!isset($_SESSION['login'])){
    header("Location: index.php");
}
?>



            <div class="row-fluid">
        <div class="span3">
          <div class="well sidebar-nav">
            <ul class="nav nav-list">
            <li class="nav-header">New</li>
              <li><a href="#">sss</a></li>

            </ul>
          </div><!--/.well -->
        </div><!--/span-->
        <div class="span9">
          <div class="row-fluid">
            <div class="span9">
              <h2>Some header</h2>
              <p>Some text</p>
            </div><!--/span-->
          </div><!--/row-->
          <div class="row-fluid">
            ?editname & ?editpassword should appear here.
      </div><!--/row-->

            <?php require "includes/footer.php"; ?>

そんな感じ?

4

4 に答える 4

6

?fooで使用できるクエリ文字列全体がある場合は、$_SERVER['QUERY_STRING']です"foo"

でHTMLフォームを使用するとmethod="GET"、キーと値のペアが取得され、を介して利用できます$_GET['key']。実際には、POSTを使用するときにこれらのペアも受け取りますが、URLには表示されず、を介してアクセスします$_POST['key']


したがって、コードを完全に単純にし、高度なルーティングフレームワークを使用しないと仮定すると、コードは次のようになります。

switch($_SERVER['QUERY_STRING']) {
    case 'editname':
        // do stuff
        break;
    case 'editpassword':
        // do stuff
        break;
    default:
        // do stuff if none of the cases matched
}

ただし、単純なクエリ文字列ではなく、適切なGET変数を使用することをお勧めします。切り取った最初の行を次のように置き換えるだけです。

$action = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
switch($action) {
于 2013-01-20T11:46:34.383 に答える
1

を使用してURLの後に渡されるもの?はすべて、基本的に「クエリ文字列」です。$_GET[]渡された変数は、スーパーグローバルを介してPHP内でアクセスできます。

あなたの例で、あなたが通り過ぎて、別々に通過したeditnameとしましょうeditpass。次に、次のコードを使用してこれを処理できます。

<?php
if(isset($_GET['editname']))
{
    // handle edit name code here (i.e. show form, etc.)
}
elseif(isset($_GET['editpass']))
{
    // handle edit pass code here
}
?>

$_SERVER['QUERY_STRING']それができない場合は、配列値を使用することもできます。これにより、の後に表示されるものがすべて返されます?。考えられるさまざまなクエリ文字列を多数使用する場合は、次のswitch()ステートメントを使用することをお勧めします。

switch($_SERVER['QUERY_STRING'])
{
    case 'editname':
        break;

    case 'editpass':
        break;

    default:
        // i.e. no query string.
        break;
}

クエリ文字列に複数の変数を渡す必要がある場合があります。その場合、変数は。で区切られ&ます。通常の代入演算子()を使用して変数に値を割り当てることもできます=。したがって、たとえば、次のURLについて考えてみます。

view-user.php?id=1&action=view

その後、にアクセス$_GET['id']して$_GET['action']内部にアクセスしview-user.php、必要に応じてすべてを処理できます。

于 2013-01-20T11:48:36.053 に答える
0

質問マークの後のすべての値はhttp-get-parametersです。を使用して設定されているかどうかを確認できますif(isset($_GET['login'])) {}。parameter = valueを使用して、これらのパラメーター値に割り当てることもできます。

于 2013-01-20T11:48:39.593 に答える
-1

マークは最初の?URLパラメータをマークします。を使用して、URLパラメータを追加できます&

URLは次のようになりhttp://example.com/index.php?foo=1ます

// index.php
echo $_GET['foo']; // outputs: 1

URLhttp://example.com/page.php?foo=2&bar=baz

// page.php
echo $_GET['foo']; // outputs: 2
echo $_GET['bar']; // outputs: baz

&in(X)HTMLは&amp;予約文字であるため、 (正しく)と記述されていることに注意してください。

したがって、完全な例のindex.php:

<html><head><title>Example</title></head><body>
<?php
    if (isset($_GET['foo'])) {
        echo 'link was clicked '.$_GET['foo'].'x<br>';
        if (isset($_GET['bar'])) {
            echo 'foo is '.$_GET['bar'].'<br>';
        }
        $url = 'index.php?bar=world&amp;foo='.($_GET['foo'] + 1);
    } else {
        $url = 'index.php?foo=1&amp;bar=hello';
    }
    echo '<a href="'.$url.'">click me!</a><br>';
?>
</body></html>
于 2013-01-20T11:50:46.097 に答える