include中的变量参数

时间:2013-02-28 21:26:06

标签: php

我确定我使用了错误的方式,但这是我第一次尝试使用php。下一个代码不起作用。变量$file是在本地定义的,但我不知道如何使用全局变量。

articles.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.phpb.php

4 个答案:

答案 0 :(得分:3)

您可以这样做:

<强> articles.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

<强> article.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添加到变量中,使其成为完整的文件名,并检查它是否存在。如果是,它将被包括在内。请注意,这不是消毒的。您可以添加一组可接受的文件名,并对其进行迭代以检查它们是否有效。

答案 1 :(得分:2)

你做错了。

每个php文件的执行就像在服务器上执行单独的应用程序一样。服务器forgets执行代码并将页面发送到浏览器后的所有变量。您无法将数据从一个页面传递到另一个页面。

要将一些值传递给下一页,您必须使用以下方法之一:

  • POST或GET
  • 曲奇
  • 会话

PHP Web应用程序非常具体,如果你想用PHP编写Web应用程序,你必须完全学习它。

此处提供更多信息:

PHP Pass variable to next page

答案 2 :(得分: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

答案 3 :(得分: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页(第3.3页) - 要包含的测试页

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

将此视为最简单的学习代码。在实际应用中有很多事情要做。

“在现实世界中”你必须检查(使用IF语句):

  1. 如果使用GET请求($_SERVER[REQUEST_METHOD] == 'GET'
  2. 调用了文件
  3. 如果网址!empty($_GET['file'])
  4. 中有参数
  5. 如果网址中提供的名称文件存在file_exists($file."php")
  6. 当有人手动向您的page2.php写入URL而没有参数或文件名错误时,可以避免PHP致命错误。

    Aarolama Bluenk用这些必要的事情写了答案(见下文/上文)。