0

私は間違った方法を使用していると確信していますが、PHPを使用するのは初めてです。次のコードは機能しません。変数$fileはローカルで定義されていますが、グローバル変数の使用方法がわかりません。

article.php このファイルにはリストがあります:

<ol>
  <li><a <?php $file="a.php"; ?> href="article.php" > title 1 </a>  </li>
  <li><a <?php $file="b.php"; ?> href="article.php" > title 2  </a>  </li>
</ol>

このファイルのarticle.phpこれを使いたい

  <?php   include("articles/$file"); ?>

正しく定義するには$file? ロードするより良い方法はありa.phpますb.php か?

4

4 に答える 4

3

次のようなことができます。

記事.php

<ol>
  <li><a href="article.php?page=a" > title 1 </a></li>
  <li><a href="article.php?page=b" > title 2  </a></li>
</ol>

これにより、変数が に渡さpageれますarticle.php

記事.php

if( $_SERVER[REQUEST_METHOD] == 'GET' && !empty($_GET[page]) ) {
    $path = $_GET[page] . ".php"; // transform into a filename (a.php)

    if( file_exists($path) ) {
        include_once $path;
    }
}

ここでは、要求されたメソッドが空でないGETかどうか、およびpage変数が空でないかどうかを確認します。次に、変数に追加.phpして完全なファイル名にし、存在するかどうかを確認します。その場合は含まれます。注意、これはサニタイズされていません。受け入れ可能なファイル名の配列を追加し、それらを繰り返し処理して、それらが有効かどうかを確認できます。

于 2013-02-28T21:46:00.653 に答える
2

それは間違っている。

すべての php ファイルの実行は、サーバー上で個別のアプリケーションを実行するようなものです。forgetsコードが実行され、ページがブラウザーに送信された後、すべての変数をサーバーに送信します。そのように、あるページから別のページにデータを渡すことはできません。

次のページに値を渡すには、次のいずれかの方法を使用する必要があります。

  • POST または GET
  • クッキー
  • セッション

PHP Web アプリケーションはその点で非常に特殊であり、PHP で Web アプリケーションを作成する場合は、これを完全に学習する必要があります。

詳細はこちら:

PHP 変数を次のページに渡す

于 2013-02-28T21:30:20.213 に答える
2

$_GET などで渡します。

<ol>
  <li><a href="article.php?f=a" > title 1 </a>  </li>
  <li><a href="article.php?f=b" > title 2  </a>  </li>
</ol>

健全性チェックなしでファイルを含めることは、非常に安全ではありません。ホワイトリストでそれを行うことをお勧めします:

$file = $_GET['f'];
switch ($file){
   case 'a':
   case 'b':
      include('articles/'.$file.'.php');
      break;
   default:
      // don't do anything
}

HTH

于 2013-02-28T21:33:28.693 に答える
1

おそらく、このようなことをしようとしています (これは、HTTP GET を介して何らかの値を渡しています)。


ページ 1 (page1.php) -file値を持つパラメータを持つリンクが含まれていますpage3

<a href="page2.php?file=page3">

ページ 2 (page2.php) - URL に「file」パラメータを指定して開くページ

<?php
    $file = $_GET["file"]; // takes parameter "file" from URL
    include($file."php");  // Dot is used for "adding" strings
?>

ページ 3 (page3.php) - 含めるテスト ページ

<?php
    echo "This is included page3.php!"
?>

これを学習用の最も単純なコードと考えてください。実際のアプリケーションでは、やるべきことがたくさんあります。

「現実の世界では」(IFステートメントを使用して)確認する必要があります:

  1. ファイルが GET リクエストで呼び出された場合 ( $_SERVER[REQUEST_METHOD] == 'GET')
  2. URLにパラメータがあった場合!empty($_GET['file'])
  3. URLに指定された名前のファイルが存在する場合file_exists($file."php")

page2.phpパラメータなしで、または間違ったファイル名で手動でURLを書き込むときに、PHPの致命的なエラーを回避します。

Aarolama Bluenk は、これらの必要なことについて回答を書きました (以下/上記を参照)。

于 2013-02-28T21:46:20.740 に答える