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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Vérification d'une adresse email

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Vérification d'une adresse email

n°1195358
Spir
Words are timeless
Posté le 08-09-2005 à 18:20:38  profilanswer
 

Hello.
Voilà j'ai un formulaire ou l'on saisie une adresse email. Une fois l'adresse email saisie et le formulaire validé je vérifie dans mon code PHP si cette adresse email est valide.
je fais donc ceci :

Code :
  1. if( !eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email) )


Je vérifie donc si il y a bien un @ et un . quelque chose. Le souci c'est qu'il y a des adresses email assez compliqué qui ne passe pas dans ce test.
Genre celle là : paul@leserveurdepaul.203.fr
Comment résoudre ce souci?
je pense que c'est à cause des chiffres.
J'avoue que j'ai un peu de mal avec la fonction eregi de recherche par expression rationnelle insensible à la casse.

mood
Publicité
Posté le 08-09-2005 à 18:20:38  profilanswer
 

n°1195397
sielfried
Posté le 08-09-2005 à 18:39:36  profilanswer
 

Ben non ta regex marche pour ce mail. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1195418
pmusa
▓▓▓▓▓▓▓
Posté le 08-09-2005 à 18:52:15  profilanswer
 

ben ouai.   :o


---------------
intralase surgery [:cerveau love]
n°1195459
Spir
Words are timeless
Posté le 08-09-2005 à 19:35:15  profilanswer
 

Non je vous assure que non... C'est à cause de la longueur?? des chiffres à la fin?
je ne comprend pas...

n°1195475
sielfried
Posté le 08-09-2005 à 20:17:48  profilanswer
 

Code :
  1. $email = 'paul@leserveurdepaul.203.fr';
  2. if( !eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$", $email) ) echo 'marchepa';


 
Ca n'affiche rien, teste par toi-même.


Message édité par sielfried le 08-09-2005 à 20:18:04

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1195487
gatsusat
Posté le 08-09-2005 à 20:44:50  profilanswer
 

si ca marche nickel
 
http://www.toutjavascript.com/service/regexp.php
 
sinon tu peux essayer cet regexp :  
^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$

n°1195544
Spir
Words are timeless
Posté le 08-09-2005 à 21:46:00  profilanswer
 

Bizarre. Bon bah l'erreur doit venir d'ailleur... je vais chercher, mais ca m'étonne.

n°1195580
esox_ch
Posté le 08-09-2005 à 22:17:57  profilanswer
 

Je sais que qqn avait posté un lien il y a quelques temps, d'une regex de plusieurs pages qui valide avec une certitude a peu pres absolue (selon les dire des l'hauteur.. j'ai pas tout lu) l'email...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1195649
Spir
Words are timeless
Posté le 09-09-2005 à 00:11:04  profilanswer
 

J'ai trouvé ca :

Code :
  1. function validEmail($email_adresse) {
  2.  if
  3. (eregi('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@('.'([-!#$%&\'*+\\/0-9=?
  4. A-Z^_`a-z{|}~]+\.)'.'([-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$))',
  5. $email_adresse, $found)) {
  6.   if (getmxrr($found[1], $mx_records)) {
  7.    return $mx_records;
  8.   }
  9.  }
  10.  return false;
  11. }

n°1195650
Spir
Words are timeless
Posté le 09-09-2005 à 00:13:25  profilanswer
 

Ca aussi :

Code :
  1. function check_email_address($email) {
  2.   // First, we check that there's one @ symbol, and that the lengths are right
  3.   if (!ereg("[^@]{1,64}@[^@]{1,255}", $email)) {
  4.     // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
  5.     return false;
  6.   }
  7.   // Split it into sections to make life easier
  8.   $email_array = explode("@", $email);
  9.   $local_array = explode(".", $email_array[0]);
  10.   for ($i = 0; $i < sizeof($local_array); $i++) {
  11.     if              (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\" )]{0,62}\" ))$",    $local_array[0])) {
  12.           return false;
  13.       }
  14.   }
  15.   if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
  16.     $domain_array = explode(".", $email_array[1]);
  17.     if (sizeof($domain_array) < 2) {
  18.         return false; // Not enough parts to domain
  19.     }
  20.     for ($i = 0; $i < sizeof($domain_array); $i++) {
  21.       if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
  22.         return false;
  23.       }
  24.     }
  25.   }
  26.   return true;
  27. }


 
Source : http://www.ilovejackdaniels.com/ph [...] alidation/


Message édité par Spir le 09-09-2005 à 00:15:56
mood
Publicité
Posté le 09-09-2005 à 00:13:25  profilanswer
 

n°1195652
sielfried
Posté le 09-09-2005 à 00:16:34  profilanswer
 

Spir a écrit :

J'ai trouvé ca :

Code :
  1. function validEmail($email_adresse) {
  2.  if
  3. (eregi('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@('.'([-!#$%&\'*+\\/0-9=?
  4. A-Z^_`a-z{|}~]+\.)'.'([-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$))',
  5. $email_adresse, $found)) {
  6.   if (getmxrr($found[1], $mx_records)) {
  7.    return $mx_records;
  8.   }
  9.  }
  10.  return false;
  11. }



 
Ouais, des mails avec des $#%& dedans, au moins c'est pas un filtre parano.  [:mlc]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1195785
Spir
Words are timeless
Posté le 09-09-2005 à 11:05:54  profilanswer
 

Bah moi je ne capte pas c'est vraiment du chinois.

n°1195788
esox_ch
Posté le 09-09-2005 à 11:08:58  profilanswer
 

Non c'est du Perl en l'occurence (enfin .. un "portage" de perl :D).
 
Etudie un peu les regex ;)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1195827
FlorentG
Posté le 09-09-2005 à 11:38:32  profilanswer
 

Elles sont nulles vos regexp, aucun n'est valide face au RFC-822. La seule valable est celle-ci :
 

(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[  
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\]  
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\]  
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)

n°1195834
esox_ch
Posté le 09-09-2005 à 11:40:51  profilanswer
 

Voila c'est celle la dont je parlais :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1195889
Spir
Words are timeless
Posté le 09-09-2005 à 13:10:48  profilanswer
 

Ahahahahhahah c'est mort... Ahahah c'est mega bourrin!!

n°1195891
plainsofpa​in
Pingouino's lover
Posté le 09-09-2005 à 13:22:30  profilanswer
 

le retour de florentG se voit :)
 
Re Flo  :bounce:


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
n°1195959
FlorentG
Posté le 09-09-2005 à 14:19:40  profilanswer
 

Tiens d'ailleur je vais l'implémenter cette regexp [:dawa] Ca pourrait être fun [:dawa]

n°1195963
gatsusat
Posté le 09-09-2005 à 14:22:09  profilanswer
 

celui qui a fait cette regexp, soit c'est un dieu des regexp, soit c'est un malade mental

n°1195969
FlorentG
Posté le 09-09-2005 à 14:24:43  profilanswer
 

Faut déjà être un malade pour piger le RFC, alors pour en ressortir une regexp, c'est culcul [:dawa]

n°1195976
soju
One shot !
Posté le 09-09-2005 à 14:31:15  profilanswer
 

fun mais pas très efficace vu le nombre d'assertions  :lol:

n°1196170
omega2
Posté le 09-09-2005 à 17:54:07  profilanswer
 

:o heu, il a fait quoi là, il fait des tests caractére par caractére?

n°1196326
FlorentG
Posté le 09-09-2005 à 23:46:00  profilanswer
 

Faut voir la tronche du RFC-822, tu piges tout de suite pourquoi la bête est complexe. Aussi, elle valide les listes d'adresses (c'est dans le RFC)...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Vérification d'une adresse email

 

Sujets relatifs
pb PhpDebutant en programmation pour page web PHP
[PHP] Comment faire pour trouver la date du vendredi qui arrive ?Comment utiliser UltraEdit 8 pour editer du PHP?
[Recherche] Programmateur PHP[PHP] Test: Jeu de Carte: Manille en PHP + AJAX
Liste déroulante de liens en PHP ?Je veux apprendre le PHP
Encodage de caractères avec PHP[PHP] Probleme avec des dates...
Plus de sujets relatifs à : [PHP] Vérification d'une adresse email


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