如何从另一个PHP案例

时间:2017-03-01 20:11:55

标签: php jquery

我一直在使用公式来唯一地保护从数据库收集的id,然后再将它们呈现给客户端。

然而,随着我的代码变得越来越复杂,我陷入了这个陷阱:我有两个单独的案例返回需要使用相同id的json。由于我的安全功能在每次执行时都会产生唯一的哈希和密钥,因此从一个案例中收集的哈希ID无法在需要使用它的另一个案例中加密。因此,作为一个解决方案,我认为发送散列id从第一个案例再次回到第一个案例,在那里解密然后以某种方式将其传递给另一个案例,而客户端从未有机会捕获真实的id。

所有代码都运行良好,我的问题是匹配从第一种情况中提取的id,该情况将在第二种情况下使用,该情况也会在情况中断之前发回数据,这只是客户端触发的循环。我提供代码以防你提出要求。问题是在两个单独的php情况下简单地将相同的id与不同的唯一哈希匹配。对不起,如果我把它变得比它应该更复杂。

  • 这是我用来填充下拉列表选择的第一个案例。

            case "tutorRefresh":
    
            $tutorSelectSql = "SELECT id, tname, tsurname FROM tutors";
            $tutorSelectQry = pg_query($tutorSelectSql);
    
            while($row = pg_fetch_array($tutorSelectQry)){
    
                $id = lockPandoraBox($row['id']);//encrypt the id
                $response[] = array("id" => $id,
                                    "tname" => $row['tname'],
                                    "tsurname" => $row['tsurname']);
    
            };
    
        if(isset($response)){
    
        echo json_encode($response);
    
        } else {
    
        $response = array("val" => 0);
        echo json_encode($response);
    
        }
    
        break;
    
  • 这是更新表数据的第二种情况所使用的函数,因为它对于单个问题来说太长而复杂,无法在此处发布,我只共享相关的代码部分。我必须将上面代码中加密的id与此处加密的id匹配,因为此代码填入表中,而上面的代码只填写下拉选项。

        $crypted = lockPandoraBox($row["appid"]);
        $tutorID = lockPandoraBox($row["tutorid"]);//encrypting id
        $clientID = lockPandoraBox($row["clientid"]);//same method for another id, ignore this.
    
        $fApp["hours"][] = array("recId" => $crypted,
                                 "hour" => $row["hour"], 
                                 "tutor" => $tutorArr["tname"]." ".$tutorArr["tsurname"],
                                 "tutorId" => $tutorID,// id that I need to use
                                 "client" => $clientArr["cname"]." ".$clientArr["csurname"],
                                 "clientId" => $clientID,
                                 "department" => $dept,
                                 "degree" => $deg,
                                 "purpose" => $purposeArr["pname"],
                                 "purposeId" => $row["purpose"],
                                 "contact" => $clientArr["cgsm"],
                                 "email" => $clientArr["cemail"],
                                 "tutorAbsCheck" => $tutorAbsArray["id"],
                                 "tutorAbsReason" => $tutorAbsArray["reason"],
                                 "clientAbsCheck" => $clientAbsArray["id"],
                                 "clientAbsReason" => $clientAbsArray["reason"]
                                 );
        /*  */
    }
    
    
    return json_encode($fApp);
    }
    
  • 最后,这是我的主页面中的代码,它在触发我需要的事件的点击事件功能中起作用。它只是更改匹配的点击记录的选择框选择。它从表中选择id并尝试将其与选择框中的id匹配。提前谢谢。

    $( “#tutorEdit”)VAL(dayData [ “小时”] [$(el.currentTarget).attr( “钥匙”)] tutorId。).trigger( “变化”);

    < / LI>

1 个答案:

答案 0 :(得分:0)

我认为最好稍微改变结构以结合两种情况以实现我的目标。我想知道我是否可以绕过它。