2013-01-12 71 views
0

我有一個名爲admin.php的文件,其中有一個名爲send的按鈕。我想要做的是當我點擊它時,在用戶的頁面user.php上顯示鏈接。我怎樣才能做到這一點?在php中的函數和文件之間傳遞變量

我有一個名爲functions.php的文件,其中有一個名爲onSubmit($ var)的函數;我初始化變量$ var是admin.php,值爲$ _POST ['send'],但當我在文件user.php中調用函數時,我無法告訴他變量$ var是誰,所以我得到'undefined指數'。

是否有另一種方法可以做到這一點?

編輯添加的代碼 這是admin.php的

<input type="button" name="send" value="Submit" /><br/>  

require 'functions.php'; 
$posted = $_POST['send']; 
onSubmit($posted); 

這是user.php的

require 'functions.php'; 
onSubmit($var); //here it says undefined index var because it doesn't know who the variable is 
if($isSent == 1) { 

<a style="visibility:visible;" href="test3.html" id="test3">Test3</a> <br/> 

} 

這是functions.php的

global $isSent; 
function onSubmit($var) { 
if(isset($var)) { 
$isSent = 1; 
} 
} 
+0

我不明白這個「我想要做的是當我點擊它,使可見的用戶頁面上的鏈接, user.php。我該怎麼做?「你能否清楚 –

+0

你的錯誤在於'$ isSent'只在functions.php頁面中聲明,並且會保留在那裏。你有兩個選擇。使用會在時間限制後過期的會話變量。或者使用緩存來保存您的變量數據。那麼你可以有效'保存'$ isSent爲'true' – sourRaspberri

回答

1

好吧,我已經做了一些研究,在高速緩存,這就是我已經拿出來了。這可能不是100%正確,但這是一個開始,就像我說過我從未嘗試過自己大聲笑

在您的管理員。PHP的我把這個功能:

if(isset($_POST['send'])){ 
    if($enabled == true){ 
     $enabled == false; 
    } 
    else{ 
     $enabled == true; 
    } 
    apc_add('enabled',$enabled); 
} 

我們 '得到' 我們$enabled VAR:

$enabled = apc_fetch('enabled'); 

那就要檢查一下您的客戶端頁面中使用var:

if($enabled == true){ 
    echo ' button'; 
} 

現在我唯一沒有完全看到的是apc_函數的安全性和客戶端的使用情況。我相信它適用於服務器的所有客戶端,但我不是100%確定的。這裏給出php manual更好的例子。

這是我在想的方法。但是我不確定它的安全性,但我相信你可以找到一些東西來保證它的安全。該視頻實際上是Youtube API的教程。但他確實覆蓋保存一個變量緩存文本文件,這應該是對你有用:))

+0

非常感謝!我嘗試了代碼,但它說致命錯誤:調用未定義的函數apc_fetch();我想我必須安裝APC擴展,不是嗎? – user1956190

+0

@ user1956190是的,我認爲你是。但我仍然看看YouTube的視頻。這可能會有幫助,因爲他正在使用'put_contents()'和'get_contents()'將一個大變量保存到「緩存」文本文件中。) – sourRaspberri

+0

它的工作原理! :)我將變量存儲在「緩存」文件中。但我仍然有一個問題。在你上面寫的代碼中,$ enabled是取值$ _POST ['send']? – user1956190

1

如果你有functions.php定義函數,只需將其包含在管理員中即可.php文件,然後您可以從那裏調用該函數並傳遞值。

2

基本上你需要使用會話象下面這樣:

if(isset($_SESSION['makeVisible']) && $_SESSION['makeVisible'] == true){ 
    echo '<button>Button init</button>'; //you could also use html like the comment below. 
} 
/* 
if(condition){?> <!-- this is now html --> <button>Button init</button><?} 
*/ 

然後使用這個變量上的管理頁面使用:

if(isset($_POST['submitButton'])){ 
    $_SESSION['makeVisible'] == true; 
} 

您還需要一個形式,這種方法工作但還有其他方法,但我更喜歡這個。

<form name="buttonMakerThing" method="POST"> 
    <input name="submitButton" value="Make button init Visible" type="submit"/> 
</form> 

沒有action,表單默認將表單信息「貼」到當前頁面。使條件if(isset($_POST))返回true。
您需要在您網站上的每個php頁面的頂部添加一個$_SESSION聲明,以使其生效。它必須放在每一頁的第一行!例如:

01: | <?php session_start(); 
02: |//rest of script; 

敬請期待更多的進入$_SESSIONSunnsetting/destroying你會和更多的用途爲他們:) http://php.net/manual/en/reserved.variables.session.php

+0

我已經使用會話登錄我的登錄代碼;我編輯了問題併發布了我正在嘗試做的事情的代碼;謝謝你的建議;我會嘗試與會議,看看它是否可行 – user1956190

+0

@ user1956190正確的我看到!選擇應該是永久性的嗎?如果是的話,我建議使用緩存。如果是的話,我會在緩存上發佈另一個答案。 – sourRaspberri

+0

什麼選擇? – user1956190