如果我在頂部有一個session_start()的php聯繫表格,我知道這會創建一個會話。但是,如果用戶沒有填寫表單並導航到不同的頁面呢?PHP - 在未提交的表單頁面上正確銷燬會話?
我是否還需要使用session_destroy,因爲我只想在用戶通過我的聯繫頁面提交php表單時創建會話?
謝謝。
更新:對於我的表單中沒有發佈冗長的代碼更好的主意。
接觸form.html
<?php session_start(); ?>
<?php $fname = isset($_SESSION['fname']) ? $_SESSION['fname'] : NULL ; ?>
<form method="post" action="http://www.mysite.com/form-process.php">
<input value="<?php echo $fname ?>" type="text" id="fname" name="fname" />
<input type="submit" value="Submit Request" />
</form>
形式,process.php
<?php
session_start();
$_SESSION['fname'] = $_POST['fname'];
$user = "John" ;
session_write_close();
if ($_SESSION['fname'] != $user) {
header('Location: http://www.mysite.com/contact-form.html');
}
else {
$_SESSION = array();
session_destroy();
header('Location: http://www.mysite.com/thankyou.html');
}
?>
你的申請有多大?創建一個會話的成本是最小的,所以我會說你99/100不需要關心這個。 – alexn 2013-04-21 14:41:23
您可以檢查POST變量是否每次都提交(可能使用隱藏字段標識符將其與其他表單區分開來)。如果他們不存在,只需銷燬會話。 – 2013-04-21 14:41:28
感謝您的評論。該應用程序只是兩頁:)。 contact-form.php和process-form.php與session_start()僅在網站內的這兩個頁面上。我相信下面的答案,但解決我的關切:)。 – Damainman 2013-04-22 06:12:04