include中的变量参数


variable argument in include

我确信我使用了错误的方式,但这是我第一次尝试使用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 ?

你可以这样做:

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添加到变量中,使其成为一个完整的文件名,并检查它是否存在。如果有,它将被包含在内。提醒一下,这不是消毒的。您可以添加一个可接受的文件名数组,并遍历这些文件名以检查它们是否有效。

传递它,例如$_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

你做错了。

每个php文件的执行就像在服务器上执行单独的应用程序。服务器forgets代码执行后所有变量,页面被发送到浏览器。你不能像那样把数据从一个页面传递到另一个页面。

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

  • POST或GET
  • 饼干
  • <
  • 会话/gh>

PHP web应用程序在这方面是非常具体的,如果你想用PHP编写web应用程序,你必须完美地学习这一点。

更多信息在这里:

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


Page 1 (page1.php) -包含参数file的链接,值为page3

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

Page 2 (page2.php) - Page应该在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!"
?>

认为这是最简单的学习代码。在实际应用中有很多事情要做。

"In real world"你必须检查(通过使用IF语句):

  1. 如果文件被GET请求调用($_SERVER[REQUEST_METHOD] == 'GET')
  2. 如果url !empty($_GET['file'])中有参数
  3. 如果URL中提供的文件名存在file_exists($file."php")

避免PHP致命错误,当有人手动写URL到你的page2.php,没有参数或错误的文件名。

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