PHP-将变量从一个PHP文件传递到另一个PHP文件

PHP-将变量从一个PHP文件传递到另一个PHP文件,php,Php,我是PHP新手,尝试将变量从一个页面传递到另一个页面。最初,我有一个HTML页面,其中包含如下框架 <!DOCTYPE html> <html> <frameset cols="70%,*"> <frame src="index.php"> <frame src="slider.php"> </frameset> </html> <?php $names = file('demo.csv');

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

<!DOCTYPE html>
<html>

<frameset cols="70%,*">
  <frame src="index.php">
  <frame src="slider.php">
</frameset>
</html>
<?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>

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

<!DOCTYPE html>
<html>

<frameset cols="70%,*">
  <frame src="index.php">
  <frame src="slider.php">
</frameset>
</html>
<?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文件中的值。我还尝试使用链接中建议的会话,但没有成功。有人能告诉我我做错了什么吗?

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

您应该能够使用$\u会话。这是:

$_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函数。这些函数使一个文件依赖于另一个文件,就像您直接将一个文件粘贴到另一个文件一样。 使用这些函数传递变量不是一个好的做法。您应该使用会话


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

您可以使用
$\u REQUEST
而不是
$\u GET
,或者将其作为:

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


这可能会帮助您

我会先识别帧,然后删除第二个帧的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>

parent.frames['f2'].location.href=“slider.php?totalcolumns=3”;
或者,如果您的php中有totalcolumns

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

parent.frames['f2'].location.href=“slider.php?totalcolumns=”;

一个与安全相关的方面:输出时应转义GET变量totalcolumns:
echo htmlspecialchars($totalcolumns)
我猜您的问题是您不确定哪个是第一个调用,您可能希望避免一起使用框架,因为PHP+JavaScript组合能够以可访问的方式替换它们。。顺便说一句:P@Gar,我想这可能就是问题所在。你知道我如何解决这个问题吗?谢谢主要问题是框架。时期世界在前进。通过ajax和适当的回调,您的问题很容易解决。是的,我想我可以使用会话。然而,正如@Gar指出的,系统不知道首先调用哪个PHP文件。我不知道如何解决这个问题,因为我正在使用HTML框架为这两个PHP文件同时创建两个单独的框架。正如我所说的不要使用框架,它们不能满足您的需要。使用单个html页面,而不是包含index.php和slider.php文件数据的页面。