2010-09-24 39 views
15

因此,我想知道是否可以將來自表單的數據存儲爲會話變量。將表單數據存儲爲會話變量

繼承人我到目前爲止,但我不知道要爲表單操作放置什麼。

感謝您的期待!

<strong>Test Form</strong> 
<form action="" method"post"> 
    <input type="text" name="picturenum"/> 
    <input type="submit" name="Submit" value="Submit!" /> 
</form> 

<? 
    if (isset($_POST['Submit'])) { 
     $_session['picturenum'] = $_POST['picturenum']; 
    } 
?> 

<strong><? echo $_session['picturenum'];?></strong> 
+3

<?= $ whyThatItMakesCodeMuchMoreReadable/*:P * /?> – 2010-09-25 01:07:50

回答

7

這是完美的罰款,將工作。但要使用會話,您必須將session_start();放在php代碼的第一行。所以基本上

<?php 
session_start(); 

//rest of stuff 

?> 
+0

#在行動將重新加載當前頁面,這是你想要它這樣做的PHP運行。 – 2014-09-25 10:20:26

2

是的,這是可能的。 kizzie正確,session_start();不得不先走。

另一個觀察我做的是,你需要使用過濾您的表單數據:

strip_tags($value); 

和/或

stripslashes($value); 
+0

所以基本上這只是對數據進行清理? – 2010-09-24 22:45:37

+1

-1這是一個完全沒用的答案。 'stripslashes()'是無用的,因爲默認情況下魔術引號是關閉的(並且如果有的話,這也會「消毒」你的數據)。另外,爲什麼要對保存到會話的信息執行'strip_tags()'(或'stripslashes()')? – NullUserException 2010-09-25 02:16:36

+1

不能保證魔術引號已關閉。我曾與太多的客戶合作,他們使用託管他們無法控制和魔術報價。什麼都不做是最好的做法。如果代碼被移動或者主機改變設置等,該怎麼辦...... – 2010-09-25 04:35:46

28

要使用會話變量,有必要通過使用session_start啓動會議函數,這將允許您以持久的方式將數據存儲在全局變量$_SESSION中。

使你的代碼最終會是這樣的:

<strong>Test Form</strong> 
<form action="" method"post"> 
<input type="text" name="picturenum"/> 
<input type="submit" name="Submit" value="Submit!" /> 
</form> 

<?php 

// starting the session 
session_start(); 


if (isset($_POST['Submit'])) { 
$_SESSION['picturenum'] = $_POST['picturenum']; 
} 
?> 

<strong><?php echo $_SESSION['picturenum'];?></strong> 

,使其易於使用,並避免再次忘記它,你可以創建一個session_file.php將在所有的代碼被包括,將啓動會議對您

session_start.php

<?php 
    session_start(); 
?> 

,然後包括它wher你是否喜歡:

<strong>Test Form</strong> 
<form action="" method"post"> 
<input type="text" name="picturenum"/> 
<input type="submit" name="Submit" value="Submit!" /> 
</form> 

<?php 

// including the session file 
require_once("session_start.php"); 


if (isset($_POST['Submit'])) { 
$_SESSION['picturenum'] = $_POST['picturenum']; 
} 
?> 

這是更便攜和簡單的方法來維護未來。

其他言論

  • ,如果你使用的是Apache 2版本以上時,要小心,而不是
    <?
    打開PHP的標籤,使用 <?php,否則你的代碼不會被解釋

  • php中的變量名是區分大小寫的,而不是寫$ _session,在大寫字母中寫$ _SESSION ers

很好的工作!

+0

是否有可能檢索輸入值使用他們的ID而不是名稱? – Amyunimus 2013-10-30 05:40:11

+0

愚蠢的問題。如果你開始一個會話,然後(意外)做另一個'session_start();'是否擦除了第一個會話的所有數據? – BeNice 2016-01-25 07:11:17

+1

@OldMauiMan,調用'session_start();'(不小心)在相同的代碼中兩次不會做任何錯誤。消滅所有數據的唯一方法是使用'session_destroy();' – 2016-01-27 04:48:07

1

您可以使用此代碼解決這個問題:

if(!empty($_GET['variable from which you get'])) 
{ 
$_SESSION['something']= $_GET['variable from which you get']; 
} 

所以你從一個GET形式的變量,你將在$ _SESSION [「什麼」]變量存儲只有一次,當$ _GET [」如果它是空的$ _SESSION ['something']將存儲舊參數