2013-10-01 162 views
3

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

<!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文件中的值。我也尝试使用SESSION建议在this链接,但没有运气。有人能让我知道做错了什么吗?

+0

一个与安全相关的方面:你在输出时应该使用GET变量* totalcolumns *:'echo htmlspecialchars($ totalcolumns);' – ComFreek

+1

我想你的问题在于你不确定哪个叫做第一个 – Gar

+1

你可能想避免使用框架alltog以太网,因为PHP + JavaScript组合相当有能力以可访问的方式替换它们..只是btw:P –

回答

1

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

+0

是的,我想我可以使用会话。但是,正如@Gar指出的那样,系统并不知道首先调用哪个PHP文件。我不知道如何解决这个问题,因为我正在使用HTML框架为这两个PHP文件同时创建两个单独的框架。 –

+0

正如我所说的不使用框架,他们不能满足你想要的。使用一个单独的html页面,而不是包含index.php和slider.php文件的数据。 – inf3rno

2

您应该可以使用$ _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

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

1

可以使用$_REQUEST而不是$_GET或只是它作为:

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

这可能帮助你

1

我想先帧,删除第二个src

​​

然后更改index.php文件在最后加入这一段代码

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

或许如果你有totalcolumns在你的PHP

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