Le contenu partagé avec vous dans cet article concerne une brève discussion sur le développement de l'interface APP en PHP (basé sur le framework TP3.2) (opinion personnelle). Les amis dans le besoin peuvent s'y référer
PHP est très puissant et peut être utilisé pour diverses choses, notamment le développement Web, les petits programmes, les centres commerciaux et bien sûr les applications.Puisque le blogueur se prépare également à réaliser un projet APP, je vais écrire mon expérience afin de pouvoir la revoir à l'avenir, haha.
Parce que nous écrivons des interfaces, la sécurité passe avant tout et nous ne pouvons tuer personne, n'est-ce pas ? Nous devons donc négocier une méthode de cryptage d'interface avec le front-end, et chaque interface en a besoin (cela peut être appelé cryptage de jeton, ou cryptage de signe, selon comment vous aimez l'appeler)
Laissez-moi vous parler de la façon dont j'ai cryptez-le. Oui, je suggère que les interfaces soient toutes livrées par courrier, donc les paramètres suivants sont tous basés sur la livraison post
1 Tout d'abord, triez les paramètres transmis dans le dictionnaire de clés et supprimez le. valeur du jeton (PHP fournit une fonction A ksort, qui par défaut est le tri de code ASICC standard. Il y a un piège ici, c'est-à-dire que le tri d'IOS est parfois différent de celui d'Android, mais seulement dans certains cas)2. Concaténez les valeurs triées (PHP fournit une fonction http_build_query)
3. Collez une clé personnalisée après la chaîne triée (cela doit être cohérent avec le front-end), puis cryptez md5
4. Convertissez-le en majuscules en tant que jeton et utilisez-le comme paramètre.
Postons le code
function makeToken($data){ //$data就是$_POST传过来的参数 unset($data['token']); unset($data['auth_key']); //这个下面会说到 ksort($data); $string = http_build_query($data); if(empty($data)){ $string = 'key=CT01aVVsCkSxYdxi55ml'; } else { $string = $string .'&key=CT01aVVsCkSxYdxi55ml'; } $string = md5($string); $result = strtoupper($string); return $result; }
<?phpnamespace Api\Controller;use Think\Controller;/** * 公共控制器 */class CommonController extends Controller { public function _initialize(){ // // //验证token $token = I('token'); $sal = makeToken($_POST); if($sal!=$token){ $result = ajaxR(404,'认证失败'); $this->ajaxReturn($result); } } }
Certaines interfaces font exception. Elles peuvent demander des données directement sans paramètres, il vous suffit donc de chiffrer la clé personnalisée avec md5, c'est-à-dire de chiffrer la chaîne key=CT01aVVsCkSxYdxi55ml Bien sûr, cette chaîne Vous pouvez le faire comme vous le souhaitez. , l'essentiel est de négocier avec le front-end.
Avant le tri des paramètres, c'est-à-dire avant http_build_query, vous devez supprimer le jeton et la auth_key transmis depuis le front-end (sans parler de cela en premier), puis participer au tri. Cela doit également être négocié avec le front-end. .
Vous pouvez définir vous-même les règles de génération auth_key. Après vous être enregistré et connecté à l'APP, stockez cette chaîne dans l'utilisateur correspondant et renvoyez-la au front-end. Chaque accès après le front-end portera ce paramètre auth_key. peut interroger les informations pertinentes de cet utilisateur via ce paramètre.
Bien sûr, vous pouvez également définir une limite de temps sur cette auth_key, par exemple, lui donner une période de 7 jours, l'appeler dans chaque méthode du projet pour voir si elle a expiré, et si elle expire, renvoyer un statut de connexion au front-end Invalide, déconnectez-vous.
En fait, il n'est pas difficile de développer l'interface de l'APP. L'essentiel est de négocier avec le front-end et ce sera facile à faire. Généralement, ce que nous retournons est au format json, comme suit
{ "code": 200, "message": "获取信息成功", "data": { "lng": "113.743393", "lat": "23.015902", }}
Puisque le blogueur se prépare également à réaliser un projet APP, je vais écrire mon expérience afin de pouvoir la revoir à l'avenir, haha.
Parce que nous écrivons des interfaces, la sécurité passe avant tout et nous ne pouvons tuer personne, n'est-ce pas ? Nous devons donc négocier une méthode de cryptage d'interface avec le front-end, et chaque interface en a besoin (cela peut être appelé cryptage de jeton, ou cryptage de signe, selon comment vous aimez l'appeler)
Laissez-moi vous parler de la façon dont j'ai cryptez-le. Oui, je suggère que les interfaces soient toutes livrées par courrier, donc les paramètres suivants sont tous basés sur la livraison post
1 Tout d'abord, triez les paramètres transmis dans le dictionnaire de clés et supprimez le. valeur du jeton (PHP fournit une fonction A ksort, qui par défaut est le tri de code ASICC standard. Il y a un piège ici, c'est-à-dire que le tri d'IOS est parfois différent de celui d'Android, mais seulement dans certains cas)2. Concaténez les valeurs triées (PHP fournit une fonction http_build_query)
3. Collez une clé personnalisée après la chaîne triée (cela doit être cohérent avec le front-end), puis cryptez md5
4. Convertissez-le en majuscules en tant que jeton et utilisez-le comme paramètre.
Postons le code
function makeToken($data){ //$data就是$_POST传过来的参数 unset($data['token']); unset($data['auth_key']); //这个下面会说到 ksort($data); $string = http_build_query($data); if(empty($data)){ $string = 'key=CT01aVVsCkSxYdxi55ml'; } else { $string = $string .'&key=CT01aVVsCkSxYdxi55ml'; } $string = md5($string); $result = strtoupper($string); return $result; }
<?phpnamespace Api\Controller;use Think\Controller;/** * 公共控制器 */class CommonController extends Controller { public function _initialize(){ // // //验证token $token = I('token'); $sal = makeToken($_POST); if($sal!=$token){ $result = ajaxR(404,'认证失败'); $this->ajaxReturn($result); } } }
Certaines interfaces font exception. Elles peuvent demander des données directement sans paramètres, il vous suffit donc de chiffrer la clé personnalisée avec md5, c'est-à-dire de chiffrer la chaîne key=CT01aVVsCkSxYdxi55ml Bien sûr, cette chaîne Vous pouvez le faire comme vous le souhaitez. , l'essentiel est de négocier avec le front-end.
Avant le tri des paramètres, c'est-à-dire avant http_build_query, vous devez supprimer le jeton et la auth_key transmis depuis le front-end (sans parler de cela pour l'instant), puis participer au tri. Cela doit également être négocié avec le front. fin.
接下来说下auth_key吧,大家都知道session是用来记住web页面的用户登录状态的,而APP也是需要登录用户状态的。这里我使用的一个自己加密的一串用来记住用户登录状态,叫auth_key的参数。
auth_key的生成规则你可以自己定义,在APP端注册登录之后,把这个串存入相应的用户里面,并且将其返回给前端,前端之后的每个访问都带上这个auth_key这个参数,而你就可以通过这个参数来查询这个用户的相关信息。
当然,你也可以对这个auth_key进行一个时间的限制,例如给个7天的期限,在项目的每个方法都调用一下,看看是否过期了,过期了就给前端返回一个登陆状态失效,退出登录。
其实开发APP的接口不难,主要和前端协商好,就很容易办。一般我们返回的都是json格式,如下
{ "code": 200, "message": "获取信息成功", "data": { "lng": "113.743393", "lat": "23.015902", }}
定义好返回的状态码和信息还有数据,这是必不可少的。
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!