2013-12-09 74 views
0

我在我的php頁面中使用了一個會話變量。根據我的信息,它可以在整個程序中訪問,但它的問題在於,它在不同的地方在php頁面上顯示同一變量的不同值。會話變量不起作用

的代碼如下

<html><body> 

<?php session_start(); 
if(!isset($_SESSION['x'])) 
    $_SESSION['x']=1; 

echo "X=". $_SESSION['x']; 

?> 
<form> 
<input type="submit" name="save" value="save" /> 
</form> 
<?php 
if (isset($_GET['save'])) 
{ 
    if(isset($_SESSION['x'])) 
     $_SESSION['x'] = $_SESSION['x']+1; 
    echo $_SESSION['x']."<br>"; 
} 
else 
    echo "no submit"; 
?> 
</body></html> 

值變爲以前不同,並提交後請點擊?請告訴我爲什麼這樣? 感謝您的支持。

+0

您的

方法在哪裏定義? –

+0

它給你什麼樣的價值?你期望什麼值?另外,做到這一點:'並設置一個動作,如果你想它的工作! –

回答

0

是由於代碼本身

if(isset($_SESSION['x'])) //It is set 
     $_SESSION['x'] = $_SESSION['x']+1; //Add 1 to the value 
echo $_SESSION['x']."<br>"; return value with +1 

解決方案

原因輸出不同的是您迴應並更新

//Echo 
//Update Value 
//Echo again 

簡單的解決辦法是將訂單移動這個

if (isset($_GET['save'])) 
{ 
    if(isset($_SESSION['x'])) 
     $_SESSION['x'] = $_SESSION['x']+1; 
    echo $_SESSION['x']."<br>"; 
} 
else 
    echo "no submit"; 

上面這個

if(!isset($_SESSION['x'])) 
    $_SESSION['x']=1; 

echo "X=". $_SESSION['x']; 

還要注意設置方法和形式的行動,以確保它自稱

<form method="GET" action="[url to itself]"> 
<input type="submit" name="save" value="save" /> 
</form> 
+0

解決方案是什麼?這不是OP有嗎? – putvande

+0

先生,我已經在session_start()之後初始化session變量的值。默認的表單方法是get。所以,我沒有提到它。當PHP頁面加載時顯示默認設置值「1」。但當我點擊提交按鈕時,它只顯示增量值爲「2」,當我在if(isset())塊中回顯它時,即第一個回顯print 1和第二個回顯print 2.但是我想要在都。這個怎麼做。 – user2931596

+0

對不起沒有咖啡會更新 – AbstractChaos

0

做這樣的:

<html><body> 

<?php session_start(); 
if(!isset($_SESSION['x'])) 
$_SESSION['x']=1; 

echo "X=". $_SESSION['x']; 

?> 
<form method="GET" action=""> 
<input type="submit" name="save" value="save" /> 
</form> 
<?php 
if (isset($_GET['save'])) 
{ 
if(isset($_SESSION['x'])) 
    echo $_SESSION['x']."<br>"; 
} 
else 
echo "no submit"; 
?> 
</body></html> 

通過這種方式,代碼在提交之後打印出與之前相同的值。 無論採用哪種方式,如果您打印值並在更改後更改值並打印之後嘗試打印,則當頁面重新加載時會更改值。您可以添加另一個按鈕叫增量,並添加PHP中下面的代碼:

if (isset($_GET['inc'])) 
{ 
    if(isset($_SESSION['x'])) 
     $_SESSION['x'] = $_SESSION['x']+1; 
} 

這一個形式裏面:

<input type="submit" name="inc" value="inc" /> 

這樣您選擇可變增量當你按下INC按鈕

+0

我很高興,那麼也許你可以投我的答案:) – LogofaT

0

您在這裏重新聲明會話變量 'x' 的值

$_SESSION['x'] = $_SESSION['x']+1; 

這就是爲什麼它出現1大於其初始值。

+0

請告訴我的方式來獲得同樣的價值在兩個回聲。 – user2931596

+0

@ user2931596看到我的回答更新了:) – AbstractChaos