Créer un compte
Connexion

Creer un captcha

Pour créer et répondre aux sujets, vous devez être connecté.
Ce sujet est résolu.
Pages: 1
Auteur Message
Spitfire 95
23/02/2010 à 09:53:20
Spitfire 95
Membre
Bonjour.
Je voudrais créer un captcha pour mon formulaire de contact. Il y a déjà des scripts sur le web, mais ils sont assez compliqués, et les images obtenues sont généralement difficiles à lire.
Donc je veux en faire un moi même, mais je ne sais pas si mon idée serait performante :

-Créer une variable $code contenant un nombre au hasard compris entre 0000 et 9999 avec la fonction rand : srand();$code = rand(0000, 9999); Mais 0000 ne doit pas devenir 0.
-Créer une image noire d'environ 40x20px.
-Ecrire sur l'image les nombres de la variable $code.
-Comparer ce que l'utilisateur a entré et la variable code, pour accepter ou refuser l'envoi de l'email.

Ça marchera ou les robots pourront envoyer des spams ?

Merci.

PifyZ
23/02/2010 à 13:22:06
PifyZ
Membre
Je vais essayer de te faire l'image avec le code écrit dessus, mais pour comparer à l'envoi de l'email, je sais pas faire.

Je m'y met et je te dis comment faire au plus vite ;)

PifyZ
23-02-2010 à 16:38:14
PifyZ
Membre
Voilà, j'ai le début.

D'abord télécharge le fichier RAR, dézippe le, et envoi le dossier, qui n'est pas de moi, sur ton serveur : http://pifyz.site90.net/Code.rar

Ensuite voilà le code permettant d'afficher l'image
<?php
srand();$code = rand(0000, 9999);
echo "<img src='http://TONSITE.com/NOMDOSSIER/banniere.php?size=14&text=".$code."&banner=trans.png&x=3&y=16&font=arial.ttf&RGBr=0&RGBg=0&RGBb=0&angle=0' alt='".$code."' />";
?>

Tu modifie ce qui est en gras, et tu regarde si ça marche ;)

Désolé, mais pour le reste, je sais pas faire...

PS : Je te conseil de faire entre 1000 et 9999 pour qu'il y ai tout le temps 4 chiffres. Et c'est pas 40x20, j'espère que ça te dérange pas...

Tu obtiendras un truc comme ça, mais avec un chiffre aléatoire : Image

Tu peux aussi t'aider d'un toturiel : Lien

Spitfire 95
23/02/2010 à 16:51:32
Spitfire 95
Membre
Merci. En fait, c'est pas la création qui me gênait, c'était la complexité de ceux que l'on trouve sur le net. Si on fait des images si complexes, est-ce que les robots parviendront à recopier les caractères d'un code simple ?
Merci. Je devrais parvenir à l'adapter facilement.

Au revoir.

PifyZ
23/02/2010 à 17:03:14
PifyZ
Membre
Je pense pas que les robots puissent trouver le code, c'est conçu pour ça ;)

Spitfire 95
23-02-2010 à 20:46:12
Spitfire 95
Membre
Alors pourquoi on s'amuse à créer des codes illisibles qu'il faut retaper trois fois avant de trouver le bon (en particulier pour GMail) ?


Mais pour mon code, je suis bloqué :

-La vérification du code ne fonctionne pas, car quand on veux envoyer le message, le code change, etcelui tapé n'est plus à jour (exemple : le code est 1234, vous tapez 1234, et quand vous envoyez le message, le code dit que 1234!=1345). Comment empêcher cette actualisation ?

-Pour que le code s'affiche dans l'image, je doit placer la variable dans la page qui génére l'image. Comment transférer la variable dans la page de génération depuis la page de contact ?

Formulaire de contact :
<?
$title="Contacter l'administrateur de Assoss-Annuaire.";$keywords='contact, contacter, administrateur';$CSS=1;$html=1;
$style='
body{background-image:url("/images/background.gif");}
input,textarea{background-image:url("/images/background.gif");background-position:top;border-radius:9px;}
textarea:hover,input:hover{background-image: url("/images/background-hover.png");}';

if(isset($_POST['submit'])){
        $erreur="";
        // Nettoyage des entrées
        while(list($var,$val)=each($_POST))
        {if(!is_array($val)){$$var=strip_tags($val);}
        else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}}

        // Formatage des entrées
        $f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9&#233;èàäö\ -]","",$f_1)));
        $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9&#233;èàäö\ -]","",$f_2)));
        $f_3=strip_tags(trim($f_3));
        $f_4=trim(ucwords(eregi_replace("[^a-zA-Z0-9&#233;èàäö\ -]","",$f_4)));
        $f_5=strip_tags(trim($f_5));
        $f_6=trim(ucwords(eregi_replace("[^a-zA-Z0-9&#233;èàäö\ -]","",$f_6)));
        $f_8=eregi_replace(" ","",$f_8);
        // Verification des champs
        if(strlen($f_1)<2){$erreur.="<li>Le champ &laquo; Nom &raquo; est vide ou incomplet.";}
        if(strlen($f_3)<2){$erreur.="<li>Le champ &laquo; Adresse e-mail &raquo; est vide ou incomplet.";}
        else{if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',$f_3))
                {$erreur.="<li>La syntaxe de votre adresse e-mail n'est pas correcte.";}}
        if(strlen($f_6)<5){$erreur.="<li>Le champ &laquo; Sujet &raquo; est vide ou incomplet.";}
        if(strlen($f_7)<15){$erreur.="<li>Le champ &laquo; Message &raquo; est vide ou incomplet.";}
        if($f_8!=$code){$erreur.="<li> $f_8 != $code";}

        // Creation du message
        if($erreur==""){
                $titre="$f_6";
                $tete="From : $f_3\n";
                $corps="Nom : $f_1\n";
                if($f_2!=""){$corps.="Prénom : $f_2\n";}
                if($f_4!=""){$corps.="Association : $f_4\n";}
                if($f_5!=""&&$f_5!="http://"){$corps.="URL : $f_5\n";}
                $corps.="\nMessage : $f_7\n";
                if(mail("aurelien.riv@gmail.com",$titre,stripslashes($corps),$tete)){$ok_mail="true";}
                else{$erreur.="<li>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.";}}}

include('../header.php');
if($ok_mail=="true"){ ?>
<div style="background:#b3ffff url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=0') no-repeat top left;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=3') no-repeat top right;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=1') no-repeat bottom left;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=2') no-repeat bottom right;padding-bottom:20px;padding-top:20px;padding-left:15px;">
Le message ci-dessous nous a bien &#233;t&#233; transmis, et nous vous en remercions.<img src="/images/pneumatix.gif" alt="">
<div style="background:#33CCFF url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=b3ffff&amp;interieur=33CCFF&amp;rotation=0') no-repeat top left;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=b3ffff&amp;interieur=33CCFF&amp;rotation=3') no-repeat top right;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=b3ffff&amp;interieur=33CCFF&amp;rotation=1') no-repeat bottom left;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=b3ffff&amp;interieur=33CCFF&amp;rotation=2') no-repeat bottom right;padding-bottom:20px;padding-top:20px;padding-left:15px;">
<? echo "Sujet : $titre <br> $tete <br>";echo nl2br(stripslashes($corps));?></div></div></div></div>
Nous allons y donner suite dans les meilleurs d&#233;lais.<br>A bientôt.</div></div></div></div>

<? }else{ ?>
<div style="background:#b3ffff url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=0') no-repeat top left;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=3') no-repeat top right;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=1') no-repeat bottom left;">
<div style="background:url('http://images.supportduweb.com/rounded_corn.php?rayon=20&amp;fond=f1f1f1&amp;interieur=b3ffff&amp;rotation=2') no-repeat bottom right;padding-bottom:20px;padding-top:20px;padding-left:15px;">
<form action='<? echo $PHP_SELF ?>' method="post" name="Form"><table border='0'>

<? if($erreur){ ?>
<tr><td colspan='2' bgcolor='red'><font color='white'><b>ERREUR, votre message n'a pas &#233;t&#233; transmis</b></font></td></tr>
<tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr>
<?}?>

<tr><td align='right'><b>Nom :</b></td><td><input type='text' name='f_1' value='<?echo stripslashes($f_1);?>' size='28'></td></tr>
<tr><td align='right'>Pr&#233;nom :</td><td><input type='text' name='f_2' value='<?echo stripslashes($f_2);?>' size='28'></td></tr>
<tr><td align='right'><b>Adresse e-mail :</b></td><td><input type='text' name='f_3' value='<?echo stripslashes($f_3);?>' size='28'></td></tr>
<tr><td align='right'>Association :</td><td><input type='text' name='f_4' value='<?echo stripslashes($f_4);?>' size='28'></td></tr>
<tr><td align='right'>URL du site de l'association :</td><td><input type='text' name='f_5' value='<?if($submit){echo stripslashes($f_5);}else{print("http://");}?>' size='28'></td></tr>
<tr><td align='right'><b>Sujet :</b></td><td><input type='text' name='f_6' value='<?echo stripslashes($f_6);?>' size='28'></td></tr>
<tr><td align='right'><b>Message :</b></td><td><textarea name='f_7' rows='10' cols='70'><?echo $f_7?></textarea></td></tr>
<tr><td align='right'><b>Code anti-robots : </b><img src="/toplist/captcha.php" width='50'><?echo"$code";?></td><td><input type='text' name='f_8'></td></tr>
<tr><td align='right'></td><td><input type='submit' name='submit' value='Envoyer' ></td></tr>
<tr><td colspan='2' align="center"><br><font size="2">Les champs en gras sont obligatoires</font></td></tr>
</table></form></div></div></div></div>
<? }; include('../footer.php'); ?>
Captcha :
<?php
$code=(string)rand(1000,9999);  // Selection d'un nombre entre 1000 et 9999
$captcha=ImageCreate(38,15);    // Creation d'une image de 40x15px

$black=ImageColorAllocate($captcha,0,0,0);
$white=ImageColorAllocate($captcha,255,255,255);

ImageFill($captcha,0,0,$black);    // Remplissage du fond
ImageString($captcha,5,2,0,$code,$white);       // Ajout du code du captcha

Header("Content-type:image/png");
ImagePng($captcha);

ImageDestroy($captcha);
?>

Merci pour votre aide.
PS : Je n'ai pas utilisé les codes "de" PifiZ. J'ai préféré coder moi même.

ybouane
23/02/2010 à 23:26:53
ybouane
Admin
Bonjour,
On ne peut pas faire comme tu l'a dis Spitfire 95, de mettre le code dans le formulaire pour le récupérer et comparer, car le robot vas le récupérer lui même dans le formulaire.

Pour faire un captcha, il faut utiliser les sessions, donc au tout début, le code est déclaré dans la session, l'image est affiché, et ensuite, lorsque l'utilisateur valide, on compare le code dans la session et celui envoyé.

@Spitfire 95: souvent les captchas sont difficiles à lire car les robots sont muni d'un système "OCR" qui permet de récupérer un texte dans une image. donc si ton image n'est pas complexe(en utilisant imagestring), le robot vas réussir à la déchiffrer à tout les coups.

donc voici le code avec les sessions:
image:
<?php
session_start();
$code = rand(1000,9999);  // Selection d'un nombre entre 1000 et 9999
$_SESSION['code_captcha'] = $code;
$captcha = imagecreate(38,15);    // Creation d'une image de 40x15px

$black = imagecolorallocate($captcha,0,0,0);
$white = imagecolorallocate($captcha,255,255,255);

imagefill($captcha,0,0,$black);    // Remplissage du fond
imagestring($captcha,5,2,0,$code,$white);       // Ajout du code du captcha

header("Content-type:image/png");
imagepng($captcha);

imagedestroy($captcha);
?>
Comparaison lors de la validation:
<?php
if($_SESSION['code_captcha']==$_POST['code'])
{
}
?>

Cordialement :)

Image
Spitfire 95
24/02/2010 à 09:05:30
Spitfire 95
Membre
Merci.
Puisque ce code n'arrêtera pas les spams, j'abandonne l'idée du captcha. De toute façon, je ne reçois pas encore de spam.

Merci quand même.

Ad00500
24-02-2010 à 12:04:46
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Bonjour, ou bien cherche des scripts de formulaire de contact, tu trouvera surement avec un "Code Anti-Bot".
Essaye de regarder à cette adresse : http://www.web-modules.net/presentation-form2mail.html
J'en ai mis un sur mon formulaire de contact (mais page secrète, car mon site n'est pas encore réouvert, mais on peut y acceder  :p )

Spitfire 95
24/02/2010 à 15:40:02
Spitfire 95
Membre
Je sais, j'ai justement voulu voir leur code, mais on ne peux pas leur prendre, ils ne nous donnent pas le code PHP. C'est justement sur ta page de contact que j'ai vu le lien vers http://www.web-modules.net. Même si tu as bloqué ta page d'accueil et fait des redirections, ta page de contact marche toujours, et comme tout le monde, tu as appelé ta page de contact "contact", donc il m'a suffit d'ajouter /contact après ton url pour voir le nouveau design.
La curiosité est un vilain défaut. :grandsourire:
Mais tes pages top-secrètes, il m'auras quand même fallu 3 secondes avant d'y accéder... en contant le temps d'écrire l'url !  :p

Cordialement.

Ad00500
24-02-2010 à 16:11:15
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Lol oui je sais j'ai pas pu faire autrement mais chut !!! :D
Tu l'as trouve comment la "new version" ?
J'ai mis sur l'accueil que le site sera réouvert avant le 19 Avril, mais je pense qu'il sera réouvert largement avant car j'ai presque fini  :p

Spitfire 95
24/02/2010 à 16:42:47
Spitfire 95
Membre
Elle est sympa, mais t'es un tricheur, c'est même pas toi qui as codé ! ^^
Mais 20 erreurs et 18 avertissements pour le CSS, et 17 erreurs et 1 avertissement pour le XHTML, pour une stylesheet et des codes trouvés sur le net, c'est pas mal !
Si tu veux de l'aide, tu me le dis, je commencerais dès la semaine prochaine.

Et tu peux me rappeler l'adresse de ta bannière, stp ?
Cordialement.

Ad00500
24-02-2010 à 18:21:11
"Fc Barcelona, Més que Un Club" Ad00500
Membre
- Je sais car je n'ai aucune connaissance sur le Css, le PHP et le Javascript, pourtant je regarde des tutoriels...
Donc j'opte pour les scripts ! :0

- Tu veux m'aider sur quoi ?

- Pour l'adresse de la bannière : http://vocos.hebfree.org/img/banniere1.gif (Comme tu la voit en-dessous)

Spitfire 95
24/02/2010 à 18:48:01
Spitfire 95
Membre
- Tu veux m'aider sur quoi ?
Si tu veux que je code quelque chose, modifier le CSS, réduire et simplifier les PHP...
Je débute en PHP, mais je commence à me débrouiller.
Je peux aussi créer un formulaire de contact sans captcha je pense que tu l'avais compris ^^)

Mais comme je te l'ai dit, je ne pourrais pas commencer cette semaine, je pars demain.

PifyZ
24/02/2010 à 19:20:35
PifyZ
Membre
Moi aussi je peux aider, j'ai des connaissances en PHP, SQL, HTML et CSS
Elles sont pas super mes connaissances mais j'ai quand même réussi à créer un site visitable depuis ma signature.

Donc si tu as besoin d'un peu d'aide, je peux t'aider.

Je participe au forum pour aider les gens, même si pour le moment j'ai pas aider ^^

Spitfire 95
24/02/2010 à 19:46:11
Spitfire 95
Membre
"Je participe au forum pour aider les gens, même si pour le moment j'ai pas aider ^^"
Le plus important, c'est de participer !:0

"Le site est maintenant terminé, il ne reste plus qu'un petit détail : faire un système de page pour afficher les connaissances apprises, que je n'ai pour le moment, pas réussi à faire."
Qu'entends tu par un "système de pages" ? Je peux peut-être t'aider ?
J'ai des connaissances en HTML, CSS, PHP (un peu depuis 3 ou 4 jours), js (très peu, les 2-1er chapitres du manuel), python (plutôt utilisé pour les logiciels, mais peut aussi être utilisé pour le web dans des fichiers pih (Python inside HTML) ou hip (HTML inside Python)), et j'ai lu le chapitre 1 de C.

Mais il sert à quoi ton site ? C'est quoi un PifiZ ? On parle de quoi sur le forum ? Qu'est-ce que la PIFI Corporation ? Bref, elle est où la FAQ ?
Pourquoi faut-il choisir dans une liste de couleurs ? Pourquoi n'y a t-il pas un selecteur de couleur ?

"Je participe au forum pour aider les gens, même si pour le moment j'ai pas aider ^^"
J'ai une bonne nouvelle pour toi, tu vas pouvoir éclairer quelqu'un ! :0

@+

Ad00500
24/02/2010 à 20:08:03
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Pour l'instant j'ai besoin de rien, mais je vous le dirai quand j'aurai besoin d'un service...

Ad00500
24-02-2010 à 20:53:49
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Ah si le système de commentaire Php que malheureusement n'a pas été fourni et que je trouve superbe quand j'ai téléchargé ce kit : http://www.grafikart.fr/demo/wooden/index.html

PifyZ
25/02/2010 à 10:20:16
PifyZ
Membre
Qu'entends tu par un "système de pages" ? Je peux peut-être t'aider ?
Par système de page, je veux dire afficher les connaissances d'un membre à 15 par pages, pour pas en avoir 200 en une page.

Mais il sert à quoi ton site ? C'est quoi un PifyZ ?
PifyZ est un site permettant de créer des "intelligence artificielle" en lui apprenant des questions/réponses. J'ai eu l'idée de créer ça quand j'ai su que Skaaz, un site qui faisait pareil, aller fermer.

On parle de quoi sur le forum ?
Sue le forum, on parle de tout.

Qu'est-ce que la PIFY Corporation ?
La PIFY Corporation... c'est une longue histoire, je peux te dire qu'elle existe plus vraiment en ce moment et que le nom existe depuis 4 ans.

Bref, elle est où la FAQ ?
La FAQ est là : http://pifyz.site90.net/index.php?page=rya, vu que le forum vient d'un script... j'ai pas su le coder..., et donc c'est la FAQ du forum, et j'ai pas encore créer la FAQ parlant des PifyZ.  :-.

Pourquoi faut-il choisir dans une liste de couleurs ? Pourquoi n'y a t-il pas un selecteur de couleur ?
Tout simplement parce que les PifyZ sont des images, misent dans du flash, alors, à moins que je créer toute les couleurs possibles, oui je peux, mais y a trop de couleurs, alors je fais couleur par couleur :)

Je m'attendais pas à pleins de questions  O_o
Mais si ça t'as aider, tant mieux.  8-)

Bien sûr le site, tu peux trouver qu'il sert à rien, qu'il est nul, ou super utile, tu penses ce que tu veux  ;)

Spitfire 95
25/02/2010 à 11:15:11
Spitfire 95
Membre
"Ah si le système de commentaire Php que malheureusement n'a pas été fourni et que je trouve superbe quand j'ai téléchargé ce kit : http://www.grafikart.fr/demo/wooden/index.html"
Vas voir sur http://www.grafikart.fr/tutoriels/systeme-commentaire-php-45
Je n'ai pas regardé le tuto (je n'ai pas de son sur mon PC, donc ça ne m'aurais rien donné), mais d'après les commentaires qui ont étés postés, et d'après leur propre système de commentaires, ça doit marcher. Et puis, ça te fera travailler : tu vas coder, et non pas faire du copier coller.

Sinon, si tu veux utiliser un système prêt à l'emploi et déjà hébergé, il y a le système de news foruni par SupportDuWeb, qui doit faire à peu près la même chose :
http://www.supportduweb.com/service-news-gratuit-actualite-nouvelles-informer-visiteurs-service-news-script-gratuit.html
Mais celui-la non plus je ne l'ai pas testé.

Cordialement.

Ad00500
25/02/2010 à 11:51:46
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Bah je suis pas trop Php moi...
J'vais laisser le mien de systeme de commentaires pour l'instant..

Ad00500
28/02/2010 à 14:24:21
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Bon je vais dire une chose pour Spitfire :

J'ai enfin mis du Php dans mon site ! :D
(Un formulaire de contact que j'ai téléchargé sur Grafikart car je suis membre premium).

Ad00500
03-03-2010 à 20:37:38
"Fc Barcelona, Més que Un Club" Ad00500
Membre
J'aimerai créer un système de commentaire en Php mais sans base de données car beaucoup de pages sur mon site, mais malheureusement je n'ai AUCUNE connaissance en Php... :(
Quelqu'un pourrait-il m'aider ?
Merci. (J'attends avec impatience la réponse du grand Manitou du Web  <:) )

ybouane
04/03/2010 à 07:39:01
ybouane
Admin
Bonjour,
La seule solution pour toi serai d'utiliser des services pour webmasters sur internet, car pour en faire un bon mais sans MYSQL, ça vas être difficile.
http://www.i-services.net/membres/combox/

Cordialement :)

Image
Ad00500
04/03/2010 à 08:18:07
"Fc Barcelona, Més que Un Club" Ad00500
Membre
Bonjour, justement j'utilise ce système de commentaire là avec I-services. Merci quand même.

star-wars53
06/03/2010 à 18:51:44
star-wars53
Membre
test


emerick
18/04/2012 à 15:43:23
emerick
Membre
Tu peux mettre ce code:


<?php
$un = rand(1111, 9999) ;
$deux = rand(1111, 9999) ;
$trois = rand(1111, 9999) ;
$quatre = rand(50, 100) ;
$cinq = rand(50, 100) ;
$six = rand(50, 100) ;

$code=(string)rand(1000,9999);  // Selection d'un nombre entre 1000 et 9999
$captcha=ImageCreate(38,15);    // Creation d'une image de 40x15px

$black=ImageColorAllocate($captcha,$un,$deux,$trois);
$white=ImageColorAllocate($captcha,$quatre,$cinq,$six);

ImageFill($captcha,0,0,$black);    // Remplissage du fond
ImageString($captcha,5,2,0,$code,$white);       // Ajout du code du captcha

Header("Content-type:image/png");
ImagePng($captcha);

ImageDestroy($captcha);
?>
 
et après pour mettre ton captcha,
tu met:
<? include (monimage) ?> et tu as le résultat dans la variable $code.
Pour la garder dans ton fichier cible tu peut mettre
<? echo $code; ?> dans la valeur d'un champ caché...

Pages: 1