小白今天用PHP做网站用户注销的功能时遇到了一些问题
在网上找session、cookie、以及一些demo实例来做,还是遇到不能自行解决的问题
现在唯一能求助的地方就是sf了,希望能得到解决,^_^
具体遇到的问题,自我总结有3点:
1)、总体上对于网站的登录、注销的流程或者概念上不清晰
2)、小白目前对登录、注销的概念是这样的:
用户登录->通过->写用户数据到session->相关页面判断session
用户注销->(疑问:是应该销毁session的数据还是cookie呢)
3)在销毁cookie变量的过程中,居然木有销毁成功
小白是这样写销毁cookie的代码的:
一个Cookie类中的静态方法
public static function deleteAll() { foreach($
方法写好后就试着调用了一下,用chrome查看,请求头发现先前设置的变量还在
寻求帮助,如果哪位大神看到这个问题
希望你能停下你的脚步,留下你的宝贵经验
再次先谢谢各位鼎立相助的大神,o(∩∩)o...哈哈,^^
回复内容:
小白今天用PHP做网站用户注销的功能时遇到了一些问题
在网上找session、cookie、以及一些demo实例来做,还是遇到不能自行解决的问题
现在唯一能求助的地方就是sf了,希望能得到解决,^_^
具体遇到的问题,自我总结有3点:
1)、总体上对于网站的登录、注销的流程或者概念上不清晰
2)、小白目前对登录、注销的概念是这样的:
用户登录->通过->写用户数据到session->相关页面判断session
用户注销->(疑问:是应该销毁session的数据还是cookie呢)
3)在销毁cookie变量的过程中,居然木有销毁成功
小白是这样写销毁cookie的代码的:
一个Cookie类中的静态方法
public static function deleteAll() { foreach($
方法写好后就试着调用了一下,用chrome查看,请求头发现先前设置的变量还在
寻求帮助,如果哪位大神看到这个问题
希望你能停下你的脚步,留下你的宝贵经验
再次先谢谢各位鼎立相助的大神,o(∩∩)o...哈哈,^^
先理解什么是session,什么是cookie
假设,你是VIP用户,下面是一个网站浏览,登录,登出过程.(模拟的)
1,当你打开网站, PHP给浏览器发送cookie(就像你用了$_COOKIE['PHPSESSID'] = '4ioqo3m1udlr514n5krsdn1o55';) 用于标记当前用户.服务器对应的session内容是{logined:false;role:visitor;money:0;lasttime:2012122100000000;}
2,你浏览这个网站各个页面时, 服务器要判断你是谁,才能给你返回相应的内容.比如,是普通用户呢?还是VIP用户呢?还是管理员呢?还是超级管理员呢? 浏览器很尽责,每次向服务器请求内容都会带着所有的cookie,如历史购买cookie,广告点的cookie等等(这也是cookie不能太大的原因,增加了服务器压力), 服务器就知道你的请求session_id是 4ioqo3m1udlr514n5krsdn1o55, 心想, 原来是你,刚刚还找过我呢, 我马上就返你个VIP钻图片给你...
3, 然后,你最近手头富余了,想购买点东西,要登录(因为是VIP,不登录没打折).登录时,输入用户名,密码,之类的, 验证通过, 服务器要保存你的当前登录状态,就会把 登录状态存储在一个文件上(默认是/tmp目录,可以在php.ini的session.save_path修改),当然也可存储在数据库之类的媒介...经过一翻箱倒柜,原来你就是刚才的4ioqo3m1udlr514n5krsdn1o55呀, 现在在登录了,好吧, 给你加个状态上去..于是, 你对应的session就是 {logined:true;role:vip;money:10000000000;lasttime:20121221000000;} 之类的内容.
4,你登录之后 ,就开始搜索,对比,购买之类的活动. 服务器也没闲着呢.她在忙着对比你的交互值(用户是否刷新请求了页面)是不是消耗完了(PHP.ini的session.gcmaxlifetime值),如果消耗完了就删除你的session,你就自动退出登录状态了.服务器才不管你是VIP还是管理员呢,相当霸道..当然啦,脾气也有好的时间, 这得看概率...PHP.ini可以设置session.gcprobability=100, session.gc_pisor=100, 这样的100%也是有问题的,服务器就很繁忙了,要不断扫描session,删除session....
5,购买完东西之后, 上网时间到了,要退出网站,于是你点了"退出"..这时,网站程序就用session_destroy()自动销毁当前你4ioqo3m1udlr514n5krsdn1o55的session内容
4,浏览器经常向服务器诉苦,哥们,你这id太简单,容易被人破解的,我经常背黑锅呀. 服务器就说,嗯,那好吧,我再加个token好了,浏览器就苦笑了说, token也是seesion的id好嘛,虽然是加密的.服务器就说,增加点破解难度也是好的,再弄换session_id(每次访问都更换一次id...)....这又是另一长篇了...
总而言之
PHP的登录/登出功能,用的是cookie和session组合. cookie用于标记session的id, session存储状态等内容 session不是安全的,只是比较好的"最佳"体验...session不要放客户端,cookie加个http only.
补充例子
user:password:<?php exit; } // Auth::check() end. endif; echo ' login success' , 'logout'.PHP_EOL;
登录/注销功能使用的是session。可以将session存在客户端。
当然使用的是session函数啦。
以CI框架为例:
先写入一个session到浏览器,在最后加上一段特定的加密信息用于安全,再以明文写入如'ID'这样的session信息。注销的时候销毁'ID'这一项即可。
注意:加密信息要和session里的每一项都相关,防止伪造ID。
你的这个情况应该去销毁session,而不是cookie
销毁session只要调用:session_destroy() 函数就可以了。
好像用session的话 如果session用的cookie方式,注销时cookie也要销毁

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

phpisusedforsenderemailsduetoitsbuilt-inmail()函數andsupportivelibrariesLikePhpMailerAndSwiftMailer.1)usethemail()functionForbasiceMails,butithasimails.2)butithasimail.2)

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显著提升PHP应用的性能。

依賴性注射(DI)InphpisadesignPatternthatManages和ReducesClassDeptions,增強量強制性,可驗證性和MATIALWINABIOS.ItallowSpasspassingDepentenciesLikEdenciesLikedAbaseConnectionStoclasseconnectionStoclasseSasasasasareTers,interitationAseTestingEaseTestingEaseTestingEaseTestingEasingAndScalability。

cachingimprovesphpermenceByStorcyResultSofComputationsorqucrouctationsorquctationsorquickretrieval,reducingServerLoadAndenHancingResponsetimes.feftectivestrategiesinclude:1)opcodecaching,whereStoresCompiledSinmememorytssinmemorytoskipcompliation; 2)datacaching datacachingsingMemccachingmcachingmcachings


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

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

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能