php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07

news2024/11/23 18:31:30

php学习笔记-php会话控制及web常用的预定义变量-day07

  • 1、$_REQUEST
  • 2、$_SERVER
  • 3、$_COOKIE
    • 3.1 cookie的内容
    • 3.2 cookie的分类
    • 3.3 php中cookie的使用
    • 3.4 cookie自动登录小demo
  • 4、$SESSION
    • 4.1 session的工作原理
    • 4.2 session的使用
      • 4.2.1 修改php.ini中的session配置
      • 4.2.2 开启session
      • 4.2.3 删除和销毁session
    • 4.3 session 图书上传信息添加和修改例子

前几篇笔记中已经提到过 $_GET 和 $_POST 以及 $_FILES,这篇笔记就将$_REQUEST $_SERVER 和 $_COOKIE $_SESSION来简单说明一下.

1、$_REQUEST

使用$_REQUEST既可以获取GET方式提交的数据,也可以获取POST方式提交的数据 $_REQUEST = array_merge( $_GET,$_POST)

<form action="req.php" method="post">
    <input type="text" name="t1"><br>
    <input type="submit" value="提交">
</form>

<br>

<form action="req.php" method="get">
    <input type="text" name="t2"><br>
    <input type="submit" value="提交">
</form>

<?php
// 获取表单参数 并且 使用 $_REQUEST 来获取表单的参数

// 因为两个表单的数据name值不一样,且为了安全,判断一下 获取到的数据是否是定义过的

if(isset($_REQUEST['t1'])){
    echo $_REQUEST['t1']."我是post提交的表单"."</br>";
}


if(isset($_REQUEST['t2'])){
    echo $_REQUEST['t2']."我是get提交的表单"."</br>";
}

当采用GET 和 POST 混合提交数据的方式后,预定义变量是使用了POST还是GET提交的参数,与php.ini配置文件有关.
request_order = “GP” ,GP 决定 预定义变量GET 和 POST提交的顺序 (感觉画蛇添足,没啥大用处),只要知道使用 $_REQUEST预定义变量可以获取POST和GET方式提交的数据即可

2、$_SERVER

通过$_SERVER获取服务器主机和浏览器的一些相关信息

预定义变量使用功能
$_SERVER[“REMOTE_ADDR”]浏览器主机IP
$_SERVER[“SERVER_ADDR”]服务器主机IP
$_SERVER[“SERVER_NAME”]服务器主机名
$_SERVER[“SERVER_PORT”]服务器占用端口号
$_SERVER[“HTTP_HOST”]服务器主机名
$_SERVER[“PHP_SELF”]当前执行php程序的相对路径
$_SERVER[“QUERY_STRING”]查询字符串
$_SERVER[“DOCUMENT_ROOT”]web服务器根目录
$_SERVER[“REQUEST_URI”]请求URI

tip:$_SERVER["QUERY_STRING"] 需要在url进行拼接才会显示 req.php?xxx=yyy&zzz=mmm 这样

使用如下:

一个表单:

<form action="req.php" method="post">
    <input type="text" name="t3"><br>
    <input type="submit" value="提交">
</form>

处理表单请求参数并且显示的页面 req.php

// 通过$_SERVER获取服务器主机的一些相关信息
if(isset($_REQUEST['t3'])){
    echo "浏览器主机IP-".$_SERVER["REMOTE_ADDR"]."<br>"; //::1
    // 有的web服务器不支持 这个 $_SERVER["SERVER_ADDR"]
    echo "服务器主机IP-". $_SERVER["SERVER_ADDR"]."<br>";
    echo "服务器主机名-".$_SERVER["SERVER_NAME"]."<br>";// localhost
    echo "服务器占用端口号-".$_SERVER["SERVER_PORT"]."<br>";// 81
    echo "服务器主机名-".$_SERVER["HTTP_HOST"]."<br>";//localhost:81
    echo "当前程序的执行相对路径名-".$_SERVER["PHP_SELF"]."<br>";//   /req.php
    echo "查询字符串-".$_SERVER["QUERY_STRING"]."<br>";// 需要在url进行拼接才会显示  req.php?xxx=yyy&zzz=mmm 这样
    echo "web服务器根目录-".$_SERVER["DOCUMENT_ROOT"]."<br>";//D:\phpstudy_pro\WWW\phpProjects\demo1
    echo "请求URI-".$_SERVER["REQUEST_URI"]."<br>";// /req.php
}

3、$_COOKIE

cookie 常用于识别用户(比如账号的自动登录)。cookie 是一种服务器留在用户计算机上的小文件。

cookie 是一组"键值对"信息,该信息由web服务器的php程序生成,最终保存到浏览器端主机内存或者浏览器端主机硬盘文件中。

在这里插入图片描述

3.1 cookie的内容

Cookie是一段不超过4KB的小型文本数据,由一个键值对,和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。

(1)name 和 value:设置Cookie的标记名称(字符串)及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌 。

(2)expire属性:设置Cookie的生存期(过期时间),通常为整数数据类型。有两种存储类型的Cookie:会话性与持久性。expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效 。

(3)path属性:指定Cookie在web服务器的有效路径,即web服务器访问站点。。

(4)domain属性:指定了可以访问该 Cookie 的 有效域名。

(5)secure属性:指定Cookie 信息是通过 Http协议还是 Https协议加入请求头,取值范围为 true | flase。默认值为false,表示只有使用Http协议时才将cookie加入请求头中;true的话就是使用Https协议才…

3.2 cookie的分类

有两种存储类型的Cookie:会话性与持久性。expires属性缺省时,为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效

  • 会话cookie

    会话cookie仅保存在客户端内存中,并在用户关闭浏览器时失效.会话cookie的典型应用是实现session会话技术。

  • 持久cookie

    持久性Cookie会保存在用户的硬盘中。
    持久性Cookie失效的情况及原因:

    • 当cookie的过期时间到了以后,cookie失效
    • 浏览器用户手动删除cookie(清理缓存)
    • 浏览器主机存放的cookie太多,浏览器自动清除cookie.

3.3 php中cookie的使用

使用 setcookie()函数 或者 header()函数 ,可以在php中自行设定cookie.

setcookie()函数
语法格式:bool setcookie(string name [ [ [ [ ,string value], int exprie ], string path ], string domain ], int secure)
函数功能: 成功创建cookie则返回true,否则返回false

header()函数
直接通过 header("Set-Cookie:name=value")即可在请求头中添加cookie。

tip:一般设定cookie的过期时间即expire属性值时,使用 time() 函数 或者 mktime() 函数。

time() 函数
语法格式: int time(void)
函数功能:返回一个时间戳(从1970-1-1到目前时间)

cookie的删除:
使用 setcookie()函数将cookie的值设置为空,或者使用setcookie()函数将expire过期时间设置为过去的时间,即可删除cookie.

3.4 cookie自动登录小demo

login.php:

<?php
    // cookie的获取,用于实现自动登录
    $uName ="";
    $uPwd ="";
    if(isset($_COOKIE['uName'])){
        $uName = $_COOKIE['uName'];
    }
    if(isset($_COOKIE['uPwd'])){
        $uPwd = $_COOKIE['uPwd'];
    }
?>

<!--创建一个登录表单-->
<form action="checkLogin.php" method="post">
    账号:<input type="text" name="uName" value="<?php echo $uName?>"><br>
    密码:<input type="password" name="uPwd" value="<?php echo $uPwd?>"><br>
    <input type="submit" value="提交">
</form>

checkLogin.php:

<?php

// 1.使用 $_REQUEST 来获取表单参数

$uName = $_REQUEST['uName'];
$uPwd = $_REQUEST['uPwd'];

// 2.登录验证,如果是 admin  1234,则允许登录
$flag1 = boolval("admin"==$uName&&1234==$uPwd);
if($flag1 ){
    echo "登录成功"."<br>";
    echo "账号:".$uName."<br>密码:".$uPwd."<br>";
}
if (!$flag1){
    echo "登录失败请重新登录!点击下面的链接即可返回登录页面"."<br>";
    echo "<a href='login.php'>返回登录页面</a>";
}

// 3.设定用户登录cookie,只要不超过cookie的过期时间,下次就可以自动登录啦
$expireTime = intval(60*60*24*3);// 3天  60*60*24*3 设定cookie的过期时间是三天
setcookie("uName",$uName,time()+$expireTime);// 设置 cookie
setcookie("uPwd",$uPwd,time()+$expireTime);
echo "你的账号信息已经存放与cookie中,".$expireTime."秒 后过期";

运行图:
在这里插入图片描述

使用F12开发者工具对网络进行抓包查看,我们自己设定的cookie是否存在于请求头中。

在这里插入图片描述
在这里插入图片描述

再次回到login.php,发现cookie已经自动填充好啦

在这里插入图片描述

4、$SESSION

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去,当浏览器关闭时,会话cookie从浏览器中删除,与浏览器cookie对应的session依旧存在,直到当服务器关闭,session销毁失效,或者session的过期时间到了session失效

cookie不设置过期时间的会话就是session,cookie保存至浏览器端,session文件保存在服务器的硬盘中。

php中提供了预定义变量$_SESSION用来解析和修改Session文件PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

4.1 session的工作原理

session的工作原理:
(1)当一个session第一次被启用时,一个独一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

4.2 session的使用

4.2.1 修改php.ini中的session配置

php.ini配置文件中有一组Session的配置选项,用于管理Session的自身属性。

  • 1.session.save_hanler = files :设置服务器保存用户个人信息的保存方式,默认为“files”,表示用文件存储session信息。如果想要使用数据库存储session信息,则将其改为 session.save_hanler = user。
  • 2.session.save_path = "自定义路径": 在save_handler设为files时,用于设置session文件的保存路径。
  • 3.session_use_cookies =1:默认值为1,代表SessionID使用cookie传递,为0时使用查询字符串传递sessionID.
  • 4.session.name = PHPSESSID:session的名称,默认值为"PHPSESSID"。
  • 5.session.auto_start=0:浏览器请求服务器页面时,是否自动开启session,默认值为0,表示不自动开启session。
  • 6.session.cookie_lifetime =0:设置sessionID在cookie中的过期时间,默认值为0(浏览器关闭sessionID即失效)。
  • 7.session.cookie_path= / :使用cookie传递sessionID时cookie的有效路径,默认为/
  • 8.session.cookie_domain = : 使用cookie传递sessionID时cookie的有效域名,默认为空。
  • 9.session.gc_maxlifetime = 1440,设置session文件中的最大过期时间,默认为1440秒,即如果1440秒之内没有访问session文件,则该session文件失效。

下面的是session在php.ini中默认的配置:

[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = files

; Argument passed to save_handler.  In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; The path can be defined as:
;
;     session.save_path = "N;/path"
;
; where N is an integer.  Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories.  This is useful if
; your OS has problems with many files in one directory, and is
; a more efficient layout for servers that handle many sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
;         You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
;         use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
;     session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
;session.save_path = "/tmp"

; Whether to use strict session mode.
; Strict session mode does not accept an uninitialized session ID, and
; regenerates the session ID if the browser sends an uninitialized session ID.
; Strict mode protects applications from session fixation via a session adoption
; vulnerability. It is disabled by default for maximum compatibility, but
; enabling it is encouraged.
; https://wiki.php.net/rfc/strict_sessions
session.use_strict_mode = 0

; Whether to use cookies.
; http://php.net/session.use-cookies
session.use_cookies = 1

; http://php.net/session.cookie-secure
;session.cookie_secure =

; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combating
; session hijacking when not specifying and managing your own session id. It is
; not the be-all and end-all of session hijacking defense, but it's a good start.
; http://php.net/session.use-only-cookies
session.use_only_cookies = 1

; Name of the session (used as cookie name).
; http://php.net/session.name
session.name = PHPSESSID

; Initialize session on request startup.
; http://php.net/session.auto-start
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0

; The path for which the cookie is valid.
; http://php.net/session.cookie-path
session.cookie_path = /

; The domain for which the cookie is valid.
; http://php.net/session.cookie-domain
session.cookie_domain =

; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly =

; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Strict", "Lax" or "None". When using "None",
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite =

; Handler used to serialize data. php is the standard serializer of PHP.
; http://php.net/session.serialize-handler
session.serialize_handler = php

修改一下session文件的保存路径
在这里插入图片描述

4.2.2 开启session

session的使用不同于cookie,必须在php程序中调用session_start()函数启动session后才能使用session.

session_start()

语法格式:bool session_start ( void )

函数功能如下:

  • 1.加载php.ini配置文件中session的配置信息(session的生存周期,session的保存路径)加载到web服务器的内存中。

  • 2.创建SessionId 或者使用原有的SessionID。若Cookie请求头中不存在相应的SessionID则表示第一次访问,则创建一个新的SessionID来标识,若已经存在,则直接使用Cookie请求头中的已有的SessionID.

  • 3.在web服务器创建Session文件或者解析已有的Session文件.如果是新的SessionID,则创建Session文件,$_SESSION为空数组,反之若是已经存在的SessionID,则直接将Session文件中的内容到$_SESSION数组中。

  • 4.产生Cookie响应头信息,Cookie响应头会随着响应发送给浏览器。(响应头形如 ``)

4.2.3 删除和销毁session

php提供了session_unset() 和 session_destory()用来删除session数据。

session_unset()用于释放指定的 session 变量,只清空对应SessionID的数据,保留SessionID。
语法格式:void session_unset( void )

session_destory()用于彻底删除销毁session,SessionID也被清除置为0。
语法格式:bool session_destory(),销毁session成功后返回true,否则返回false。

4.3 session 图书上传信息添加和修改例子

addBook.php,添加书籍信息页面:


<form action="toAddBook.php" method="post" >
    作者:<input type="text" name="author" placeholder="请输入文章作者"><br>
    标题:<input type="text" name="title" placeholder="请输入文章标题"><br>
    类型:<select name="bookType">
        <option value="--------请选择类型--------" disabled selected></option>
        <option value="文学类">文学类</option>
        <option value="科普类">科普类</option>
        <option value="教辅类">教辅类</option>
    </select><br>
    内容:<textarea name="content"></textarea><br>
    <input type="submit" value="添加图书">
</form>


toAddBook.php,php处理添加图书信息页面:

<?php

// 获取表单上传的文本信息
$author = $_POST['author'];
$title = $_POST['title'];
$bookType = $_POST['bookType'];
$content = $_POST['content'];

//1.启动session
session_start();
// 2.设定session
$_SESSION['author'] = $author;
$_SESSION['title'] = $title;
$_SESSION['bookType'] = $bookType;
$_SESSION['content'] = $content;

// 3.页面重定向到 showBook.php
// 使用header()函数进行重定向
header("location:showBook.php");

showBook.php,显示图书信息页面:

<?php

// 获取session数据

$author = "";
$title = "";
$bookType ="";
$content = "";
// 每个需要session的地方都需要使用session_start();来开启
session_start();
// 用isset函数判断下,不然报错就不好了
if(isset($_SESSION['author'])){
    $author = $_SESSION['author'];
}
if(isset($_SESSION['title'])){
    $title = $_SESSION['title'];
}
if(isset($_SESSION['bookType'])){
    $bookType = $_SESSION['bookType'];
}
if(isset($_SESSION['content'])){
    $content = $_SESSION['content'];
}

// 定界符输出
echo <<<div

<p>作者:$author</p>
<p>标题:$title</p>
<p>文章类型:$bookType</p>
<p>文章内容:$content</p>
<p>
    <button οnclick="window.location.href='updateBook.php'">修改图书内容</button>
</p>
div;

updateBook.php,图书更新表单页面:

<?php
    // 获取session数据

    $author = "";
    $title = "";
    $bookType ="";
    $content = "";
    // 每个需要session的地方都需要使用session_start();来开启
    session_start();
    // 用isset函数判断下,不然报错就不好了
    if(isset($_SESSION['author'])){
        $author = $_SESSION['author'];
    }
    if(isset($_SESSION['title'])){
        $title = $_SESSION['title'];
    }
    if(isset($_SESSION['bookType'])){
        $bookType = $_SESSION['bookType'];
    }
    if(isset($_SESSION['content'])){
        $content = $_SESSION['content'];
    }

?>
<form action="toUpdateBook.php" method="post" >
    作者:<input type="text" name="author" value="<?php echo $author?>"><br>
标题:<input type="text" name="title" value="<?php  echo $title;?>"><br>
类型:<select name="bookType">
        <option value="--------请选择类型--------" disabled selected></option>
        <?php
            if ("文学类"==$bookType){
                echo '<option value="文学类" selected>文学类</option>
                      <option value="科普类">科普类</option>
                      <option value="教辅类">教辅类</option>';
            }
            if ("科普类"==$bookType){
                echo '<option value="文学类" >文学类</option>
                      <option value="科普类" selected>科普类</option>
                      <option value="教辅类">教辅类</option>';
            }if ("教辅类"==$bookType){
                echo '<option value="文学类" >文学类</option>
                      <option value="科普类">科普类</option>
                      <option value="教辅类" selected>教辅类</option>';
            }
        ?>

    </select><br>
内容:<textarea name="content"><?php echo $content?></textarea><br>
    <input type="submit" value="修改图书">
</form>

toUpdateBook.php,图书更新表单数据处理页面:

<?php
$author = $_POST['author'];
$title = $_POST['title'];
$bookType = $_POST['bookType'];
$content = $_POST['content'];

//1.启动session
session_start();
// 2.设定session
$_SESSION['author'] = $author;
$_SESSION['title'] = $title;
$_SESSION['bookType'] = $bookType;
$_SESSION['content'] = $content;
// 3.页面重定向到 showBook.php
// 使用header()函数进行重定向
header("location:showBook.php");

tip:每个需要session的地方都需要使用session_start();来开启

运行代码,启动服务:

依次抓包,查看session
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

运行过程中 的 sessionID PHPSESSID=e2l88u5bva8bhl6ikjeuti5pm1

**打开我们的session文件保存的位置,进行查看:

其底层存储方式为author|s:6:"张三";title|s:21:"杀死一只知更鸟";bookType|s:9:"文学类";content|s:2:"77";**

在这里插入图片描述


好啦,这篇笔记就到这里啦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 深入系统完全讲解(13)

3 编译过程讲解 1 系统的编译过程 Android 的编译使用的 Makefile&#xff0c;推荐大家使用《GNU make 中文手册》&#xff0c;这本书有电子版&#xff0c;非常方便&#xff0c;主要是要理解清楚 Makefile 的规则&#xff0c;编译策略&#xff0c;可以通过写简单的编译机制&am…

【Java项目推荐】值得写到简历上的项目--黑马点评

优惠卷秒杀前言优惠券秒杀实现优惠券秒杀下单超卖问题一人一单分布式锁redis中加锁的一些特殊情况手动实现分布式锁分布式锁误删情况1分布式锁误删情况2lua脚本解决多条命令的原子性问题Redisson秒杀优化异步秒杀思路基于redis完成秒杀资格判断基于阻塞队列实现异步下单总结Red…

70、SSDNeRF: Semantic Soft Decomposition of Neural Radiance Fields

简介 官网&#xff1a;https://www.siddhantranade.com/research/2022/12/06/SSDNeRF-Semantic-Soft-Decomposition-of-Neural-Radiance-Fields.html SSDNeRF&#xff0c;将语义信号与场景的辐射信号联合编码&#xff0c;提供了场景的软分解为语义部分&#xff0c;能够正确编码…

【HCIA-openEuler】实验手册—09【openEuler综合实践】

文章目录一、实验介绍1、关于本实验2、实验目的二、实验任务配置1、配置思路2、配置步骤步骤1&#xff1a;挂载系统ISO&#xff0c;并配置好本地dnf源步骤2&#xff1a;配置软件安装源步骤3&#xff1a;安装文件共享服务三、设置文件共享用户与权限1、实验介绍&#xff08;1&am…

【Linux】编辑器 - vim 的使用与配置

目录 1、vim的基本概念 2、vim的基本操作 2.1、vim 编辑器的进入与退出 2.2、插入模式 2.3、命令模式 2.4、底行模式 3、vim的配置 3.1、自定义配置 3.2、自动化配置 vim 的前身是 vi&#xff0c;vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;…

Java对时间的处理

Date用的最多这里主要介绍该类。java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。 package com.company; import java.util.Date;public class Main {public static void main(String[] args) {// write your code hereSyste…

阿里云Docker仓库操作

为什么用阿里云docker有自己的仓库服务器&#xff0c;但是对没掏钱的&#xff08;白嫖&#xff09;用户并不是那么友好&#xff0c;有两个很大的限制&#xff1a;免费用户&#xff0c;在6个月之内如果没有任何操作&#xff0c;将会被自动删除&#xff0c;真的很糟糕啊。匿名用户…

港科夜闻|广州市花都区与香港科大(广州)合作建设科研智库,发展AI智慧农业...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、广州市花都区与香港科大(广州)合作建设科研智库&#xff0c;发展AI智慧农业。1月8日&#xff0c;广州市花都区人民政府和香港科大(广州)在广州举行签约仪式&#xff0c;根据协议&#xff0c;香港科大(广州)和花都区人民政府…

JS案例:接口加解密与防重放

目录 前言 功能设计 客户端的功能点&#xff08;client&#xff09; 服务端的功能点&#xff08;server&#xff09; 功能实现 工具函数 client.js&#xff08;客户端&#xff09; server.js&#xff08;服务端&#xff09; 实现效果 写在最后 前言 在网络通信中&am…

远程会计人员如何通过数字工作流程完成工作

远程会计人员如何通过数字工作流程完成工作 当大多数员工居家办公时&#xff0c;会计部门通常会敏锐地感受到挑战。如果您的组织开始数字化转型或只迈出了第一步&#xff0c;您会发文档管理系统现在已成为必备品&#xff0c;而不是可有可无的。现在是时候实施数字工作流程&…

论文投稿指南——中文核心期刊推荐(地理学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

Mysql操作指令

Mysql操作指令 创建数据库 下面写具体案列一步步学 这里基本上线在sqlyog里面写sql&#xff0c;因为关于java程序和mysql数据库的连接还没有学 图形化操作数据库之前的可视化有 这里只讲指令凑在哦 注意 默认创建库 用uft8字符集&#xff0c;校对规则的uf8_general_ci不区分大…

< Linux >:环境变量

目录 环境变量 常见的环境变量 基本概念 查看环境变量内容的方法 测试环境变量PATH 与环境变量相关的命令 Linux操作系统下C/C程序代码中获取环境变量的方式 环境变量的组织方式 环境变量通常具有全局属性 环境变量 问题&#xff1a; 注意&#xff1a;可执行程序 等价于 命令/指…

Flutter 开发一个自己的 package(纯Dart)并提交到pub.dev上

小提示第一步&#xff1a;创建一个 package第二步&#xff1a;实现我们的package第三步&#xff1a;发布到 pub.dev 上。END发布的准备工作小提示 Flutter 轮子库。本文是为大家讲述怎么自己写个轮子发布到到上面。 https://pub.flutter-io.cn/packages 第一步&#xff1a;创建…

P2P僵尸网络-家族类别

Pink Pink 家族曾在中国境内感染了超过百万级的设备&#xff0c;其非实效性指令通过 P2P 传递&#xff0c;实效性强的指令通过集中控制的方式发布。是一个设计巧妙的 P2P 僵尸网络家族 Pink 僵尸网络概述 Pink 主要针对基于 mips 的光纤路由器&#xff0c;并且具有非常强大的和…

如何使用人力资源软件识别保留优秀员工

在企业信息化的时代&#xff0c;越来越多的年轻员工开始追求他们的激情&#xff0c;辞掉那些乏味的工作&#xff0c;而选择加入重视员工生活质量的企业。他们不再追随那些以牺牲员工福利为代价追求利润的公司。 员工认可度有助于加强组织中的团队合作关系&#xff0c;反过来&a…

VS 17.5 预览版2:/Gw链接开关的标准一致性改进

/Gw 链接开关可以告诉链接器优化代码中的全局数据&#xff0c;从而减小最终生成的二进制文件的大小。在 Visual Studio 17.5 预览版2中&#xff0c;我们新增了一个新的标志&#xff1a;/Zc:checkGwOdr[-] &#xff0c;目的是在使用 /Gw 开关的时候改进对 C 标准的一致性支持。 …

表情包也能用 AI 生成?如何借助 AIGC 自定义专属表情包 #Memix

随着我们越来越离不开社交媒体&#xff0c;表情包也已经成为我们日常生活中的必备单品。有着个人鲜明风格的「表情包」&#xff0c;不仅是独特的「社交名片」&#xff0c;也能给人留下耳目一新的印象&#xff01;谁的收藏夹里没有一堆私藏表情包呢&#xff01;Memix借助 AI 技术…

画中画怎么制作?教你如何录制画中画视频,图文教学

很多小伙伴在录制视频的时候&#xff0c;都需要录制摄像头&#xff0c;以画中画的方式放置在视频当中。在网上眼花缭乱的录屏软件里&#xff0c;有不少的录屏软件是无法做到画中画视频的。画中画怎么制作&#xff1f;今天小编分享2个录制画中画视频的方法&#xff0c;一起来看看…

实心球状CdSe/ZnS/硫量子点QD-AFP-Ab/CPV VLP标记抗体/蛋白的制备方法与电镜表征

实心球状CdSe/ZnS/硫量子点QD-AFP-Ab/CPV VLP标记抗体/蛋白的制备方法与电镜表征 今天小编分享量子点标记蛋白&#xff0c;一起看看吧&#xff1a; 量子点标记蛋白的制备过程&#xff1a; 将纯化后的 CPV-VP2蛋白溶液&#xff08;测定OD2802.0,蛋白浓度为2mg/ml&#xff09;和…