Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1851 connectés 

 



Pour ou contre du changement sur le topic ?


 
35.7 %
 5 votes
1.  Oui, faq / bonnes pratiques + blabla@php
 
 
0.0 %
        0 vote
2.  Oui, blabla@php uniquement
 
 
7.1 %
 1 vote
3.  Ce topic mérite la poubelle. Pauvre poubelle
 
 
21.4 %
 3 votes
4.  Non, ce topic reste tel quel
 
 
35.7 %
 5 votes
5.  Obiwan n'aime pas le php
 

Total : 16 votes (2 votes blancs)
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  64  65  66  67  68  69
Page Suivante
Auteur Sujet :

blabla@php | faq et bonnes pratiques page 1

n°2374554
depart
Posté le 27-01-2021 à 08:06:51  profilanswer
 

Reprise du message précédent :
A première vue je dirai pareil : ajouter poiId dans la structure de données. Si dans l'absolu le numéro de poiID n'a pas grande importance, ça peut aussi directement être la position dans un tableau (0,1,2...)
 
La notion de "type" est aussi discutable
tu peux simplifier en faisant directement un tableau associatif :  
"poiId" => "1", "phone" => "123456890", "email" => "toto@toto.com" ...
l'accès sera nettement plus pratique.

mood
Publicité
Posté le 27-01-2021 à 08:06:51  profilanswer
 

n°2374556
ratibus
Posté le 27-01-2021 à 08:38:38  profilanswer
 

koskoz a écrit :

Je suis tombé sur (un bout de) la PR suivante :
 

Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    foreach ($stores as $store) {
  4.        $normalizedStore = [
  5.            'code' => $store['poiId'] ?? '',
  6.            'phone' => null,
  7.        ];
  8.  
  9.        if (isset($store['contacts']) && !empty($store['contacts'])) {
  10.            foreach ($store['contacts'] as $contact) {
  11.                if (isset($contact['type'])) {
  12.                    if ('PHONE' === $contact['type']) {
  13.                        $normalizedStore['phone'] = $contact['value'];
  14.                    }
  15.                }
  16.            }
  17.        }
  18.        $normalizedStore;
  19.  
  20.        if ($normalizedStore['code'] == $code) {
  21.            return $normalizedStore['phone'];
  22.        }
  23.    }
  24.  
  25.    return null;
  26. }


 
A partir de ça j'imagine la structure de donnée suivante :
 

Code :
  1. $stores = [
  2.     [
  3.         'poiId' => 'id1',
  4.         'contacts' => [
  5.             ['type' => 'PHONE', 'value' => 'phoneNumber'],
  6.             ['type' => 'EMAIL', 'value' => 'email'],
  7.         ]
  8.     ],
  9.     [
  10.         'poiId' => 'id2',
  11.         'contacts' => [
  12.             ['type' => 'PHONE', 'value' => 'phoneNumber2'],
  13.             ['type' => 'EMAIL', 'value' => 'email2'],
  14.         ]
  15.     ]
  16. ];


 
Je voulais la réécrire de manière plus propre et plus lisible mais je ne trouve pas ça beaucoup mieux :
 

Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    $store = array_filter($stores, function($store) {
  4.        return $store['poiId'] == $code
  5.    });
  6.    
  7.    $store = array_pop($store);
  8.  
  9.    if (!isset($store['contacts']) || empty($store['contacts'])) {
  10.        return null;
  11.    }
  12.  
  13.    $phone = array_filter($store['contacts'], function($contact) {
  14.        return $contact['type'] == 'PHONE'
  15.    });
  16.    
  17.    return array_pop($phone)['value'];
  18. }


 
Vous avez mieux à proposer :??:


Le poiId semble optionnel dans le code initial. Tu confirmes que c'est le cas ?
Est-ce que tu peux avoir plusieurs emails et/ou plusieurs phones par store  ? La structure que tu proposes semble indiquer que oui mais le code ne renvoie qu'un phone.  
Sans ces réponses difficiles de répondre.


---------------
Mon blog
n°2374571
koskoz
They see me trollin they hatin
Posté le 27-01-2021 à 10:23:42  profilanswer
 

Ydalb a écrit :

2 foreach imbriqués me semblerait plus lisible  


 
Ça se discute [:o_doc]  
 

MaybeEijOrNot a écrit :

Réécrire la structure de données. :o


 

depart a écrit :

A première vue je dirai pareil : ajouter poiId dans la structure de données.


 
Non mais vous vous doutez bien que si c'était possible je le ferais [:doc petrus]  
C'est le retour d'une API d'un partenaire avec lequel on bosse.
 
Je m'estime déjà heureux que ce ne soit pas du SOAP [:klem3i1]  
 

ratibus a écrit :


Le poiId semble optionnel dans le code initial. Tu confirmes que c'est le cas ?
Est-ce que tu peux avoir plusieurs emails et/ou plusieurs phones par store  ? La structure que tu proposes semble indiquer que oui mais le code ne renvoie qu'un phone.  
Sans ces réponses difficiles de répondre.


 
Aucune idée, j'en ai déduis la structure de données à partir du code :D


---------------
Blabla Revival, le forum qui envoie du caca | Blog | Twitter | Stats
n°2386117
SuperSic
Posté le 24-05-2021 à 22:33:47  profilanswer
 

:hello:

 

Je cherche des infos sur les bonnes pratiques de l'utilisation des cookies pour que les utilisateurs d'un site web puissent rester connectés.
Je ne trouve pas grand chose. Soit des pages qui datent de 10+ ans, soit des pages qui n'abordent pas du tout la sécurité (c'est primordial pour moi).

 

Pour l'instant, le seul sujet intéressant que j'ai trouvé, c'est ce tuto vidéo. En résumé, dans le cookie, il conseille de faire un hash du pseudo + mdp + ip.
mdp : permet d'être sûr que la personne est vraiment la bonne personne
ip : permet d'éviter la réutilisation du cookie sur un autre PC

 

Vous avez des suggestions ? Des conseils ?

 

Edit : je viens de tomber sur ce tuto https://code.tutsplus.com/tutorials [...] -cms-36575 qui m'a l'air pas mal :)


Message édité par SuperSic le 24-05-2021 à 22:43:19

---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°2386133
mechkurt
Posté le 25-05-2021 à 09:11:05  profilanswer
 

Tu peux aussi conserver ce hash coté serveur (dans la BDD par exemple), ça permet d'invalider un cookie "coté serveur" si tu as des raisons de penser qu'il est compromis...


---------------
D3
n°2386136
SuperSic
Posté le 25-05-2021 à 09:45:29  profilanswer
 

Il ne vaut mieux pas partir du principe qu'il est compromis ? :D


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°2386137
mechkurt
Posté le 25-05-2021 à 10:11:25  profilanswer
 

Dans le cas d'une attaque au milieu (personne qui utilise un wifi libre par exemple et qui se fait intercepter ses paquets), n'importe qui utilisant le cookie aura les mêmes accès (même IP visible par ton serveur et même cookie).
Aucun système de sécurité ne sera inviolable donc pouvoir révoquer des cookies au niveau du serveur peut être utile...


---------------
D3
n°2386160
flo850
moi je
Posté le 25-05-2021 à 13:30:44  profilanswer
 

si tu n'en a pas besoin côté client (javascript ) , utilise un cookie http only https://blog.dareboost.com/fr/2016/ [...] -httponly/


---------------

n°2386198
SuperSic
Posté le 25-05-2021 à 17:00:42  profilanswer
 

Merci pour vos réponses.
J'avais déjà prévu d'utiliser les parametres secure et httponly.


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°2395249
depart
Posté le 08-09-2021 à 10:00:03  profilanswer
 

Arrachage de tête sur un sujet d'encodage de caractères :
j'ai une appli php/mysql toute en iso8859-1
 
Je construis un petit système d'envoi d'emails, et j'ai besoin de caser un emoji dans le sujet.
Pour ça il faut passer en utf-8, ce qui n'est pas trop un souci. Je prends mes données en bdd, je fais de l'utf8_encode() des champs et ça fonctionne nickel.
le fichier php qui gère ça est en utf-8
 
Par contre pour le sujet je heurte un mur.
 
Si dans le fichier php je mets un truc genre  

$sujet = "\xf0\x9f\x95\x99 Alerte de rappel" ;


 
Et que je mets ce sujet dans PHPMailer comme ça :

$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->CharSet = 'utf-8';  
$mail->Encoding = 'base64';
...
$mail->Subject = $sujet ;
$mail->Body    = $message;
$mail->send() ;


 
Ca fonctionne nickel, mon sujet est bien encodé et j'ai mon emoji dans le mail.
 
Si par contre je récupère le sujet depuis ma bdd, que j'encode le sujet en utf8... ça ne fonctionne plus, j'ai \xf0\x9f\x95\x99 qui s'affiche tel quel dans le sujet.
 
J'ai tenté des bidouilles, genre ne pas convertir les \x... en utf8 pour les remettre tel quel après mais étrangement les fonctions preg_match ou replace ne fonctionnent pas avec ma regex qui me semble pourtant assez basique et qui fonctionne sur https://www.phpliveregex.com/ :

preg_match('/\\x[0-9a-f]{2}\\x[0-9a-f]{2}\\x[0-9a-f]{2}\\x[0-9a-f]{2}/i', $sujet, $emoji_arr);


Ca ne retourne rien, que ce soit sur le sujet en iso ou converti en utf-8 !  
Pourtant je ne devrais pas avoir de souci d'encodage vu que tous les caractères utilisés sont basiques (l'antislash, les chiffres, lettres sans accents...)
 
J'ai aussi tenté l'approche barbare de convertir le champ de ma bdd en utf8mb4_bin, de stocker la valeur encodée en utf8 dedans, de me connecter à la bdd en utf8 avant de faire ma requête pour récupérer le sujet... ben que dalle, ça ne change rien, ces pu***ns "d'antislash x" restent tel quel et ne deviennent pas des caractères unicode cohérents.
 
Un sujet qui fonctionne une fois reçu dans une boîte mail (affichage de la source) :

Subject: =?utf-8?Q?=F0=9F=95=99 Alerte de rappel?=


Un sujet qui ne fonctionne pas :

Subject: =?utf-8?Q?\xf0\x9f\x95\x99  Alerte de rappel?=


 
Et donc comme je disais, je ne peux pas faire de preg_replace des "\x" par des "=" car la regex ne trouve rien :(
 
Le mieux que je puisse faire c'est ne pas mettre l'antislash dans le champ en bdd, genre juste stocker "xf0x9fx95x99 Alerte..." et ensuite la regex fonctionne (genre matcher "/x([0-9a-f]{2})x([0-9a-f]{2})x([0-9a-f]{2})x([0-9a-f]{2})/i" et remplacer par =$1=$2=$3=$4 mais c'est assez moche je trouve.
 
Une idée ?


Message édité par depart le 08-09-2021 à 10:37:45
mood
Publicité
Posté le 08-09-2021 à 10:00:03  profilanswer
 

n°2395276
depart
Posté le 08-09-2021 à 11:51:04  profilanswer
 

Bon après des heures d'arrachage de cheveux, il s'avère qu'il faut déspécialiser aussi le x dans \x
la regex donne donc /\\\x([0-9a-f]{2})...
 
C'est assez étrange les regex et l'unicode...
 
A priori ça fonctionne, même si ça ne m'explique pas pourquoi je dois transformer ça manuellement... alors que si je mets mets \x... directement dans une variable php ça fonctionne sans cette transformation...


Message édité par depart le 08-09-2021 à 12:01:31
n°2395509
depart
Posté le 11-09-2021 à 10:02:09  profilanswer
 


Ah, info intéressante. Je n'avais jamais lu ça. Merci !

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  64  65  66  67  68  69
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Problème pour une mise en page sous forme de tableauAfficher sur une page web directement le resultat d'une autre page web
[PHP] Fonction include plus rapide qu'un bout de code dans la page ?Ouvrir un fichier HTML en fin de page
[Résolu] Expirer la cache au niveau de la pageexecuter une page php sans rien afficher
inserer dans ma page wikiControler le changement de page
Certificat SSL a valider pour chaque élément de pageinstallé un mdp sur une page web avec Namo
Plus de sujets relatifs à : blabla@php | faq et bonnes pratiques page 1


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR