打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PHP类范围

我是PHP的新手.在整个PHP应用程序中控制对类的访问的最佳方法是什么?在整个应用程序中需要访问这些类的最佳位置在哪里?例;我有一个在登录过程中创建的用户类,但每次页面发布时都会显示该对象已重新初始化.

我试图设置属性IsLoggedIn,然后每次再次创建对象之前检查该变量,但这似乎不起作用.我还试图在PHP中使用isSet函数来查看类变量是否已经存在

解决方法:

你是对的,你的申请状态不会从请求转到请求.

与桌面应用程序相反,Web应用程序不会保持初始化状态,因为服务器每次都可以成为另一个访问者时,需要完全不同的东西.您知道谁在使用桌面应用程序,但您不一定知道谁在请求该页面.想象一下,10个用户在您的Web应用程序上同时执行不同的操作?您不会为每个访问者保持整个应用程序的运行.想象一下有10,000名访客……

有一些方法可以将一些数据从请求保留到请求.每次都会重新初始化应用程序,是的,但是您可以重新加载您正在执行的操作的状态.它始终围绕相同的一般方法:

>饼干; Cookie是一个保存在客户端的小文件,每个请求都可以提供哪些内容.在PHP中,这可以使用$_COOKIE variable.在所有情况下,您可以serialize您的类实例并在之后重新加载它们.问题是,您不希望将敏感数据放在那里,因为任何(恶意)机构都可以看到并修改它.
> POST或GET;在每个请求中,您传递$_GET request中的状态(URL,例如http://localhost/myscript.php?iamatstep=4.或通过$_POST,例如使用表单中的隐藏输入字段.此数据可以加密,只对您有意义,但仍然是,将敏感数据放回客户端,任何人都可以摆弄它.
>数据库,磁盘;或者服务器上的任何其他内容.同样,您在文件中序列化数据,例如在请求结束时准备好再次用于下一个请求.它的主要优点是它可以保留在您的服务器上.缺点是,此时,您不知道要为哪个请求提取哪些数据,因为您的应用程序可能同时存在多个用户…

这就是$_SESSION的概念发挥作用的地方.它只是一种同时使用所有这些的打包方式.这并不像初学者经常感觉到的那样神奇.当您使用会话时,放入$_SESSION的数据存储在服务器上的某个位置(通常是临时目录中的文件,尽管可以将其更改为其他类似数据库),并且会将唯一ID归因于此会话并传递在cookie中,将跟随访问者请求请求.因此,客户端唯一的问题是cookie中的大数字.在下一个请求中,浏览器告诉服务器上的PHP它的会话号为12345,如果存在,则加载相应的文件,然后再次提供数据.如果没有启用cookie,它可以通过GET或POST传递,但通常最好不要去那里(见session.use_trans_sid’s note).

在您的每个页面上,您通常需要进行身份验证.

<?php// verify if we have a current sessionif (isset($_SESSION['login'])) {  // get data in current session  $username = $_SESSION['login']['username'];  $isLoggedIn = $_SESSION['login']['isLoggedIn'];} else {  $username = '';  $isLoggedIn = false;}// take care of the unauthorized usersif (!$isLoggedIn) {  // maybe a redirection here...}// do the things a logged in users has the permission to do

并设置会话,它可能看起来像这样:

<?php// handle the form post of your login page for exampleif (isset($_POST['username']) && isset($_POST['password'])) {  $username = $_POST['username'];  $password = $_POST['password'];  // verify the username and password against a database  if ($everythingIsOkay) {    // we can consider this user logged in and create a session    $_SESSION['login']['username'] = $username;    $_SESSION['login']['isLoggedIn'] = true;    // and now maybe redirect the user to the correct page  }}// raise an error about an invalid login

最后,也许是一个logout.php页面可以做类似的事情:

<?phpunset($_SESSION['login']);// redirect the user to the login page
来源:http://www.icode9.com/content-1-238351.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ecshop 整合 QQ登陆 和 支付宝快捷登陆代码
php中判断$_SESSION['var'] 是否为空
Yii 用户登录验证
php编写用户登陆和登出代码_望海天空
php使用session来保存用户登录信息
php实现的简单登陆程序,带html代码和登录验证程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服