开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 937|回复: 5
收起左侧

[已解决] PHP问题

 关闭 [复制链接]

结帖率:99% (392/395)
发表于 2020-2-14 13:19:00 | 显示全部楼层 |阅读模式   湖南省株洲市
10精币
<?php
        $f='dutang.txt';   //文件名
        $a=file($f);  //把文件的所有内容获取到数组里面
        $n=count($a); //获得总行数
        $rnd=rand(0,$n);    //产生随机行号
        $rnd_line=$a[$rnd]; //获得随机行
        $rnd_line=str_replace("[HHF]","<br/>",$rnd_line);//替换换行符
?>
<?php
infoAction();

/**
*
     * @todo 根据UID返回用户信息
     * @url /v2/get/info
     * @type GET
     * @param int uid 用户ID
     * @param int time 当前时间戳
     * @param int key 秘钥:md5( $uid + $time + 'HELLOWORLD')
     */
    function infoAction(){
        $default_key = 'HELLOWORLD';    //定义秘钥
        /**GET接收参数*/
        $uid = isset($_GET['uid']) ? $_GET['uid'] : '';
        $key = isset($_GET['key']) ? $_GET['key'] : '';
        $time = isset($_GET['time']) ? $_GET['time'] : '';

        /**给返回参数默认值*/
        $code = -1;
        $msg = '';
        $data = [];

        if(!$uid || !$key || !$time){
            $msg = '参数缺失!';
        }else{
            if($time - time() > 600 ){    //设置10分钟失效
                $msg = '接口已失效!';
            }else{
                if($key == md5($uid.$time.$default_key)){
                    $code = 1;
                    $data = getuserinfo($uid);
                }else{
                    $msg = '秘钥错误!';
                }
            }
        }

        $result = [    //返回数据统一处理
                'code' => $code,
                'msg' => $msg,
                'data' => $data
        ];

        die(json_encode($result));    //json返回
    }

    /**
     * @todo 模拟数据库数据返回
     * @param unknown $uid
     * @Return string[]|number[]
     */
    function getuserinfo($uid){
        $data = [];
        $userArr = [
                1 => ['name'=>'abc', 'age'=>18],
                2 => ['name'=>'def', 'age'=>19],
                3 => ['name'=>'ghi', 'age'=>20],
                4 => ['name'=>$rnd_line, 'age'=>21],
        ];
        if(array_key_exists($uid, $userArr)){
            $data = $userArr[$uid];
        }
        return $data;
    }
?>


这样的 为啥 当uid=4时 name会是null?
{"code":1,"msg":"","data":{"name":null,"age":21}}

最佳答案

查看完整内容

PHP的function里面不能调用外部的变量,可以通过调用函数时直接提供参数的方法传递变量,或者先在变量前声明一下全局变量如global $xxx; 另外 if($time - time() > 600 ){ //设置10分钟失效 这行写反了 应该是 if(time() - $time > 600 ){ //设置10分钟失效

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (12/12)

签到天数: 2 天

发表于 2020-2-14 13:19:01 | 显示全部楼层   广东省广州市
PHP的function里面不能调用外部的变量,可以通过调用函数时直接提供参数的方法传递变量,或者先在变量前声明一下全局变量如global $xxx;

另外 if($time - time() > 600 ){    //设置10分钟失效 这行写反了 应该是 if(time() - $time > 600 ){ //设置10分钟失效
1.zip (1.11 KB, 下载次数: 1)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

发表于 2020-2-14 14:21:19 | 显示全部楼层   山东省潍坊市
  1. function getuserinfo($uid){
  2. <b>    global $rnd_line;</b>
  3.     $data = [];
  4.     $userArr = [
  5.         1 => ['name'=>'abc', 'age'=>18],
  6.         2 => ['name'=>'def', 'age'=>19],
  7.         3 => ['name'=>'ghi', 'age'=>20],
  8.         4 => ['name'=>$rnd_line, 'age'=>21],
  9.     ];
  10.     if(array_key_exists($uid, $userArr)){
  11.         $data = $userArr[$uid];
  12.     }
  13.     return $data;
  14. }
复制代码


回复

使用道具 举报

结帖率:98% (39/40)

签到天数: 28 天

发表于 2020-2-14 14:23:33 | 显示全部楼层   广东省揭阳市
检查rnd_line
回复

使用道具 举报

结帖率:100% (6/6)

签到天数: 19 天

发表于 2020-2-14 14:24:52 | 显示全部楼层   江苏省南通市
因为在你的第二个php里  没有给 $rnd_line 赋值

你把这两行删掉试试
44.JPG
回复

使用道具 举报

结帖率:99% (392/395)

签到天数: 24 天

 楼主| 发表于 2020-2-14 14:51:46 | 显示全部楼层   湖南省株洲市
caixiaojing77 发表于 2020-2-14 14:35
PHP的function里面不能调用外部的变量,可以通过调用函数时直接提供参数的方法传递变量,或者先在变量前声 ...

谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表