【问题标题】:PHP - passing variable from one PHP file to another PHP filePHP - 将变量从一个 PHP 文件传递​​到另一个 PHP 文件
【发布时间】:2013-10-01 21:09:25
【问题描述】:

我是 PHP 新手,试图将变量从一个页面传递到另一个页面。最初,我有一个 HTML 页面,其中包含如下框架。

<!DOCTYPE html>
<html>

<frameset cols="70%,*">
  <frame src="index.php">
  <frame src="slider.php">
</frameset>
</html>

如上所示,我有 2 个 PHP 页面,其中试图将一些值从 index.php 文件发送到我的 slider.php 文件。我的 index.php 文件如下。

<?php
$names = file('demo.csv');
$page = $_GET['page'];
$pagedResults = new Paginated($names, 20, $page);
$handle = fopen('demo.csv', 'r');
  if (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
    {
    }
echo "<table border='3' bgcolor='#dceba9' style='float:center; margin:50'>";
echo '<tr><th>'.implode('</th><th>', $data).'</th></tr>';
while ( $row = $pagedResults->fetchPagedRow())
{
    echo "<tr><td>";
    $row1 = str_replace( ',', "</td><td>", $row );
    echo $row1;
    echo "</td></tr>";
}
fclose($handle);
echo "</table>";
//important to set the strategy to be used before a call to fetchPagedNavigation
$pagedResults->setLayout(new DoubleBarLayout());
echo $pagedResults->fetchPagedNavigation();
?>
<form method="get" action="slider.php">
    <input type="hidden" name="totalcolumns" value="3">
    <input type="submit">
</form>

这是我的 slider.php 文件。

<?php 
      $totalcolumns = $_GET['totalcolumns'];
      echo "My next value should get printed";
      echo $totalcolumns;
?>

  <input type="text" data-slider="true" data-slider-range="100,500" data-slider-step="100">
</html>

如上所示,我正在尝试检索名为“totalcolumns”的值。但是,我无法检索 slider.php 文件中的值。我还尝试按照this 链接中的建议使用 SESSION ,但没有运气。有人可以告诉我做错了什么吗?

【问题讨论】:

  • 一个与安全相关的方面:您应该在输出时转义 GET 变量 totalcolumnsecho htmlspecialchars($totalcolumns);
  • 我猜你的问题是你不确定哪个是第一个调用
  • 你可能想避免一起使用框架,因为 PHP + JavaScript 组合非常有能力以一种可访问的方式替换它们。顺便说一句:P
  • @Gar,我认为这可能是问题所在。你知道我该如何解决这个问题吗?谢谢!
  • 主要问题是框架。时期。世界已经在前进。使用 ajax 和适当的回调很容易解决您的问题。

标签: php


【解决方案1】:

您应该可以使用 $_SESSION。这是:

$_SESSION['totalcolumns'] = $columns --> your value here in the first script

your value will be stored in the $columns variable in the second 
 $columns = $_SESSION['totalcolumns'] 

您还可以查看 require 或 include 函数。这些功能使一个文件依赖于另一个文件,就好像您直接将一个文件粘贴到另一个文件上一样。 使用这些函数传递变量不是一个好习惯。你应该使用会话

http://php.net/manual/en/function.require.php

顺便说一句,不要使用框架集

【讨论】:

    【解决方案2】:

    您应该使用sessions,并且您不应该使用 html 框架集或 iframe,这是一种不好的做法。如果您不想通过任何更改重新加载整个页面,则应使用 javascript。

    【讨论】:

    • 是的,我想我可以使用会话。但是,正如@Gar 指出的那样,系统不知道首先调用哪个 PHP 文件。我不确定如何解决这个问题,因为我正在使用 HTML 框架同时为这两个 PHP 文件创建 2 个单独的框架。
    • 正如我所说,不要使用框架,它们无法满足您的需求。使用单个 html 页面,而不是包含 index.php 和 slider.php 文件数据的页面。
    【解决方案3】:

    您可以使用 $_REQUEST 代替 $_GET 或将其用作:

    <?php
    if(array_key_exists('totalcolumns', $_GET)) {
          $totalcolumns = $_GET['totalcolumns'];
          echo "My next value should get printed";
          echo $totalcolumns;
    ?>
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      我会先识别帧,然后删除第二个的 src

      <!DOCTYPE html>
      <html>
      
      <frameset cols="70%,*">
        <frame src="index.php" id="f1">
        <frame src="" id="f2">
      </frameset>
      </html>
      

      然后更改 index.php 在末尾添加这段代码

      <script>
      parent.frames['f2'].location.href="slider.php?totalcolumns=3";
      </script>
      

      或者如果你的 php 中有 totalcolumns

      <script>
      parent.frames['f2'].location.href="slider.php?totalcolumns=<?php echo $totalcolumns;?>";
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多