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

这会将变量传递pagearticle.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执行代码并将页面发送到浏览器后服务器所有变量。您不能像那样将数据从一页传递到另一页。

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

  • 发布或获取
  • 曲奇饼
  • 会议

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
}

高温高压

于 2013-02-28T21:33:28.693 回答
1

您可能试图做这样的事情(这是通过 HTTP GET 传递一些值)。


第 1 页 (page1.php) - 包含带有参数file和值的链接page3

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

第 2 页 (page2.php) - 应该在 URL 中使用“文件”参数打开的页面

<?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为了避免 PHP 致命错误,当有人手动将 URL 写入您的时,没有参数或文件名错误。

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

于 2013-02-28T21:46:20.740 回答