精华内容
下载资源
问答
  • 交互用户
    千次阅读
    2018-11-29 08:41:01

    命令行交互

    优点:

    ①专家用户使用命令行能够更加快速地完成任务
    ②较图形界面更加节约系统资源
    ③对用户而言是开放的,不存在图形界面中不能动态配置用户可操作选项的问题
    ④键盘操作方式较鼠标操作更加精确,对应用的掌控力更强
    ⑤支持用户自定义命令
    缺点:

    ①命令语言的掌握对用户的长时记忆和短时记忆提出了较高要求
    ②界面使用基于回忆的方式,没有图形用户界面基于识别的方式容易使用
    ③要求使用者对键盘布局较为熟悉,出错频率较高
    ④命令编写贴近计算机的执行方式,与可用性理论所强调的不应要求用户了解计算机底层的实现相违背

    菜单驱动的界面

    优点:

    ①基于识别机制,对记忆的需求较低
    ②具有自解释性
    ③容易纠错。相比较而言,命令行方式下需要对用户输入的命令进行解析
    ④适合新手用户。若提供了较好的快捷键功能,则对专家用户同样适用
    缺点:

    ①导航方式不够灵活
    ②当菜单规模较大时,导航效率不高
    ③占用屏幕空间,不适合小型显示设备。为节省空间,通常组织为下拉菜单或弹出式菜单
    ④对专家用户而言适用效率不高

    基于表格的界面

    优点:

    ①简化了数据输入
    ②由于待填写区域已经预先定义,因而只需识别而无需学习
    ③通过预定义格式来指导用户完成数据输入
    ④特别适合与日常文书处理等需要键入大量数据的工作
    缺点:

    ①会占用大量屏幕空间
    ②可能导致业务流程较形式化的情况

    直接操纵

    优点:

    ①将任务概念可视化,用户可以非常方便地辨别他们
    ②容易学习,适合新手用户
    ③操纵基于识别,对记忆要求不高,可有效避免错误发生
    ④支持空间线索,鼓励用户对界面进行探索
    ⑤可实现对用户操作的快速反馈,具有较高的用户主观满意度
    缺点:

    ①实现起来较困难
    ②对专家用户而言效率不高
    ③不适合小屏幕显示设备
    ④对图形显示性能的需求较高
    ⑤不具备自解释性,可能误导用户
    问答界面(向导)

    优点:

    ①对记忆的要求较低
    ②每个界面具有自解释性
    ③将任务流程以简单的线性表示
    ④适合新手用户
    缺点:

    ①要求从用户端获得有效输入
    ②要求用户熟悉界面控制
    ③纠错的过程可能比较乏味

    隐喻界面

    缺点:

    ①隐喻不可拓展
    ②隐喻依赖于设计者与用户之间相似的联想方式
    ③很难找到恰当的隐喻
    ④限制了我们的思维

    自然语言交互

    例如:Siri、小娜等

    更多相关内容
  • 用户体验与UI交互设计》教学课件6.3Axure交互基础实例—用户登录.pdf《用户体验与UI交互设计》教学课件6.3Axure交互基础实例—用户登录.pdf《用户体验与UI交互设计》教学课件6.3Axure交互基础实例—用户登录.pdf...
  • 第1章 人机交互用户体验

    千次阅读 2021-06-09 14:30:02
    文章目录1.1 人机界面与人机交互1.2 人机界面的发展1.3 人机交互的重要性1.4 最佳用户体验1.5 实现最佳用户体验的基本步骤1.6 人机交互与软件工程1.7 人机交互技术的发展趋势 课程介绍:从用户的角度来改善用户和...


    课程介绍:从用户的角度来改善用户和计算机之间的交互、提高系统的易用性。

    人机界面(Human-Machine Interface)是人与机器进行交互的操作方式,即用户与机器互相传递信息的媒介。计算机系统中的人机界面(Human-Computer Interface)又称人机接口、用户界面(User Interface,UI),是计算机科学中最年轻的分支之一。

    用户体验(user experience,UX)是指日常生活里用户和计算机交互过程中,用户建立的所有知识、记忆和感受。具体来说,用户体验是指用户在使用数字产品或享受数字服务,或者预测使用方式过程中,建立的所有感受、知觉、认知印象等。

    1.1 人机界面与人机交互

    人机界面
      在人机系统模型中,人与机器之间存在着一个相互作用的“面”,即人机界面。人与机器之间的信息交流和控制活动都发生在人机界面上。
      人机界面介于用户和计算机之间,是人与计算机之间传递、交换信息的媒介,是用户使用计算机的综合操作环境。
      人机界面设计师处理的是人与硬件界面人与软件界面的关系,而硬件界面与软件界面之间的关系则通过计算机技术来解决。
    在这里插入图片描述

    人机交互
      传统的人机交互是研究用户计算机系统间往来的交互,系统和人之间存在着一般的输入和输出装置,在这些输入输出装置之间会发生一系列的相互作用,将人接触的系统的输入输出装置以及这些设备上显示的内容作为用户界面(UI)。界面设计是指对针对这种输入输出装置的外观和内容的设计。
    在这里插入图片描述
      新的人机交互可划分为计算机以及交互这三个要素。HCI 1.0关注于人们可以亲眼看到、亲耳听到的界面设计或音效制作。HCI 2.0规定的范围得到了拓展,它特指从2000年年末开始流行的Web 2.0环境下的人机交互。
    在这里插入图片描述

    用户体验

    用户体验用户界面人机交互差异性

      主观性:体验是人内心建立的一种感受。
      整体性:体验是特定个体在特定时间的总体性感受,无法用具体的要素来区分。
      情境性:用户环境和情境易变,因此用户体验也会频繁发生变化。

      人机交互是为了向用户提供满足主观性与总体性的最佳体验用户体验作为人机交互的目标用户界面是具体的手段交互是连接这两方面的纽带界面是基础,其次提供交互,然后最终形成体验

    1.2 人机界面的发展

    硬件人机界面:
      硬件人机界面的发展以人类社会的三次技术革命作为分水岭。
      随着计算机技术和网络技术的逐步发展,此时的设计逐步从物质化设计转向信息化、非物质化设计。软件开发设计层出不穷,虚拟设计、网络化设计、并行工程逐步成为设计的主流。

    软件人机界面:
      软件人机界面的发展首先归功于计算机技术的迅速发展
      早期的计算机需要人们用二进制编码形式写程序,既耗费时间,又容易出错,限制了计算机的应用。
      第二代计算机的时候出现了FORTRAN等高级程序设计语言,使人们可以用比较习惯的接近自然语言的形式描述计算过程,从而大大提高了程序开发效率,软件产业由此诞生。
      随着集成电路和大规模集成电路的相继问世,使第三代计算机变得更小、功耗更低、速度更快。

    人机界面保持“简单、自然、友好、方便、一致”

    1.3 人机交互的重要性

    市场—用户不能容忍设计低劣的产品。
    企业—能提高生产效率,降低产品后续支持成本。
    个人—希望使用简单的产品,获得较高的满意度。
    人性—帮助用户有效降低错误发生的概率。

    1.4 最佳用户体验

      人机交互设计的最终目标,是要在人们使用数字产品或服务来工作或解决问题的过程中,向他们提供最佳和流畅的体验

    最佳体验是指用户表现出如下几个特征

    • 一旦开始特定体验就愿意一直享受此体验;
    • 意味着在体验时全心全意地集中于此状态;
    • 有了最佳经验之后会格外关注该产品或服务;
    • 有了最佳经验之后会喜欢经历体验的过程。也就是说,欢乐与乐趣是提供最佳体验的重要要素。
        

    唐纳德•诺曼主张的产品设计:
    本能性设计:关注于人的感官与感性的层面来设计。
    行为性设计:以方便为中心的设计。
    反思性设计:人能做出的面向目的的行为。
      
      

    有效性:有效地完成人们利用系统所要做的事,这是开发任何产品或服务时最优先的目的。

    可用性:有效使用数字产品或服务的过程。为了高效,人们使用数字产品或服务时期望以最小的付出来达到所期望的目的。

    感 性:人们使用系统时心理上的感觉。为了满足感性,人们使用系统时要体验到符合其基本目的的各种感受。此时,感性是包括看到某个系统之后所接触到的审美印象和情绪,或是对象的个性等概念。
      例如,针对儿童的在线游戏可设计成令人高兴的画面,针对成人的在线游戏可设计成使人感到神秘的画面。过去认为感性跟有效性或可用性的条件相反,具有与众不同的感性体验的产品经常被贬低为拙劣的作品。但现在,感性被认为是适当满足有效性或可用性的必须条件。

    三位一体的体验:在使用特定系统时,要想获得最佳体验,该系统必须具备有效性可用性感性,三者缺一不可。

    1.5 实现最佳用户体验的基本步骤

    研究用户体验
      要分析什么是用户重视的价值,什么是用户看重的可用性,同时还要分析用户的情绪如何受到外部的影响;用户用系统完成什么样的任务;在众多的系统和技术当中,哪一种最适合在特定环境中完成特定任务。

    设计用户体验
      决定整体系统概念、设计系统信息结构、设计系统人机交互、设计系统用户界面。

    提升用户体验
      为了给用户提供最佳体验,需要设定所设计系统的最终目标,从人机交互观点对目前的数字产品或者服务所提供的用户体验级别进行评价,在评价的基础上,将系统朝着用户体验最终目标的方向改进。

    1.6 人机交互与软件工程

    软件工程人机交互视为两个相互独立的学科
       首先,软件工程师与人机交互设计师关注的重点有很大不同软件工程师经常是以系统功能为中心,形式化方法在这里得到了广泛应用;而交互设计人员则以用户为中心,对用户特性和用户需要执行的任务要有深入的了解。
      其次,交互设计的评估方式也与一般软件工程方法存在不同:交互评估通常基于真实用户,评价机制也往往来自于用户使用的直观感觉
      再次,以往人机交互与软件工程经常是分开讨论的,一方面软件工程较少提及交互团队在产品设计中的重要作用,另一方面人机交互也很少谈及其与软件工程的密切关系。
    在这里插入图片描述

      人机交互软件工程技术的发展具有很大的促进作用,但现有的软件工程技术大多仅包含少量交互情况或者根本不涉及用户交互的软件,在实现交互式系统过程方面存在天生的缺陷,如:
       1)没有提出明确的对用户界面及可用性需求进行描述的方法;
       2)不能够在系统开发过程进行中对用户界面进行终端测试等。

      使用现有软件工程技术开发出来的交互式系统尽管具有完善的系统功能,但对用户而言,产品的可用性、有效性以及满意度并不高,相应地,产品很难取得市场上的成功。程序开发过程中约80%的维护开销都与用户和系统的交互相关,这其中又有64%属于可用性问题。在软件开发过程引入人机交互技术,可有效改进上述问题。

      以用户为中心的设计(User-Centered Design,UCD)方法提出了多种用于构建交互式系统的技术和工具。UCD和传统软件工程方法的相似之处(如均包含用例和任务分析等),并试着用UCD思想来取代传统软件工程方法。
      

    软件工程方法与人机交互相结合存在一些困难
       首先,双方人员通常对对方的价值观持否定态度:软件工程人员在对工作的实施策略和方法选择上常有一定的倾向性,通常基于对问题性能和处理复杂度考虑等;而人机交互人员的工作则包含较多的主观性和灵活性,这也可能是学科自身尚不够成熟的缘故。
      其次,它们所使用的方法论体系存在差异:软件工程师较多使用形式化方法分析问题,对非形式化方法存在偏见;而人机交互领域虽然也可能使用到一些形式化的方法,但对非形式化方法也给予了充分重视。

    1.7 人机交互技术的发展趋势

    高科技化
      计算机越来越趋向超薄型和平面化,输入方式由单一朝着多通道输入发展,软件也不断推陈出新,全新的界面给设计师提供了广阔的造型空间。

    自然化
      交互原理和方法相继产生并得到了广泛应用,推动人机界面自然化向前迈进了一大步,而且人们要求能够通过视觉、听觉、嗅觉、触觉以及形体、手势或口令等,更自然地“进入”到工作空间中去,形成人机“直接对话”,从而取得“身临其境”的体验。

    人性化
      现代设计已经从功能主义逐步走向了多元化和人性化,从单通道向多通道以及从二维向三维交互的方向转变,发展用户与计算机之间快捷、低耗的多通道界面。

    展开全文
  • 用户接口是人与计算机交互的界面,人-机交互方式从问答方式、菜单交互方式发展到现在的图形交互方式、窗口管理系统、图标以及其它丰富多彩的图形界面,已成为流行的人-机交互环境。本章主要内容包括: 用户接口的...
  • shell脚本--简单实现交互式创建用户

    千次阅读 2020-07-01 19:38:08
    交互式创建用户(适用于网络小白) 此脚本可以防止小白用户在创建用户时出现错误,从而提高效率! 1.实现的功能 1.用户输入用户名或密码有两次机会 2.当用户两次都不输入用户名,会自动退出程序,需要重新执行脚本 3...

    交互式创建用户(适用于网络小白)

    此脚本可以防止小白用户在创建用户时出现错误,从而提高效率!

    1.实现的功能

    1.用户输入用户名或密码有两次机会
    2.当用户两次都不输入用户名,会自动退出程序,需要重新执行脚本
    3.当用户只输入用户名,而不输入密码,会自动为用户设置默认密码(123.com)

    2.代码内容

    #原创作者:Keep	
    #!/bin/bash
    
    # 创建用户
    read -p "请输入用户名:" user
    cat_user=$(echo `cat /etc/passwd | awk -F: '{print $1}' | grep "$user"`)
    if [ -z $cat_user ]
    then
            while true
            do
                    read -p "请输入密码:" passwd1
                    if [ -z $passwd1 ] && [ -z $passwd2 ]
                    then
                            echo "密码不能为空!"
                    else
                            read -p "请确认密码:" passwd2
    
                            if [ $passwd1 = $passwd2 ]
                            then
                                    useradd $user &> /dev/null
                                    if [ $? -eq 0 ]
                                    then
                                            echo "$user创建成功!"
                                            echo "正在设置密码......"
                                            echo $passwd2 | passwd $user --stdin &> /dev/null
                                            if [ $? -eq 0 ]
                                            then
                                                    echo "$user用户密码设置成功!" 
                                                    break
                                            else
                                                    echo "$user用户密码设置失败!"
                                            fi
                                    else
                                            echo "$user创建失败!"
                                    fi
                            else
                                    echo "密码不相同!"
                            fi
                    fi
            done
    else
            echo "$user用户已经存在,请重新创建!"
    fi
    
    
    
    
    

    3.基础命令

    #linux基础命令
    touch user.sh	#创建脚本
    vim user.sh		#编译脚本
    sh user.sh	#执行脚本(user.sh)
    cd /home	#切换到 /homme 目录,查看用户信息
    ls		#查看当前目录下的所有目录或文本
    del user_name	#删除用户(user_name),当创建用户出错时,可以删除出错的用户,再重新执行脚本创建用户
    
    
    展开全文
  • 用户界面设计--有效的人机交互策略
  • 主题:用户体验与交互设计及案例介绍 通用的交互原则 用户设计模型 很好的了解交互设计的介绍
  • 基于用户体验的手机APP交互设计.pdf基于用户体验的手机APP交互设计.pdf基于用户体验的手机APP交互设计.pdf基于用户体验的手机APP交互设计.pdf基于用户体验的手机APP交互设计.pdf基于用户体验的手机APP交互设计.pdf...
  • 基于用户体验的手机APP交互设计.docx基于用户体验的手机APP交互设计.docx基于用户体验的手机APP交互设计.docx基于用户体验的手机APP交互设计.docx基于用户体验的手机APP交互设计.docx基于用户体验的手机APP交互设计....
  • 用户体验交互视觉设计方法(完整版)
  • 面向研究型用户档案网站交互服务优化.docx面向研究型用户档案网站交互服务优化.docx面向研究型用户档案网站交互服务优化.docx面向研究型用户档案网站交互服务优化.docx面向研究型用户档案网站交互服务优化.docx面向...
  • 三维用户界面交互范式研究,张丹洁,侯文君,三维用户界面领域至今仍未出现相对完整的交互范式,对此,本文运用
  • 前后端交互

    千次阅读 2022-02-15 09:24:47
    特点:数据是可变的,数据是动态获取的,通过前后端交互从服务器获取数据 服务器 常用语言:Java、Python、PHP(本套课程要了解的知识) 前后端的关系(客户端和服务器端) 服务器端是为客户端服务的,客户端就

    服务器

    网络相关知识

    网站分类

    • 静态网站
    • 动态网站

    静态网站

    技术:HTML + CSS + JavaScript + jQuery
    特点:网页内容是固定,数据是静态的,可维护性差

    动态网站

    技术:HTML + CSS + JavaScript + jQuery + 前后端交互 + 服务器
    特点:数据是可变的,数据是动态获取的,通过前后端交互从服务器获取数据

    服务器
    常用语言:Java、Python、PHP(本套课程要了解的知识)

    前后端的关系(客户端和服务器端)

    服务器端是为客户端服务的,客户端就是为真正的“客户”来服务的,所以这两者之间不同,但又密切相连,客户端是请求方或者说是指令发出方,而服务器端是响应方
    在这里插入图片描述

    网络地址组成

    1 协议:http、https
    2 域名(IP)
    	1 域名:www.itbaizhan.com
    	2 IP:192.168.1.1
    3端口:80、443、8080
    
    http://www.itbaizhan.com:80
    https://www.itbaizhan.com:443
    

    除了网络地址之外,我们测试要用到的还有本地地址,本地地址是需要一个本地服务器支持:

    本地地址
    1 http://localhost:80
    2 http://127.0.0.1:80

    团队组成

    项目经理:项目的策划人和项目的总负责人,一般都是团队的领导者
    产品经理:规划、设计产品,对产品研发过程的控制
    UI设计师:负责软件的人机交互,操作逻辑,界面美观的整体设计
    前端工程师:负责项目的前端部分,也就是网站的开发(前端、Android、iOS)
    后端工程师:负责项目的服务器端,主要是对数据进行处理,例如:增删改查和分析等
    测试工程师:负责对已经开发的项目进行测试,提出具有问题的部分,提交给前后端修改
    运维工程师:负责项目的后期上线,和正常运行的保障

    XAMPP集成环境

    在这里插入图片描述
    XAMPP 是一个把Apache网页服务器与PHP、Perl及MySQL集合在一起的安装包,允许用户可以在自己的电脑上轻易的建立网页服务器

    官网地址:https://www.apachefriends.org/index.html

    安装XAMPP

    安装过程如一般软件一样,下一步、下一步…完成
    需要注意的是,这里我们注意安装位置,要记住这个位置( C:\xampp )
    在这里插入图片描述
    安装成功之后,启动软件,在我们的课程中,需要启动Apache和MySQL,点击对应的Start即可
    在这里插入图片描述
    软件启动之后,就可以访问了,输入 http://localhost

    在这里插入图片描述
    至此,xampp安装完成

    网络访问

    XAMPP是一个集成的本地服务器,可以支持项目在本地以服务器方式访问,注意,这只是本地或者局域网内可以访问,外网是不能访问的,如需外网访问,需要外部服务器例如:阿里云和腾讯云等提供的服务器

    XAMPP可以运行 php 的项目也可以运行前端网页

    服务器运行前端网页

    1 将项目拷贝到 xampp/htdocs 目录下
    2 访问地址 http://localhost/项目地址

    PHP简介

    什么是 PHP?

    PHP 是强有力的服务器端脚本语言

    PHP 是免费的,并且使用广泛

    PHP能够包含文本、HTML、CSS以及PHP代码,在服务器上执行,结果以纯文本返回浏览器。PHP是从C和Perl发展而来的一种非常简单的语言,但是它看上去更像Java,同时也非常灵活

    PHP 是一门令人惊叹的流行语言!

    1 它强大到足以成为在网络上最大的博客系统的核心(WordPress)!
    2 它深邃到足以运行最大的社交网络(facebook)!
    3 而它的易用程度足以成为初学者的首选服务器端语言!

    PHP 能够做什么?

    • PHP 能够生成动态页面内容
    • PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
    • PHP 能够接收表单数据
    • PHP 能够添加、删除、修改数据库中的数据

    PHP_基本语法(一)

    基本语法

    PHP 文件的默认文件扩展名是 .php

    <?php
        // php代码
    ?>
    

    PHP可以和HTML互相嵌套使用,但是注意,必须在PHP文件中

    PHP 脚本可以放在文档中的任何位置

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible"content="IE=edge">
        <meta name="viewport"content="width=device-width, initialscale=1.0">
        <title>Document</title>
    </head>
    <body>
        <h3>服务器</h3>
        <?php
            echo "Hello World!";
        ?>
    </body>
    </html>
    

    温馨提示
    PHP 中的每个代码行都必须以分号结束。

    运行PHP文件

    PHP文件的运行依赖XAMPP服务器,我们需要把文件放入到XAMPP中的 htdocs 目录下

    然后用网络地址形式访问http://localhost/service/index.php

    PHP的输出命令

    通过 PHP,有两种在浏览器输出文本的基础指令: echoprint

    <?php
        echo "Hello";
     print("World!");
    ?>
    

    PHP 中的注释

    1 单行注释: // 单行注释
    2 单行注释: # 单行注释
    3 多行注释: /* 多行注释 */
    

    PHP_基本语法(二)

    变量

    与 JavaScript 类似,可以给 PHP 变量赋予某个值 x=5 或者表达式 z=x+y

    变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如age、name)

    变量规则

    1 变量以 $ 符号开始,后面跟着变量的名称

    2 变量名必须以字母或者下划线字符开始

    3 变量名只能包含字母数字字符以及下划线(A-z0-9_

    4 变量名不能包含空格

    5 变量名是区分大小写的($y$Y 是两个不同的变量)

    <?php
        $age = 20;
     echo "年龄:".$age;
    ?>
    

    温馨提示
    在PHP中,连接符是 . (点)

    PHP_数据类型(一)

    数据类型
    1 String(字符串)
    2 Integer(整型)
    3 Float(浮点型)
    4 Boolean(布尔型)
    5 Array(数组)
    6 Object(对象)
    7 NULL(空值)

    字符串

    一个字符串是一串字符的序列,就像 “Hello world!”

    <?php
        $hello = "Hello world!";
        echo $hello;
    ?>
    

    整型

    整数是一个没有小数的数字

    温馨提示
    1 整数是没有小数点的
    2 整数可以是正数或负数
    3 整型可以用三种格式来指定:十进制, 十六进制( 以0x 为前缀)或八进制(前缀为 0)

    <?php
        $num = 100;
        var_dump($num);
        $num = -100;
        var_dump($num);
        $num = 0x8C; // 十六进制数
        var_dump($num); // 140
        $num = 047; // 八进制数
        var_dump($num); // 39
    ?>
    

    var_dump() :函数用于输出变量的相关信息

    浮点数

    浮点数是带小数部分的数字

    $num = 10.365;
    var_dump($num);
    

    布尔

    布尔型可以是 truefalse ,布尔型通常用于条件判断

    $x = true;
    $y = false;
    

    PHP_数据类型(二)

    数组可以在一个变量中存储多个值

    语法

    <?php
        $arr = [1,2,3,4];
        $arr = array(1,2,3,4);
        $arr = array('name'=>'冰冰','age'=>'40','love'=>'李晨');
    ?>
    

    输出

    echo $arr; 报错,他只能输出基本数据类型

    可以选择 print_r() 或者是 var_dump()

    print_r($arr)
    var_dump($arr)
    

    获取数组长度

    可以使用 count() 方法

    <?php
        $arr = array('name'=>'冰冰','age'=>'40','love'=>'李晨');
     echo count($arr);
    ?>
    

    数组遍历

    foreach($arr as $key=>$val){
        //
    }
    

    $arr 数组名字

    $key 数组的键值

    $val 数组的键值内容

    <?php
        $arr=[2,3,45];
        //循环
        foreach($arr as $val){
            echo $val.'<br/>';
       }
        foreach($arr as $key=>$val){
            echo $key.$val.'<br/>';
       }
    ?>
    

    PHP_运算符之算数运算符

    在这里插入图片描述

    <?php
        // 加法
        $num1 = 100;
        $num2 = 200;
        echo $num1 + $num2;
        echo "<br/>";
        // 减法
        $num3 = 200;
        $num4 = 300;
        echo $num4 - $num3;
        echo "<br/>";
        // 乘法
        $num5 = 200;
        $num6 = 300;
        echo $num5 * $num6;
        echo "<br/>";
        // 除法
        $num7 = 200;
        $num8 = 400;
        echo $num8 / $num7;
        echo "<br/>";
        // 取余
        $num9 = 5;
        $num10 = 2;
        echo $num9 % $num10;
        echo "<br/>";
        // 取反
        $num11 = 5;
        echo -$num11;
        echo "<br/>";
        // 合并
        $num12 = "Hello";
        $num13 = "World";
        echo $num12.$num13;
    ?>
    

    PHP_运算符之赋值运算符

    在这里插入图片描述

    <?php
        // 赋值
        $zhangsan_age = 20;
        $li_age = $zhangsan_age;
        echo $li_age;
        echo "<br/>";
        // 加等
        $num1 = 10;
        $num2 = 20;
        echo $num1 += $num2;
        echo "<br/>";
        // 减等
        $num1 = 10;
        $num2 = 20;
        echo $num1 -= $num2;
        echo "<br/>";
        // 乘等
        $num1 = 10;
        $num2 = 20;
        echo $num1 *= $num2;
        echo "<br/>";
        // 除等
        $num1 = 10;
        $num2 = 20;
        echo $num1 /= $num2;
        echo "<br/>";
        // 取余等
        $num1 = 10;
        $num2 = 6;
        echo $num1 %= $num2;
        echo "<br/>";
        // 合并等
        $num1 = "Hello";
        $num2 = "World";
        echo $num1 .= $num2;
    ?>
    

    PHP_运算符之递增/递减运算符

    在这里插入图片描述

    <?php
        // 加加在前
        $num1 = 10;
        echo ++$num1;
        echo "<br/>";
        // 加加在后
        $num2 = 10;
        echo $num2++;
        echo "<br/>";
        echo 10 + $num2;
        echo "<br/>";
        // 减减在前
        $num3 = 10;
        echo --$num3;
        echo "<br/>";
        // 减减在后
        $num4 = 10;
        echo $num4--;
        echo "<br/>";
        echo 20 - $num4;
    ?>
    

    PHP_运算符之比较运算符

    在这里插入图片描述

    <?php
        // 等于
        $num1 = 10;
        $num2 = 10;
        var_dump($num1 == $num2);
        echo "<br/>";
        // 绝对等于
        $num1 = 10;
        $num2 = "10";
        var_dump($num1 === $num2);
        echo "<br/>";
        // 不等于
        $num1 = 10;
        $num2 = "10";
        var_dump($num1 != $num2);
        echo "<br/>";
        // 绝对不等于
        $num1 = 10;
        $num2 = "10";
        var_dump($num1 !== $num2);
        echo "<br/>";
        // 大于
        $num1 = 10;
        $num2 = 20;
        var_dump($num1 > $num2);
        echo "<br/>";
          // 小于
        $num1 = 10;
        $num2 = 20;
        var_dump($num1 < $num2);
        echo "<br/>";
        // 大于等于
        $num1 = 10;
        $num2 = 20;
        var_dump($num1 >= $num2);
        echo "<br/>";
        // 小于等于
        $num1 = 10;
        $num2 = 20;
        var_dump($num1 <= $num2);
        echo "<br/>";
    ?>
    

    PHP_运算符之逻辑运算符

    在这里插入图片描述

    <?php
        // 与
        $num1 = 5;
        $num2 = 10;
        var_dump($num1 > $num2 && $num1 <
    $num2);
        echo "<br/>";
        // 或
        $num1 = 5;
        $num2 = 10;
        var_dump($num1 > $num2 || $num1 <
    $num2);
        echo "<br/>";
        // 非
        $flag = false;
        var_dump(!$flag);
    ?>
    

    PHP_条件语句if…else语句

    if 语句:在条件成立时执行代码
    if...else 语句:在条件成立时执行一块代码,条件不成立时执行另一块代码
    if...elseif....else 语句:在若干条件之一成立时执行一个代码块
    

    语法

    if (条件){
        // 条件成立时要执行的代码;
    } else{
        // 条件不成立时执行的代码;
    }
    

    实例

    <?php
        $num1 = 5;
        $num2 = 10;
        $temp = 6;
        if($num1 < $temp && $num2 > $temp){
            echo "都对,100分";
       }else{
            echo "还不太对,仔细检查";
       }
    ?>
    

    PHP_for循环

    语法

    for (初始值; 条件; 增量){
        // 要执行的代码;
    }
    

    初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)

    条件:循环执行的限制条件。如果为 true ,则循环继续。如果为false ,则循环结束

    增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)

    实例

    <?php
        $arr = [10,20,30];
        for($i = 0;$i<count($arr);$i++){
            echo $arr[$i]."<br/>";
       }
    ?>
    

    PHP_foreach 循环

    foreach 循环用于遍历数组

    语法

    foreach ($array as $key=> $value){
       // 要执行代码;
    }
    

    实例

    <?php
        $arr = array("name"=>"张
    三","age"=>"20","sex"=>"男");
        foreach($arr as $key=>$val){
            echo $key."=".$val."<br/>";
       }
    ?>
    

    PHP_函数

    函数是一段可以反复调用的代码块

    语法

    function FNName($name,$age){
        // 代码块
        return;
    }
    

    关键点解析

    function 关键字
    FNName 函数名称(符合变量命名规则)
    ($name,$age) 参数列表
    {} 函数体
    return 返回值
    

    实例

    function getMax($x,$y){
        return $x > $y ? $x : $y;
    }
    getMax(10,20);
    

    温馨提示
    函数最好先声明后使用

    PHP_时间与日期

    在 Web 开发中对日期和时间的使用与处理是必不可少的,例如表单提交的时间、用户登录的时间、数据库中数据的更新和删除的时间等。

    在 PHP中可以使用 date() 函数来格式化一个本地的时间或日期

    基本语法

    date(format,timestamp)
    

    在这里插入图片描述

    获得简单的日期

    date() 函数的格式参数是必需的,它们规定如何格式化日期或时间

    下面列出了一些常用于日期的字符

    1 d - 表示月里的某天(01-31)
    2 m - 表示月(01-12)
    3 Y - 表示年(四位数)
    4 1 - 表示周里的某天
    
    echo "今天是 " . date("Y/m/d") . "<br>";
    echo "今天是 " . date("Y.m.d") . "<br>";
    echo "今天是 " . date("Y-m-d") . "<br>";
    echo "今天是 " . date("l");
    

    获得简单的时间

    下面是常用于时间的字符

    1 h - 带有首位零的 12 小时小时格式
    2 i - 带有首位零的分钟
    3 s - 带有首位零的秒(00 -59)
    4 a - 小写的午前和午后(am 或 pm)
    
    echo "现在时间是 " . date("h:i:sa");
    

    通过 PHP mktime() 创建日期

    语法

    mktime(hour,minute,second,month,day,year)
    

    实例

    $d=mktime(9, 12, 31, 6, 10, 2030);
    echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
    

    PHP_类


    定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作
    对象
    是类的实例
    在这里插入图片描述

    类定义

    每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法

    温馨提示
    类的命名规则符合变量命名规则
    命名符合大驼峰命名法

    示例

    class SimpleClass{
        // 声明属性
        public $value = 'a default value';
        // 声明方法
        public function displayVar() {
            echo $this->value;
       }
    }
    

    使用类(new关键字)

    要创建一个类的实例,必须使用 new 关键字

    $sc = new SimpleClass();
    $sc->displayVar(); // -> 代表调用
    

    温馨提示
    当一个方法在类定义内部被调用时,有一个可用的伪变量$this$this 是一个到当前对象的引用。

    PHP_类的构造函数

    构造函数是类中的一种特殊函数,当使用 new 关键字实例化一个对象时,构造函数将会自动调用。

    构造函数就是当对象被创建时,类中被自动调用的第一个函数,并且一个类中只能存在一个构造函数。和普通函数类似构造函数也可以带有参数,如果构造函数有参数的话,那么在实例化也需要传入对应的参数

    温馨提示
    构造函数中,访问控制器必须使用 public

    实例

    <?php
        class Person{
            // 定义属性
            public $name;
            public $age;
            // 定义构造函数
            public function
    __construct($name,$age){
                $this -> name = $name;
                $this -> age = $age;
           }
            // 定义方法
            public function getInfo(){
                echo "my name is :".$this-
    >name."<br />";
                echo "my age is :".$this->age;
           }
       }
        $zhangsan = new Person("张三",20);
        $zhangsan -> getInfo();
    ?>
    

    PHP_访问控制器

    对类中的属性或方法的访问控制,是通过在前面添加关键字 public 、 protected 或 private 来实现的

    public 所定义的类成员可以在任何地方被访问
    protected 定义的类成员则可以被其所在类的子类和父类访问
    private 定义的类成员则只能被其所在类访问
    
    class MyClass{
        public $name = 'Public name';
        protected $age = 'Protected age';
        private $sex = 'Private sex';
        function printHello(){
            echo $this->name;
            echo $this->age;
            echo $this->sex;
       }
    }
    $obj = new MyClass();
    echo $obj->name; // 这行能被正常执行
    echo $obj->age; // 这行会产生一个致命错误
    echo $obj->sex; // 这行也会产生一个致命错误
    $obj->printHello(); // 输出 Public、Protected和 Private
    

    PHP_类继承

    继承定义,以原有的类为基础,创建一个新类,从而代码复用的目的

    <?php
        class Person {
            public $name;
            public $age;
            public function
    __construct($name,$age){
                $this -> name = $name;
                $this -> age = $age;
           }
            function say() {
                echo "my name is:".$this->name."
    <br />";
                echo "my age is:".$this->age;
           }
       }
            
            // 类的继承
        class Student extends Person {
            var $school; //学生所在学校的属性
            public function
    __construct($name,$age,$school){
                parent::__construct($name,$age);
                  $this -> school = $school;
           }
            function study() {
                echo "my name is:".$this->name."
    <br />";
                echo "my shool is:".$this-
    >school;
           }
       }
        $xiaoming = new Person("小明","高中");
        $xiaoming -> say();
        $xiaoming = new Student("小明",15,"高
    中");
        $xiaoming -> say();
    ?>
    

    继承注意事项

    父类中声明的属性和方法是 publicprotected 是可以继承,但是如果声明为 private 是不可以继承的

    <?php
        class Person {
            public $name;
            public function __construct($name){
                $this -> name = $name;
           }
            protected function sayHello(){
                echo "Hello";
                }
       }
        // 类的继承
        class Student extends Person {
            var $school; //学生所在学校的属性
            public function
    __construct($name,$school){
                parent::__construct($name);
                $this -> school = $school;
           }
            public function study() {
                echo "my name is:".$this->name."<br />";
                echo "my shool is:".$this->school;
           }
            public function getSayHello(){
                $this -> sayHello();
           }
       }
        $xiaoming = new Student("小明","高中");
        $xiaoming -> getSayHello();
    ?>
    

    MySQL_数据库简介

    数据库是“按照数据结构来组织、存储和管理数据的仓库”
    数据库有很多:

    1 MySQL
    2 Oracle
    3 DB2
    4 MongoDB
    5 …

    MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持

    MySQL 的象征符号是一只海豚,代表着 MySQL 数据库的速度、能力、精确和优秀本质
    在这里插入图片描述
    目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多公司都采用 MySQL 数据库以降低成本

    下图展示了项目中一个模块的开发流程:将网站的内容存储在MySQL 数据库中;然后使用 PHP 通过 SQL 查询获取这些内容并以HTML 格式输出到浏览器中显示。或者将用户在表单中输出的数据,通过在 PHP 程序中执行 SQL 查询,将数据保存在 MySQL 数据库中。也可以在 PHP 脚本中接受用户在网页上的其他相关操作,再通过 SQL 查询对数据库中存储的网站内容进行管理

    在这里插入图片描述

    MySQL_数据库可视化工具

    1 XAMPP自带的网页访问形式:phpMyAdmin
    2 Navicat可视化软件

    phpMyAdmin

    第一步:启动MySQL

    在这里插入图片描述

    第二步:进入phpMyAdmin

    访问地址 http://localhost/phpmyadmin/
    在这里插入图片描述

    第三步:结构简介

    下列区域对应不同的功能
    在这里插入图片描述

    Navicat可视化工具

    因为Navicat是付费软件,所以更推荐使用 phpMyAdmin,我们学习期间可以进行试用

    ( 当然可以破解~)在这里插入图片描述

    第一步:安装软件

    与一般软件一样,下一步,下一步…完成
    在这里插入图片描述

    第二步:链接数据库

    点击:文件 -> 新建链接 -> MySQL
    在这里插入图片描述

    第三步:填写数据库信息

    连接名:按自己信息填写即可,然后确定链接
    在这里插入图片描述

    MySQL_创建数据库

    创建数据库,打开 phpMyAdmin 点击新建,进入数据库模块
    在这里插入图片描述
    输入数据库名称,后面是编码格式,默认即可
    在这里插入图片描述
    进入到表的创建,输入表名称和字段数量
    在这里插入图片描述
    输入表结构
    在这里插入图片描述
    输入表数据,存储到数据库中
    在这里插入图片描述
    执行,完成表的创建
    在这里插入图片描述
    利用Navicat查看新建的表结构
    在这里插入图片描述

    MySQL_数据库语句(一)

    数据库语句操作为:增删改查(CRUD)

    数据库语句_增加

    INSERT INTO `user` VALUES
    (null,'ime','helloime','ime@sxt.cn');
    

    温馨提示
    1 字段必须一一对应
    2 id字段为主键自增,不需要指定内容
    3 查询表名或者字段名字需要用反引号(``)

    数据库语句_删除

    DELETE FROM `user` WHERE id=2
    

    温馨提示
    删除的时候,需要指定条件,例如 where id=2

    数据库语句_修改

    UPDATE `user` SET
    `password`='itbaizhan',`email`='itbaizhan@sxt
    .cn' WHERE id=1
    

    MySQL_数据库语句(二)

    数据库语句_查询

    查询整张表

    SELECT * FROM `user`
    

    条件查询

    SELECT * FROM `user` WHERE id=1;
    SELECT * FROM `user` WHERE `username`='ime'
    

    多条件查询

    SELECT * FROM `user` WHERE `username`='ime'
    and `password`='helloime'
    SELECT * FROM `user` WHERE `username`='ime'
    or `username`='iwen'
    

    服务器与数据库交互

    PHP链接MySQL数据库(一)

    php创建数据库连接

    语法: Object mysqli_connect("域名","DB账号","DB密码","DB库名")
    例子: $con = mysqli_connect('localhost','root','','itbaizhan');
    

    判断数据库是否链接成功 var_dump($con);

    向DB中插入数据时包含中文出现乱码的解决方案

    语法: mysqli_query(链接对象,"设置编码格式");
    例子: mysqli_query($con,"set names utf8");
    
    设置client端和server端保持字符编码一致
    

    执行sql语句

    语法: $结果 = $DB连接->query(sql语句);
    例子: $result =mysqli_ query($con,$sql);
    

    返回结果

    语法: $result=mysqli_query($sql)
    例子: print_r($result);
    

    从结果集中获取所有数据

    语法: $data = mysqli_fetch_all(数据库返回结果);
    例子: $data = mysqli_fetch_all($result);
    

    关闭数据库 mysqli_close($con);

    $con =
    mysqli_connect('localhost','root',
    ''
    ,'itbaiz
    han');
    // var_dump($con);
    $sql = "select * from user";
    if($con){
        mysqli_query($con,'set names utf8');
        $result = mysqli_query($con,$sql);
        $data = mysqli_fetch_all($result);
        mysqli_close($con);
    }else{
        echo '数据库连接失败';
    }
    echo '<pre>'; // 格式化
    print_r($data);
    

    PHP链接MySQL数据库(二)

    下列是面向对象风格的写法,如果大家喜欢此种形式,可以选择此种方式来写

    $host     = 'localhost';
    $username = 'root';
    $password = '';
    $dbname   = 'itbaizhan';
    $mysql    = new Mysqli($host, $username,
    $password, $dbname);
    if($mysql -> connect_errno){
        die('数据库连接失败:'.$mysql-
    >connect_errno);
    }else{
        $sql = 'select * from user';         //
    SQL 语句
        $result = $mysql -> query($sql);
        $data = $result -> fetch_all();
        $mysql -> close();
    }
    echo '<pre>';
    print_r($data);
    

    PHP链接数据库实现增删改查

    <?php
        $con =
    mysqli_connect('localhost','root',
    ''
    ,'itbaiz
    han');
        // var_dump($con);
        $sql = "select * from user";
        if($con){
            mysqli_query($con,'set names utf8');
            $result = mysqli_query($con,$sql);
            $data = mysqli_fetch_all($result,MYSQLI_ASSOC);
            mysqli_close($con);
       }else{
         echo '数据库连接失败';
       }
        echo '<pre>'; // 格式化
        print_r($data);
    ?>
    

    PHP+MySQL完成前后端交互

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible"content="IE=edge">
        <meta name="viewport"content="width=device-width, initialscale=1.0">
        <title>Document</title>
    </head>
    <body>
        <form action="index.php" method="post">
           账号:<input type="text"name="username" id="" value="">
            <br>
           密码:<input type="text"name="password" id="" value="">
            <br>
            <input type="submit" value="提交">
        </form>
    </body>
    </html>
    
    $username = $_POST['username'];
    $password = $_POST['password'];
    $con=mysqli_connect('localhost','root','','i
    tbaizhan');
    if($con){
        mysqli_query($con,'set names utf8');
        $sql="select * from user where username='$username' and password='$password'";
        $result=mysqli_query($con,$sql);
        if($result -> num_rows >0 ){
            echo '登陆成功';
       }else{
            echo '账户或者密码错误';
       }
    }else{
        echo '连接失败';
    }
    

    PHP与Ajax交互

    PHP+HTML互相混合跳转其实不利于项目的后期维护
    目前绝大多数的项目是前后端分离

    前后端分离

    前后端分离指的是,前后端各司其职

    前端: 负责页面的搭建与向后台获取数据

    后台: 只负责数据,不需要对前端页面部分负责

    优点

    1 有更好的性能优化
    2 更具有专一性
    3 更利于后期维护

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
         <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initialscale=1.0">
        <title>Document</title>
        <script src="./js/jquery-3.6.0.min.js">
    </script>
    </head>
    <body>
           账号:<input type="text" name="username" id="username" value="">
            <br>
           密码:<input type="text" name="password" id="password" value="">
            <br>
            <input type="submit" value="提交" id="login">
        <script>
            $("#login").click(function () {
                var username = $("#username").val();
                var password = $("#password").val();
                $.ajax({
                    type: 'get',
                    url:"http://localhost/php_serve/php19/index.php",
                    data: {
                        username: username,
                        password: password
                         },
                    success: function (res) {
                      
    console.log(JSON.parse(res));
                   }
               });
           })
        </script>
    </body>
    </html>
    
    $username = $_GET['username'];
    $password = $_GET['password'];
    $con=mysqli_connect('localhost','root','','itbaizhan');
    if($con){
        mysqli_query($con,'set names utf8');
        $sql="select * from user where username='$username' and password='$password'";
        $result=mysqli_query($con,$sql);
        if($result -> num_rows >0 ){
            $data =
    mysqli_fetch_all($result,MYSQLI_ASSOC);
            echo json_encode($data);
       }else{
            echo json_encode((array("msg"=>"暂无数据")));
       }
    }else{
     echo json_encode((array("msg"=>"链接失败")));
    }
    

    网络请求AJAX

    AJAX基础

    AJAX简介

    AJAX不是JavaScript的规范,它只是一个哥们“发明”的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行网络请求

    AJAX是一种技术方案,但并不是一种新技术。它依赖现有的CSS/HTML/JavaScript,而其中最核心的依赖是浏览器提供的 XMLHttpRequest 对象,是这个对象使得浏览器可以发出HTTP请求与接收HTTP响应。实现了在 页面不刷新页面的情况下和服务器进行数据交互。

    AJAX请求步骤

    1 创建 XMLHttpRequest 对象
    2 发出 HTTP 请求
    3 接收服务器传回的数据
    4 更新网页数据
    

    第一步:创建 XMLHttpRequest 对象

    XMLHttpRequest 本身是一个构造函数,可以使用 new 命令生成实例。它没有任何参数

    var xhr = new XMLHttpRequest();
    

    第二步:发出 HTTP 请求

    一旦新建实例,就可以使用 open() 方法发出 HTTP 请求

    xhr.open('GET',
    'http://www.itbaizhan.com/page.php');
    xhr.send();
    

    第三步:接收服务器传回的数据

    指定函数,监听通信状态( readyState 属性)的变化

    xhr.onreadystatechange = handleStateChange;
    function handleStateChange() {
      // ...
    }
    

    第四步:更新网页数据

    if (xhr.readyState === 4){
        if (xhr.status === 200){
            console.log(xhr.responseText);
       } else {
            console.error(xhr.statusText);
       }
    }
    

    在这里插入图片描述

    完整代码

    var xhr = new XMLHttpRequest();
    xhr.open('GET',
    'http://www.itbaizhan.com/page.php');
    xhr.send();
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                console.log(xhr.responseText);
           } else {
                console.error(xhr.statusText);
           }
       }
    }
    

    前后端交互数据格式

    前后端交互是需要带有格式化的数据,目前就是XML和JSON两种格式,不过XML也已经过时了

    XML和JSON都是WEB传输过程中数据的格式,其中JSON 使用比较广泛,主要用来前后端交互数据

    XML格式

    XML(Extensible Markup Language)扩展标记语言

    <?xml version="1.0" encoding="UTF-8"?>
    <note>
      <to>beijing</to>
      <from>taiyuan</from>
      <heading>itbaizhan</heading>
      <body>learn it</body>
    </note>
    

    JSON格式

    JSON全称JavaScaript对象表示法(JavaScript Object Notation),是存储和交换文本信息的语法。具有文本量更小、更快和更易解析的特点。

    在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

    对象表示为键值对
    数据由逗号分隔
    花括号保存对象
    方括号保存数组

    {
      "name":"xie",
     "sex" :"man",
     "id" : "66"
    }
    

    复杂的数据格式

    [
       {
       "name":"sxt",
       "sex" :"man",
       "id" : "14"
       },
       {
            "name":"itbaizhan",
            "sex" :"man",
            "id" : "4"
       },
       {
            "name":"iwen",
            "sex" :"man",
            "id" : "25"
       }
    ]
    

    获取JSON格式数据转换为JS对象

    var xhr = new XMLHttpRequest();
    xhr.open('GET',
    'http://iwenwiki.com:3000/search?
    keywords=solo');
    xhr.send();
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
              
    console.log(JSON.parse(xhr.responseText));
           } else {
                console.error(xhr.statusText);
           }
       }
    }
    

    AJAX请求方式

    AJAX请求方式主要有两种方式

    1 GET
    2 POST

    GET请求方式

    特点
    1 参数携带,会在浏览器输入框上显示
    2 统一资源定位

    var xhr = new XMLHttpRequest();
    xhr.open('GET',
    'http://iwenwiki.com:3000/search?
    keywords=solo');
    xhr.send();
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
              
    console.log(JSON.parse(xhr.responseText));
           } else {
                console.error(xhr.statusText);
           }
       }
    }
    

    POST请求方式

    特点
    1 参数不会显示在浏览器输入框中,安全性更高
    2 参数数量长度大小不受限制

    var xhr = new XMLHttpRequest();
    xhr.open('POST',
    'http://iwenwiki.com/api/blueberrypai/login.
    php');
    var
    data='user_id=iwen@qq.com&password=iwen123&v
    erification_code=crfvw';  
    xhr.setRequestHeader('contenttype','application/x-www-form-urlencoded');
    xhr.send(data);
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
              
    console.log(JSON.parse(xhr.responseText));
           } else {
                console.error(xhr.statusText);
           }
       }
    }
    

    回调函数

    概念

    回调函数就是函数作为另一个函数的参数,等待另一个函数的调用之后才会执行的函数
    简单的说:”一个等待被调用的函数“

    function say(callback,name){
        fn(name);
    }
    say(function(name){
        console.log(name);
    },"itbaizhan")
    

    事件

    事件也可以理解为回调函数

    var btn = document.getElementById("btn");
    btn.onclick = function(){
        console.log("事件");
    }
    

    回调函数应用场景

    在网络请求这里,回调函数是最常见的

    function myAjax(success){
        var xhr = new XMLHttpRequest();
        xhr.open('GET',
    'http://iwenwiki.com:3000/search?
    keywords=solo');
        xhr.send();
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                  
    success(JSON.parse(xhr.responseText));
               } else {
                    console.log(xhr.statusText);
               }
           }
       }
    }
    myAjax(function(data){
        console.log(data);
    })
    

    封装AJAX思路

    把共同的同样的功能封装成一个函数 ,使用的时候直接调用函数名就好了

    1 函数名: ajax
    2 参数:对象类型 jsonData
    
    {
        url:"url地址(接口)",
        data:"接口参数",
        success:"成功回调函数",
        type:"请求方式:get|post"  
    }
    

    封装AJAX

    具体实现

    function ajax(jsonData) {
        var xhr = new XMLHttpRequest();
        var newData = '';
        if (jsonData.data) {
            var str = '';
            var arr = [];
            for (var key in jsonData.data) {
                str = key + '=' + jsonData.data[key];
                arr.push(str);
           }
            newData = arr.join('&');//最终处理的数据拼接结果
       }
        if (jsonData.type.toLowerCase() == 'get') {
            xhr.open('get', jsonData.url + '?' + newData, true);
            xhr.send();
       } else if (jsonData.type.toLowerCase()== 'post') {
         xhr.open('post', jsonData.url,true);
            xhr.setRequestHeader('contenttype','application/x-www-form-urlencoded');
            xhr.send(newData);
       }
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                  
    jsonData.success(xhr.responseText);
               }
           }
       }
    }
    

    什么是跨域

    在了解跨域之前,首先要知道什么是同源策略(same-origin
    policy)。简单来讲同源策略就是浏览器为了保证用户信息的安
    全,防止恶意的网站窃取数据,禁止不同域之间的JS进行交互。对于浏览器而言只要域名、协议、端口其中一个不同就会引发同源策略,从而限制他们之间如下的交互行为,其中就包含AJAX请求不能发送

    在这里插入图片描述

    温馨提示
    如果看到上述错误信息,证明出现了跨域

    什么情况下会产生跨域

    跨域的严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当作是跨域。
    在这里插入图片描述

    为什么要跨域

    既然有安全问题,那为什么又要跨域呢? 有时公司内部有多个不同的子域,比如一个是 location.company.com ,而应用是放在 app.company.com ,这时想从 app.company.com 去访问 location.company.com 的资源就属于跨域

    跨域解决方案之JSONP

    跨域的解决方案有很多种

    1 通过jsonp跨域
    2 跨域资源共享(CORS)
    3 document.domain + iframe跨域
    4 postMessage跨域
    5 nginx代理跨域
    6 ...
    
    var script =
    document.createElement('script');
    // 传参一个回调函数名给后端,方便后端返回时执行这个在
    前端定义的回调函数
    script.src = 'https://p.3.cn/prices/mgets?
    callback=price&skuIds=10021717207869';
    document.head.appendChild(script);
    // 回调执行函数
    function price(res) {
        console.log(res);
    }
    

    跨域解决方案之CORS

    CORS是一个W3C标准,全称是“跨域资源共享”(Cross-origin
    resource sharing)

    普通跨域请求:只服务端设置Access-Control-Allow-Origin即可,前端无须设置

    实现CORS主要在于 服务器 的设置,关键在于服务器 HTTP响应报文首部 的设置。前端部分大致还是跟原来发AJAX请求没什么区别,只是需要对AJAX进行一些相关的设置。

    CORS参考文档
    http://www.ruanyifeng.com/blog/2016/04/cors.html

    存在跨域问题

    ajax({
        type:"get",
      
    url:"http://iwenwiki.com/api/FingerUnion/li
    st.php",
        data:{
            id:10
       },
        success:function(res){
            console.log(res);
       }
    })
    

    不存在跨域问题

    ajax({
        type:"get",
      
    url:"http://iwenwiki.com/api/blueberrypai/g
    etIndexBanner.php",
        data:{
            id:10
       },
        success:function(res){
            console.log(res);
       }
    })
    

    jQuery AJAX

    jQuery提供了AJAX的封装处理,可以让我们更容易的实现网络请求

    GET请求

    $.ajax({
         type:"get",
        
    url:"http://iwenwiki.com/wapicovid19/guonei.
    php",
         data:{
             city:"北京"
         },
         success:function(data){
             console.log(JSON.parse(data));
         },
         error:function(err){
             console.log(err);
         }
     })
    

    POST请求

    $.ajax({
        type:"post",
      
    url:"http://iwenwiki.com/api/blueberrypai/l
    ogin.php",
        data:{
            user_id:"iwen@qq.com",
            password:"iwen123",
            verification_code:"crfvw"
            },
        success:function(data){
            console.log(data);
       },
        error:function(err){
            console.log(err);
       }
    })
    

    jQuery AJAX实现Toast提示框

    $.ajax({
        type:"post",
      
    url:"http://iwenwiki.com/api/blueberrypai/l
    ogin.php",
    data:{
            user_id:"iwen@qq.com",
            password:"iwen123",
            verification_code:"crfvw"
       },
        success:function(data){
            console.log(data);
       },
        error:function(err){
            console.log(err);
       },
        beforeSend:function(){
            console.log("发送数据");
            $("#toast").css("opacity","1");
       },
        complete:function(){
            console.log("完成");
            $("#toast").css("opacity","0");
       }
    })
    

    jQuery AJAX 快捷方法

    jQuery还增加了一些网络请求的快捷方式,用起来更加的方便

    1 $.get()
    2 $.post()
    3 $.getJSON()
    

    $.get()

    $.get("http://iwenwiki.com/wapicovid19/guonei
    .php",{
        city:"北京"
    },function(data){
        console.log(data);
    })
    

    $.post()

    $.post("http://iwenwiki.com/api/blueberrypai/
    login.php",{
        user_id:"iwen@qq.com",
        password:"iwen123",
        verification_code:"crfvw"
    },function(data){
        console.log(data);
    })
    

    $.getJSON()

    $.getJSON("http://iwenwiki.com/wapicovid19/gu
    onei.php",{
        city:"北京"
    },function(data){
        console.log(data);
    })
    

    jQuery Ajax跨域处理

    $.ajax({
        type: "get",
        url: "https://p.3.cn/prices/mgets?
    callback=getPrice&skuIds=100003792155",
        dataType: "jsonp",
        jsonp: "callback",//传递给请求处理程序或页面
    的,标识jsonp回调函数名(一般为:callback)
        jsonpCallback: "getPrice",//callback的
    function名称
        success: function (data) {
            console.log(data);
       },
        error: function () {
            alert('fail');
       }
    });
    

    网络请求实现用户信息读取

    数据库结构

    在这里插入图片描述

    后端实现

    $nick = $_GET["nick"];
    $con =
    mysqli_connect("localhost","root","","itbaiz
    han");
    if($con){
        mysqli_query($con,"set names utf8");
        $sql = "select * from userinfo where nick='$nick'";
        $result = mysqli_query($con,$sql);
        $data = mysqli_fetch_all($result,MYSQLI_ASSOC);
        mysqli_close($con);
        if($data){
            echo json_encode($data);
       }else{
            echo json_encode(array("msg"=>"暂无数据"));
       }
    }else{
        echo "连接数据库失败";
    }
    

    前端实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible"content="IE=edge">
        <meta name="viewport"content="width=device-width, initialscale=1.0">
        <title>Document</title>
        <script src="./jquery-3.6.0.js">
    </script>
    </head>
    <body>
        <input id="nick" type="text"placeholder="输入昵称">
    <button id="btn">查询</button>
        <p id="sign"></p>
        <script>
            $("#btn").click(function () {
                $.ajax({
                    type: "get",
                    url: "../server/index.php",
                    data: {
                        nick: $("#nick").val()
                   },
                    success: function (data) {
                        data = JSON.parse(data)
                        if (data.msg) {
                          
    $("#sign").html(data.msg);
                       } else {
                            for (var i = 0; i <data.length; i++) {
                              
    $("#sign").html(data[i].sign);
                           }
                       }
                   }
               })
           })
        </script>
    </body>
    </html>
    

    前后端交互实操-百度搜索联想

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initialscale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div class="container">
        <input type="text" id="content">
            <input type="submit" id="btn" value="百度一下">
        </div>
        <div id="box"></div>
        <script>
            var content = document.getElementById("content");
            var box = document.getElementById("box");
            var script;
            content.oninput = function (e) {
                script = document.createElement("script");
                script.src = "https://suggestion.baidu.com/su?cb=search&wd=" + e.target.value;
              
    document.head.appendChild(script);
           }
            function search(data) {
                box.innerHTML = "";
                for(var i = 0;i<data.s.length;i++){
                    var text = document.createElement("p");
                    text.innerHTML = data.s[i]
                    box.appendChild(text);
               }
                script.remove();
           }
        </script>
        </body>
    </html>
    

    数据格式化工具与测试工具

    测试工具-Postman

    Postman 工具的安装与使用有三种方式

    1 chrome应用商店下载安装
    2 官网下载:> https://www.postman.com/
    3 网站直接使用测试

    格式化工具-JSON Viewer

    JSON Viewer 有两种安装方式

    1 chrome应用商店下载安装
    2 chrome商店工具店 https://chrome.zzzmh.cn/#/index

    前后端交互实操-登录

    登录服务器实现

    $username = $_POST["username"];
    $password = $_POST["password"];
    $con = mysqli_connect("localhost","root","","itbaizhan");
    if($con){
        mysqli_query($con,"set names utf8");
        $sql = "select * from user where username='$username' and password='$password'";
        $result = mysqli_query($con,$sql);
        $data = mysqli_fetch_all($result,MYSQLI_ASSOC);
        mysqli_close($con);
        if($data){
            echo json_encode(array(
                "user"=>$data,
                "msg"=>true
           ));
       }else{
            echo json_encode(array(
                "msg"=>false,
                "user"=>"暂无数据"
           ));
       }
    }else{
        echo "连接数据库失败";
    }
    

    登录前端实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible"content="IE=edge">
        <meta name="viewport"content="width=device-width, initialscale=1.0">
        <title>Document</title>
        <script src="./jquery-3.6.0.js">
    </script>
        <style>
            .container{
                width: 400px;
                margin: 0 auto;
                margin-top: 200px;
           }
        </style>
    </head>
    <body>
        <div class="container">
            <form>
                <div>
                    <label for="username">用户名:</label>
                    <input type="text" id="username" placeholder="用户名">
                </div>
                <div>
                    <label for="password">密码:</label>
                    <input type="password" id="password" placeholder="密码"></div>
                <input type="submit" id="btn">
            </form>
        </div>
        <script>
            $("#btn").click(function(e){
                e.preventDefault();
                var username = $("#username").val();
                var password = $("#password").val();
                $.ajax({
                    type:"post",
                    url:"../server/login.php",
                    data:{
                        username:username,
                        password:password
                   },
                    success:function(data){
                      
    console.log(JSON.parse(data));
                   }
               })
           })
        </script>
    </body>
    </html>
    

    前后端交互实操-注册

    注册服务器实现

    $username = $_POST["username"];
    $password = $_POST["password"];
    $email = $_POST["email"];
    $con =
    mysqli_connect("localhost","root","","itbaiz
    han");
    if($con){
        mysqli_query($con,"set names utf8");
        $sql = "insert into user values (null,'$username','$password','$email')";
        $result = mysqli_query($con,$sql);
        mysqli_close($con);
        if($result){
            echo json_encode(array(
                "msg"=>"注册成功",
                "code"=>2001
                ));
       }else{
            echo json_encode(array(
                "msg"=>"注册失败",
                "code"=>4001
           ));
       }
    }else{
        echo "连接数据库失败";
    }
    

    注册前端实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible"content="IE=edge">
        <meta name="viewport"content="width=device-width, initialscale=1.0">
        <title>Document</title>
        <script src="./jquery-3.6.0.js">
    </script>
        <style>
            .container{
                width: 400px;
                margin: 0 auto;
                margin-top: 200px;
           }
            </style>
    </head>
    <body>
        <div class="container">
            <form>
                <div>
                    <label for="username">用户名:</label>
                    <input type="text"id="username" placeholder="用户名">
                </div>
                <div>
                    <label for="password">密码:</label>
                    <input type="password"id="password" placeholder="密码">
                </div>
                <div>
                    <label for="password">邮箱:</label>
                    <input type="email"id="email" placeholder="请输入邮箱">
                </div>
                <input type="submit" id="btn">
            </form>
        </div>
        <script>
            $("#btn").click(function(e){
                e.preventDefault();
                var username = $("#username").val();
                var password = $("#password").val();
                var email = $("#email").val();
                $.ajax({
                    type:"post",
                  
                    url:"../server/register.php",
                    data:{
                        username:username,
                        password:password,
                        email:email
                   },
                    success:function(data){
                      
    console.log(JSON.parse(data));
                   }
               })
           })
        </script>
    </body>
    </html>
    
    展开全文
  • OpcEnum交互用户不可选解决办法

    千次阅读 2021-05-20 16:47:18
    三、验证OpcEnum交互用户是否可选 一、使用超级管理员打开命令提示符(CMD) 二、重新注册OpcEnum.exe ①首先检查OpcEnum.exe存在哪个文件夹; ②如果OpcEnum.exe存在System32目录下,则在CMD中执行以下命令...
  • Bootstrap学习视频之 Bootstrap 用户界面与交互架构 用户界面与交互架构
  • linux 运维之新建用户,非交互式修改密码,用户用户组没有啥要求,就是新建普通用户,如果有特殊要有还需要添加参数 使用: useradd admin 新建用户 使用非交互式修改密码: echo 1234.com | passwd --stdin ...
  • 问题详情DCOM配置里 自己创建的服务属性里 交互用户和启动用户 是灰色的?迷茫了~DCOM配置里 自己创建的服务属性里 交互用户和启动用户 是灰色的?迷茫了~作者: thesuper发布时间: 2007-05-261. 运行NT服务器上...
  • 用户体验与交互案例

    2013-02-26 00:50:34
    主要介绍用户体验,用户可以从中学习大量工程中的用户界面知识
  • 这样的场景在使用Dockerfile时,不能使用交互方式进行镜像制作,这时候就需要使用非交互的方式添加用户并修改用户密码。 使用方法 方法一:passwd --stdin 使用方法: echo password | passwd --stdin username ...
  • 用户与浏览器的交互过程

    千次阅读 2022-05-05 14:24:17
    从一个 url地址输入到页面呈现在用户面前 发什么了什么? DNS解析:将域名解析为IP地址 Tcp的三次连接:tcp的三次挥手{ 浏览器是否可以发送请求 服务端浏览段可以发送请求 浏览器端向服务器发送请求 } 发送HTTP请求...
  • 本文根据用户之间交互对象的不同,将其交互划分为用户之间、用户与其替身、用户与另一用户替身及替身之间四个交互层,并通过为用户在协同环境中的人物代表-3D替身(avatar)绑定智能代理,初步建立了一套比较完善的...
  • 电信设备-可信用户交互.zip
  • 人机交互及界面设计序言

    千次阅读 2019-09-20 14:52:28
    前期工作: 基本的开发软件: Dreamwearer CS6+\Webstorm,Photoshop CS6+; 浏览器: Chrome,FireFox,IE8+ 常用的网站: ...网络Blog: CSDN,OSCHINA,掘金 ...一、人机交互界面的定义: 人机交互界面分为人机交互和人机界...
  • 鼻祖中的鼻祖,为用户体验和交互设计提供高效思路。
  • 配置DCOM时,交互用户灰色不可选

    千次阅读 2021-03-12 15:57:17
    配置DCOM时,交互用户灰色不可选 原因 OpcEnum为被注册。 解决方法 找到OpcEnum.exe说在目录。在开始运行中输入 C:\Windows\SysWOW64\OpcEnum.exe /regserver 注册成功后,交互用户可选。
  • python与用户交互、数据类型

    千次阅读 2020-12-20 05:50:49
    一、与用户交互1.什么是用户交互:程序等待用户输入一些数据,程序执行完毕反馈信息。2.如何使用在python3中使用input,input会将用户输入的如何内容存为字符串;在python中分为两种,raw input和input,raw input和...
  • CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.removeSessionCookie();...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,354,071
精华内容 541,628
关键字:

交互用户