【问题标题】:File get content via json文件通过json获取内容
【发布时间】:2013-03-03 10:46:34
【问题描述】:

我有一个文件文本文件,我通过 file_put_contents 在其中保存用户 ID 我想在将其发送到查看功能之前显示该用户 ID 这是我的代码 我尝试自己bt没有得到结果....

    $name   =   $this->session->userdata('name');
      $id   =   $this->session->userdata('id');

   file_put_contents($filename,json_encode(array('id'=>$id,'name'=>$name)));

   $response = array();
   $response = json_decode(file_get_contents($filename));
   if ($response->name==1){
      echo $this->session->userdata('name');
   }
   echo json_encode($response);

这不起作用,我想显示 bt 如果我删除这个 if 条件然后我在视图文件中得到我的结果

       if ($response->name==1){
         echo $this->session->userdata('name');
       }

谢谢....

【问题讨论】:

  • 这需要先进行基本调试。什么时候失败? file_get_contents($filename) 首先会返回任何东西吗?如果有,echo json_encode($response); 会给你什么?
  • 又一个错字问题...
  • 如果我删除这个 ** if ($response->name==1){ echo $this->session->userdata('name'); }** 然后我得到我想要的结果 bt 如果我不删除然后我不能得到结果并且没有错误显示
  • 我只想获取在数组中以“名称”保存的数据
  • 在 if 条件下删除 echo 然后检查你是否得到你的结果,如果你得到然后删除 echo 命令并将数据存储到会话中

标签: php codeigniter json


【解决方案1】:

$response->name 它将是一个字符串,而不是一个 int。

替换:

if ($response->name==1){
    echo $this->session->userdata('name');
}

与:

if ($response->name){
    echo $this->session->userdata('name');
}

更新:
您在 cmets 中的某处声明要检查用户 ID,但在代码中您检查用户名。同样在if 条件内,您应该使用来自 $response 的数据,而不是来自会话的数据。也就是说:

if ($response->id == 1){
    echo $response->name;
}

附带说明,您确定会话中存在idname 吗?

【讨论】:

    【解决方案2】:

    我不清楚你为什么有

    if ($response->name==1){
    

    不过可以试试这个

    如果你想保护 json 对象结构,你需要第二个参数为真

     json_decode(file_get_contents($filename) ,true);
    

    您需要一些可以在底部找到的 json 标头

    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');
    $name   =   $this->session->userdata('name');
    $id   =   $this->session->userdata('id');
    if(!empty($name)){
    
        if(!is_file($filename)){
            touch($filename);
            chmod($filename,0777);
        }
    
        file_put_contents($filename,json_encode(array('id'=>$id,'name'=>$name),true));
    
        $response = array();
        $response = json_decode(file_get_contents($filename) ,true);
        if (empty($response->name)){  
            echo json_encode(array('error'=>'empty response name'),true);
         die();
    
     }else{
    
    
    
        echo json_encode($response);
      }
    
          }else{
        json_encode(array('error'=>'no username'),true)
        }
    

    我的管理员中有我的消息系统,它用于 codeigniter

    http://dl.dropbox.com/u/72626795/messaging.zip

    【讨论】:

    • 我实际上是在实现一个聊天系统,任何人都可以发送和接收存储在文本文件中的 msg,所以我想实现这个条件来检查 id 是否相等,然后 msg 将被显示否则用户不会,通过这个聊天系统将转换为我想要实际做的两个人的私人聊天。
    • @aysha-ali 好的,如果收件人不为空,这应该检查吗?你有混合输出部分json部分非json..你有一些我不明白你想如何构建的东西,因为我们使用不同的方法..我有一个用于codeigniter的消息系统,如果你愿意,我可以将它发送给你但它现在不是 ajax,它可以很容易地转换......我会更新这篇文章,所以你有一些错误调试
    • @aysha-ali 我会将其上传到 Dropbox 并在此处发布链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2017-01-16
    • 2016-05-24
    • 2012-09-28
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多