ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP类范围

2019-06-11 01:27:24  阅读:218  来源: 互联网

标签: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 session
if (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 users
if (!$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 example
if (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页面可以做类似的事情:

<?php

unset($_SESSION['login']);
// redirect the user to the login page

标签:php
来源: https://codeday.me/bug/20190611/1215210.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有