2009-11-05 93 views
0

我不能看到讓PHP會話的工作,即時嘗試創建一個表格,保存數據,然後把它的正則表達式來驗證其合法信息。此刻即時通訊設法弄清楚如何讓會議註冊,但我無法弄清楚,請幫助。進出口新的會話問題與PHP會話

<?php session_start(); ?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>regex</title> 


</head> 

<body> 

<?php 

$_SESSION['fname']=$fname; 

$ufname = $_SESSION['fname']; 

print<<<form 
<form method="post" action=""> 
form; 

print<<<firstname 
First Name: 
<input type="text" 
      name="fname" 
    value="$fname"> 

firstname; 

print<<<submit 

<input type="submit"> 

submit; 
print "</form>"; 


if($fname == NULL){ 
print "lets go"; 
}else{ 
print "good"; 
}// end if 

print "$ufname"; 

$_SESSION['ufname'] = $ufname; 
?> 

</body> 
</html> 
+0

也許你忘記了session_start()[參見http://fr2.php.net/manual/ en/function.session-start.php] – 2009-11-05 06:25:36

+0

@RC - 他擁有它! – mauris 2009-11-05 06:28:10

+0

他沒有當我添加評論(與Kaivosukeltaja的評論相同) – 2009-11-05 06:29:43

回答

-1

你需要調用session_start()才能訪問$_SESSION。此外,在您閱讀之前,您正在寫信給$_SESSION['fname']

編輯:您的代碼的更新版本,顯示你調用session_start(),還以爲你確實覆蓋的$_SESSION['fname']與$ FNAME值(這是在這一點上不確定的),你從中讀取$ ufname之前。嘗試改變這些行的順序,這可能會解決問題。

+0

他在開始時有一個session_start – mauris 2009-11-05 06:27:38

+0

session_start()位於頂部(我也錯過了),他依靠註冊全局變量獲取$ fname值。 – cletus 2009-11-05 06:27:46

+0

我回答的前一個未格式化版本沒有session_start()。感謝downvotes,夥計們。 – Kaivosukeltaja 2009-11-05 06:32:06

3

您處理會話的方式沒有任何問題。但是,您將$ _SESSION ['fname']設置爲之前從未聲明或設置的$ fname。因此,存儲在$ _SESSION ['fname']索引中的值將爲空。這就是爲什麼你沒有從會話變量中獲得任何輸出。

+1

如果寄存器全局狀態爲開,則設置$ fname。 – cletus 2009-11-05 06:28:17

+0

啊,對...好吧。 – BraedenP 2009-11-05 06:29:10

2

你的問題是你直接訪問$ fname。嘗試使用$ _POST ['fname']。你使用變量的方式有安全隱患,這就是它在新版本中被默認禁用的原因

0
<?php session_start(); ?> 

<html> 
<head></head> 
<body> 

<?php 
if (!isset($_SESSION['name']) && !isset($_POST['name'])) { 
    // if no data, print the form 
?> 
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
     <input type="text" name="name"> 
     <input type="submit" name="submit" value="Enter your name"> 
    </form> 
<?php 
} 
else if (!isset($_SESSION['name']) && isset($_POST['name'])) { 
    // if a session does not exist but the form has been submitted 
    // check to see if the form has all required values 
    // create a new session 
    if (!empty($_POST['name'])) { 
     $_SESSION['name'] = $_POST['name']; 
     $_SESSION['start'] = time(); 
     echo "Welcome, " . $_POST['name'] . ". A new session has been activated for you. Click <a href=" . $_SERVER['PHP_SELF'] . ">here</a> to refresh the page."; 
     echo "<br>Your session id is: ".session_id(); 
    } 
    else { 
     echo "ERROR: Please enter your name!"; 
    } 
} 
else if (isset($_SESSION['name'])) { 
    // if a previous session exists 
    // calculate elapsed time since session start and now 
    echo "Welcome back, " . $_SESSION['name'] . ". This session was activated " . round((time() - $_SESSION['start'])/1) . " seconds(s) ago. Click <a href=" . $_SERVER['PHP_SELF'] . ">here</a> to refresh the page."; 
    echo "<br>Your session id is: ".session_id(); 
} 
?> 
</body> 
</html>