PHP入门之局域网多站点访问、带参数请求、Json数据、Xml数据

来源:互联网 发布:天津绫致时装淘宝真假 编辑:程序博客网 时间:2024/05/20 14:44

1,局域网多站点访问

1,有一个yline.php文件,本地建立了两个站点,localhost和yline;

本地浏览器打开方式:
1)localhost:80/test/yline.php
2)yline:8080/yline.php

2,局域网默认访问的是80端口,所以需要配置以下几点,才能访问多个
1)监听端口

2)多站点配置,修改对应的端口


3,局域网,打开方式则为
1)ip:80/test/yline.php
2)ip:8080/yline.php

2,带参数请求

1,客户端请求链接(电脑ip:192.168.2.107)

  1. http://192.168.2.107/test_space/TestJson170625/xml/SampleXml.php?format=呵呵哒
2,服务器端处理方式
  1. $message = isset($_GET['format']) ? $_GET['format'] : "未上传数据"; // 客户端上传的数据

3,Json数据

1,客户端请求链接(电脑ip:192.168.2.107)

  1. http://192.168.2.107/test_space/TestJson170625/json/SampleJson.php

2,请求返回数据
  1. {
  2. "code": 0,
  3. "message": "成功",
  4. "data": {
  5. "id": 1,
  6. "name": "yline"
  7. }
  8. }

3,PHP处理代码
// BaseCodeJson.php
  1. <?php
  2. class Response
  3. {
  4. /**
  5. * 按Json方式输出通信数据
  6. *
  7. * @param number $code
  8. * 状态吗
  9. * @param string $message
  10. * 提示信息
  11. * @param array $data
  12. * 数据
  13. */
  14. public static function json($code = 0, $message = '', $data = array())
  15. {
  16. if (! is_numeric($code))
  17. {
  18. return '';
  19. }
  20. // 返回数据
  21. $result = array(
  22. 'code' => $code,
  23. 'message' => $message,
  24. 'data' => $data
  25. );
  26. echo json_encode($result);
  27. exit();
  28. }
  29. }
// SampleJson.php
  1. <?php
  2. require_once 'BaseCodeJson.php';
  3. $arr = array(
  4. 'id' => 1,
  5. 'name' => 'yline'
  6. );
  7. Response::json(0, "成功", $arr);

4,Xml数据

1,客户端请求链接(电脑ip:192.168.2.107)

  1. http://192.168.2.107/test_space/TestJson170625/xml/SampleXml.php

2,返回数据
  1. <root>
  2. <code>0</code>
  3. <message>未上传数据</message>
  4. <data>
  5. <id>1</id>
  6. <name>yline</name>
  7. </data>
  8. </root>

3,注意事项
1)返回Xml时,Php文件,格式
正确:<?php
错误:<?php   ?>
如果,选择错误格式,返回xml开头会多几行,然后解析不出来了.
2)返回xml,需要设置:
header("Content-Type:text/xml"); // 让网页直接展示xml格式,而不仅仅是内容

4,PHP代码
// BaseCodeXml.php
  1. <?php
  2. class Response
  3. {
  4. public static function xml()
  5. {
  6. $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
  7. $xml .= "<root>\n";
  8. $xml .= "<code>200</code>\n";
  9. $xml .= "<message>数据返回成功</message>\n";
  10. $xml .= "<data>\n";
  11. $xml .= "<id>200</id>\n";
  12. $xml .= "<name>yline</name>\n";
  13. $xml .= "</data>\n";
  14. $xml .= "</root>";
  15. return $xml;
  16. }
  17. /**
  18. *
  19. * @param number $code
  20. * @param string $message
  21. * @param array $data
  22. * array不能为数字
  23. * @return string
  24. */
  25. public static function xmlEncode($code = 0, $message = '', $data = array())
  26. {
  27. if (! is_numeric($code))
  28. {
  29. return '';
  30. }
  31. // 返回数据
  32. $result = array(
  33. 'code' => $code,
  34. 'message' => $message,
  35. 'data' => $data
  36. );
  37. $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
  38. $xml .= "<root>\n";
  39. $xml .= self::xmlToEncode($result);
  40. $xml .= "</root>";
  41. return $xml;
  42. }
  43. /**
  44. *
  45. * @param unknown $data
  46. * 数组不能为数字,否则出错
  47. * @return string
  48. */
  49. public static function xmlToEncode($data)
  50. {
  51. $tempXml = "";
  52. foreach ($data as $key => $value)
  53. {
  54. $tempXml .= "<{$key}>";
  55. if (is_array($value))
  56. {
  57. $tempXml .= self::xmlToEncode($value);
  58. } else
  59. {
  60. $tempXml .= $value;
  61. }
  62. $tempXml .= "</{$key}>\n";
  63. }
  64. return $tempXml;
  65. }
  66. }
// SampleXml.php
  1. <?php
  2. /**
  3. * 1,组装字符串
  4. * 2,DomDocument
  5. * 3,XMLWriter
  6. * 4,SimpleXml
  7. */
  8. require_once 'BaseCodeXml.php';
  9. header("Content-Type:text/xml"); // 让网页直接展示xml格式,而不仅仅是内容
  10. /* echo Response::xml(); // 字符串拼接 */
  11. $arr = array(
  12. 'id' => 1,
  13. 'name' => 'yline'
  14. );
  15. $message = isset($_GET['format']) ? $_GET['format'] : "未上传数据"; // 客户端上传的数据
  16. echo Response::xmlEncode(0, $message, $arr); // 通过封装

有技术上的问题,或者想法,欢迎来交流
QQ联系:957339173@qq.com  // 备注 CSDN
github:https://github.com/yline


















原创粉丝点击