📜  服务器端脚本和客户端脚本之间的区别(1)

📅  最后修改于: 2023-12-03 15:10:38.782000             🧑  作者: Mango

服务器端脚本和客户端脚本之间的区别
概述

在网络应用程序中,服务器端脚本和客户端脚本分别负责不同的功能。服务器端脚本主要用于处理数据和逻辑,客户端脚本则用于处理页面展示和用户交互。

服务器端脚本

服务器端脚本是运行在服务器上的脚本,用于处理数据和逻辑。服务器端脚本可以使用多种编程语言编写,如PHP、Python、Java等。服务器端脚本主要用于以下方面:

  • 数据查询和存储
  • 网站逻辑控制
  • 用户身份验证
  • 数据加密和解密

数据查询和存储

服务器端脚本可以使用数据库进行数据查询和存储。常见的数据库包括MySQL、PostgreSQL、MongoDB等。服务器端脚本通过数据库连接,执行SQL语句进行数据查询和存储。

<?php
$con = mysqli_connect("localhost","my_user","my_password","my_db");
// 检查连接
if (mysqli_connect_errno()) {
  echo "连接失败: " . mysqli_connect_error();
  exit();
}

// 查询示例
$sql = "SELECT * FROM users";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
  // 输出数据
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
  }
} else {
  echo "0 结果";
}

mysqli_close($con);
?>

网站逻辑控制

服务器端脚本可以控制网站的逻辑流程。例如:用户注册登录,根据用户身份和权限进行网站功能访问的授权等。

<?php
session_start();
if(isset($_SESSION["username"])){
    echo "欢迎 " . $_SESSION["username"] . "!";
    // 显示网站功能按钮
} else {
    // 显示登录页面
}
?>

用户身份验证

通过服务器端脚本,可以对用户进行身份验证,保证只有授权用户才能访问特定的功能。

<?php
session_start();
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}

// 验证用户名和密码
$sql = "SELECT id FROM users WHERE username='$username' and password='$password'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // 保存用户信息到session
  $_SESSION["user_id"] = $result->fetch_assoc()["id"];
  echo "登录成功";
} else {
  echo "用户名或密码错误";
}

$conn->close();
?>

数据加密和解密

服务器端脚本可以对数据进行加密和解密,保证数据的安全性。常见的加密算法有MD5、SHA1、AES等。

<?php
// MD5加密示例
$hash = md5($password);

// AES加密解密示例
function encrypt($data, $key) {
    $key = md5($key);
    $iv = md5($key);
    $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, 0, $iv);
    return $encrypted;
}

function decrypt($encrypted, $key) {
    $key = md5($key);
    $iv = md5($key);
    $decrypted = openssl_decrypt($encrypted, 'AES-256-CBC', $key, 0, $iv);
    return $decrypted;
}
?>
客户端脚本

客户端脚本是运行在客户端(通常是浏览器)上的脚本,用于处理页面展示和用户交互。客户端脚本主要使用JavaScript编写。

页面展示

客户端脚本可以用于控制网页元素,以达到页面展示的效果。例如:显示/隐藏;动态更改样式等。

// 显示/隐藏示例
function toggleDisplay() {
    var element = document.getElementById("myDiv");
    if (element.style.display === "none") {
        element.style.display = "block";
    } else {
        element.style.display = "none";
    }
}

// 动态更改样式示例
function changeStyle() {
    var element = document.getElementById("myDiv");
    element.style.fontSize = "30px";
    element.style.color = "red";
}

用户交互

客户端脚本可以用于处理用户交互,例如:表单验证;异步加载数据等。

// 表单验证示例
function validateForm() {
    var username = document.forms["myForm"]["username"].value;
    var password = document.forms["myForm"]["password"].value;
    if (username === "" || password === "") {
        alert("请输入用户名和密码");
        return false;
    }
}

// 异步加载数据示例
function loadXMLDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("myDiv").innerHTML =
            this.responseText;
        }
    };
    xhttp.open("GET", "ajax_info.txt", true);
    xhttp.send();
}
总结

服务器端脚本和客户端脚本各有优劣,根据不同的需求可以选择合适的脚本进行开发。服务器端脚本主要用于处理数据和逻辑,保证数据的安全和可靠;客户端脚本则主要用于页面展示和用户交互,提升用户体验。