搜尋
首頁後端開發php教程Cookie禁用了,Session還能用嗎?

   Cookie與 Session,一般認為是兩個獨立的東西,Session採用的是在伺服器端保持狀態的方案,而Cookie採用的是在客戶端保持狀態的方案。但為什麼禁用Cookie就不能得到Session呢?因為Session是用Session ID來確定目前對話所對應的伺服器Session,而Session ID是透過Cookie來傳遞的,禁用Cookie相當於失去了Session ID,也就得不到Session了。
       是不是Cookie讓停用了,Session就一定不能用了呢?
       1. ASP
       在ASP中,Session必須倚賴Cookie才可用,Session是儲存在伺服器端的,而Cookie是儲存在客戶端的,相對而言,Session的安全性和可靠度都比Cookie高。
       2. PHP
       在PHP中,且透過相關的配置,且可讓Session不依賴Cookie而存在。這是因為:
       Session,儲存於伺服器端(預設以文件方式儲存Session),根據客戶端提供的Session ID來得到使用者的文件,取得變數的值,Session ID可以使用客戶端的Cookie或Http1. 1協定的Query_String(就是存取的URL的「?」後面的部分)來傳送給伺服器,然後伺服器讀取Session的目錄…。也就是說,Session ID是取得儲存在服務上的Session變數的身分證。當程式碼session_start();運行的時候,就在伺服器上產生了一個Session文件,隨之也產生了與之唯一對應的一個Session ID,定義Session變數以某種形式儲存在剛才產生的Session檔案中。透過Session ID,可以取出定義的變數。跨頁後,為了使用Session,你必須又執行session_start();將會又會產生一個Session文件,與之對應產生對應的Session ID,用這個session id是取不出前面提到的第一個Session文件中的變數的,因為這個Session ID不是打開它的「鑰匙」。如果在session_start();之前加上程式碼session_id($session id);將不產生新的Session文件,直接讀取與這個id對應的Session文件。
       PHP中的Session預設是使用客戶端的Cookie來儲存Session ID的,所以當客戶端的cookie出現問題的時候就會影響Session了。必須注意的是:Session不一定必須依賴Cookie,這也是Session相比Cookie的高明之處。當客戶端的Cookie被停用或出現問題時,PHP會自動把Session ID附著在URL中,這樣再透過Session ID就能跨頁使用Session變數了。但這種附著也是有一定條件的,即「php.ini中的session.use_trans_sid = 1“,或編譯時打開打開了“--enable-trans-sid”選項。
       用過論壇的朋友都知道,在進入論壇的時候,往往會提示你檢查Cookie是否打開,這是因為大多數論壇都是基於Cookie的,論壇用它來保存用戶名、密碼等用戶訊息,方便使用。完全可以用Session來代替Cookie,它可以不依賴於客戶端是否開啟Cookie。 :
       1. 設定php.ini設定檔中的“session.use_trans_sid = 1”,或在編譯時開啟了“--enable-trans-sid”選項,讓PHP自動跨頁傳遞Session ID。 >       2. 手動透過URL傳值、隱藏表單傳遞Session ID。 -------------------------------------------------- -------------------------------------------------- --------------
                  // s1.php
           session_start()           $url="下一頁";
       url;
       ?>
       ---------------------------------------- -------------------------------------------------- -------------------------
       ---------------------- -------------------------------------------------- -------------------------------------------
                  // s2.php
           session_start();
        ses   ?>
       ---- -------------------------------------------------- -------------------------------------------------- -----------
       執行上述程式碼,在客戶端cookie正常的情況下,應該可以在得到結果"中華人民共和國"。
       現在你手動關閉客戶端的cookie,再運行,可能無法取得結果了吧。如果得不到結果,再設定php.ini檔案中的”session.use_trans_sid = 1“,或編譯時開啟開啟了”--enable-trans-sid選項”,又得到結果「中華人民共和國」。
       途徑2舉例說明:
       --------------------------------------- -------------------------------------------------- --------------------------
                  // s1.php
           session_start();
$_SESSION['var1']="中華人民共和國";
           $sn = session_id();
           $url="下一頁";
           echo $url;
       ?>
            -------------------------------------------------- -------------------------------------------------- ------
       ----------------------------------------- -------------------------------------------------- ------------------------
                  session_id($_GET['s']);
   ;
           echo "傳遞的session變數var1的值為:".$_SESSION['var1'];
       ?> 
   -------------------------------------------------- ------------------------------------------------
       途徑3舉例說明:
       ----------------------------------------- -------------------------------------------------- ------------------------
       login.html
        
        
        
       Login 2">
        
        
       請登入: 
   用戶名:
 
       口令:
 
        
        
        
        
   -------------------------------------------------- ----------------------------------------
       ------- -------------------------------------------------- -------------------------------------------------- --------
       mylogin1.php
              $name=$_POST['name'];
     $name=$_POST['name'];
  8; >       if(!$name || !$pass) {
           echo "使用者名稱或密碼為空,請重新登錄";
           die();
       }
       if (!($name=="laigw" && $pass=="1234") {
           echo "用戶名或密碼不正確,請重新登入";
           die();
           die();
      
       //註冊使用者
       ob_start();
       session_start();
  約id();
       $fp =fopen("D:tmpphpsid.txt","w+");
       fwrite($fp,$psid);
       fclose($fp);
       fclose($fp);
       fclose($fp);
       fclose($fp);
 🎜>       echo "已登入
";
       echo "下一頁";
       ?>
       ------------------------------------------- -------------------------------------------------- ----------------------
       ------------------------- -------------------------------------------------- ----------------------------------------
       mylogin2.php
              $fp=fopen("D:tmpphpsid.txt","r");
       $sid=fread($fp,1024);       session_start();
       if(isset($_SESSION['user']) && $   
       } else {
           //成功登入相關作業
           echo "未登入,無權利存取"; ei2004.blog.163. com/blog/login.html">登入後瀏覽";
           die();
       }
   -------------------------------------------------- -------------------------------------------------- --
       也請關閉Cookie測試,使用者名稱:laigw;密碼:1234;這是透過檔案儲存Session ID的,檔案是:D:/tmp/phpsid.txt,請依照自己的系統決定檔案名稱或路徑。
       總結一下,上面的方法有一個共同點,就是在前一頁取得Session ID,然後想辦法傳遞到下一頁,在下一頁的session_start();代碼之前加代碼Session ID(傳過來的Session ID)。

以上就介紹了 Cookie禁用了,Session還能用嗎? ,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
解决方法:您的组织要求您更改 PIN 码解决方法:您的组织要求您更改 PIN 码Oct 04, 2023 pm 05:45 PM

“你的组织要求你更改PIN消息”将显示在登录屏幕上。当在使用基于组织的帐户设置的电脑上达到PIN过期限制时,就会发生这种情况,在该电脑上,他们可以控制个人设备。但是,如果您使用个人帐户设置了Windows,则理想情况下不应显示错误消息。虽然情况并非总是如此。大多数遇到错误的用户使用个人帐户报告。为什么我的组织要求我在Windows11上更改我的PIN?可能是您的帐户与组织相关联,您的主要方法应该是验证这一点。联系域管理员会有所帮助!此外,配置错误的本地策略设置或不正确的注册表项也可能导致错误。即

Windows 11 上调整窗口边框设置的方法:更改颜色和大小Windows 11 上调整窗口边框设置的方法:更改颜色和大小Sep 22, 2023 am 11:37 AM

Windows11将清新优雅的设计带到了最前沿;现代界面允许您个性化和更改最精细的细节,例如窗口边框。在本指南中,我们将讨论分步说明,以帮助您在Windows操作系统中创建反映您的风格的环境。如何更改窗口边框设置?按+打开“设置”应用。WindowsI转到个性化,然后单击颜色设置。颜色更改窗口边框设置窗口11“宽度=”643“高度=”500“>找到在标题栏和窗口边框上显示强调色选项,然后切换它旁边的开关。若要在“开始”菜单和任务栏上显示主题色,请打开“在开始”菜单和任务栏上显示主题

如何在 Windows 11 上更改标题栏颜色?如何在 Windows 11 上更改标题栏颜色?Sep 14, 2023 pm 03:33 PM

默认情况下,Windows11上的标题栏颜色取决于您选择的深色/浅色主题。但是,您可以将其更改为所需的任何颜色。在本指南中,我们将讨论三种方法的分步说明,以更改它并个性化您的桌面体验,使其具有视觉吸引力。是否可以更改活动和非活动窗口的标题栏颜色?是的,您可以使用“设置”应用更改活动窗口的标题栏颜色,也可以使用注册表编辑器更改非活动窗口的标题栏颜色。若要了解这些步骤,请转到下一部分。如何在Windows11中更改标题栏的颜色?1.使用“设置”应用按+打开设置窗口。WindowsI前往“个性化”,然

OOBELANGUAGE错误Windows 11 / 10修复中出现问题的问题OOBELANGUAGE错误Windows 11 / 10修复中出现问题的问题Jul 16, 2023 pm 03:29 PM

您是否在Windows安装程序页面上看到“出现问题”以及“OOBELANGUAGE”语句?Windows的安装有时会因此类错误而停止。OOBE表示开箱即用的体验。正如错误提示所表示的那样,这是与OOBE语言选择相关的问题。没有什么可担心的,你可以通过OOBE屏幕本身的漂亮注册表编辑来解决这个问题。快速修复–1.单击OOBE应用底部的“重试”按钮。这将继续进行该过程,而不会再打嗝。2.使用电源按钮强制关闭系统。系统重新启动后,OOBE应继续。3.断开系统与互联网的连接。在脱机模式下完成OOBE的所

Windows 11 上启用或禁用任务栏缩略图预览的方法Windows 11 上启用或禁用任务栏缩略图预览的方法Sep 15, 2023 pm 03:57 PM

任务栏缩略图可能很有趣,但它们也可能分散注意力或烦人。考虑到您将鼠标悬停在该区域的频率,您可能无意中关闭了重要窗口几次。另一个缺点是它使用更多的系统资源,因此,如果您一直在寻找一种提高资源效率的方法,我们将向您展示如何禁用它。不过,如果您的硬件规格可以处理它并且您喜欢预览版,则可以启用它。如何在Windows11中启用任务栏缩略图预览?1.使用“设置”应用点击键并单击设置。Windows单击系统,然后选择关于。点击高级系统设置。导航到“高级”选项卡,然后选择“性能”下的“设置”。在“视觉效果”选

Windows 11 上的显示缩放比例调整指南Windows 11 上的显示缩放比例调整指南Sep 19, 2023 pm 06:45 PM

在Windows11上的显示缩放方面,我们都有不同的偏好。有些人喜欢大图标,有些人喜欢小图标。但是,我们都同意拥有正确的缩放比例很重要。字体缩放不良或图像过度缩放可能是工作时真正的生产力杀手,因此您需要知道如何对其进行自定义以充分利用系统功能。自定义缩放的优点:对于难以阅读屏幕上的文本的人来说,这是一个有用的功能。它可以帮助您一次在屏幕上查看更多内容。您可以创建仅适用于某些监视器和应用程序的自定义扩展配置文件。可以帮助提高低端硬件的性能。它使您可以更好地控制屏幕上的内容。如何在Windows11

10种在 Windows 11 上调整亮度的方法10种在 Windows 11 上调整亮度的方法Dec 18, 2023 pm 02:21 PM

屏幕亮度是使用现代计算设备不可或缺的一部分,尤其是当您长时间注视屏幕时。它可以帮助您减轻眼睛疲劳,提高易读性,并轻松有效地查看内容。但是,根据您的设置,有时很难管理亮度,尤其是在具有新UI更改的Windows11上。如果您在调整亮度时遇到问题,以下是在Windows11上管理亮度的所有方法。如何在Windows11上更改亮度[10种方式解释]单显示器用户可以使用以下方法在Windows11上调整亮度。这包括使用单个显示器的台式机系统以及笔记本电脑。让我们开始吧。方法1:使用操作中心操作中心是访问

如何修复Windows服务器中的激活错误代码0xc004f069如何修复Windows服务器中的激活错误代码0xc004f069Jul 22, 2023 am 09:49 AM

Windows上的激活过程有时会突然转向显示包含此错误代码0xc004f069的错误消息。虽然激活过程已经联机,但一些运行WindowsServer的旧系统可能会遇到此问题。通过这些初步检查,如果这些检查不能帮助您激活系统,请跳转到主要解决方案以解决问题。解决方法–关闭错误消息和激活窗口。然后,重新启动计算机。再次从头开始重试Windows激活过程。修复1–从终端激活从cmd终端激活WindowsServerEdition系统。阶段–1检查Windows服务器版本您必须检查您使用的是哪种类型的W

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能