选项管理

在 admin 目录中添加一个 options.php 文件,处理获取和更新选项业务:

处理流程

Created with Raphaël 2.2.0开始是否为 GET 请求请求参数是否包含 key获取全部选项响应 JSON结束获取指定 key 对应的 value是否缺少必要参数判断是否存在该 key更新指定 key 对应的 value新增 optionyesnoyesnoyesnoyesno

具体实现

 
xxxxxxxxxx
66
1
<?php
2
/**
3
 * 获取或更新配置选项
4
 */
5
6
require '../functions.php';
7
8
// 设置响应类型为 JSON
9
header('Content-Type: application/json');
10
11
// 如果是 GET 请求,则获取指定配置
12
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
13
  if (empty($_GET['key'])) {
14
    // echo json_encode(array(
15
    //   'success' => false,
16
    //   'message' => 'option key required'
17
    // ));
18
    // exit; // 不再往下执行
19
    // 查询全部数据
20
    $data = xiu_query('select * from `options`');
21
    echo json_encode(array(
22
      'success' => true,
23
      'data' => $data
24
    ));
25
    exit; // 不再往下执行
26
  }
27
  // 查询数据
28
  $data = xiu_query(sprintf("select `value` from `options` where `key` = '%s' limit 1;", $_GET['key']));
29
  // 返回
30
  if (isset($data[0][0])) {
31
    echo json_encode(array(
32
      'success' => true,
33
      'data' => $data[0][0]
34
    ));
35
  } else {
36
    echo json_encode(array(
37
      'success' => false,
38
      'message' => 'option key does not exist'
39
    ));
40
  }
41
  exit; // 不再往下执行
42
}
43
44
// 否则是更新或新增配置
45
46
if (empty($_POST['key']) || empty($_POST['value'])) {
47
  // 关键数据不存在
48
  echo json_encode(array(
49
    'success' => false,
50
    'message' => 'option key and value required'
51
  ));
52
  exit; // 不再往下执行
53
}
54
55
// 判断是否存在该属性
56
$exist = xiu_query(sprintf("select count(1) from `options` where `key` = '%s'", $_POST['key']))[0][0] > 0;
57
58
if ($exist) {
59
  $affected_rows = xiu_execute(sprintf("update `options` set `value` = '%s' where `key` = '%s'", $_POST['value'], $_POST['key']));
60
} else {
61
  $affected_rows = xiu_execute(sprintf("insert into `options` values (null, '%s', '%s')", $_POST['key'], $_POST['value']));
62
}
63
64
echo json_encode(array(
65
  'success' => $affected_rows > 0
66
));

🚩 源代码: step-75