Désactiver la sélection d'un texte

Résolu
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007 - 22 janv. 2007 à 10:25
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007 - 22 janv. 2007 à 13:43
Bonjour.

J'aimerais obliger les visiteurs de mon site à rentrer un code de confirmation se trouvant sur la page d'inscription.
Généralement ce code est une image créee dynamiquement en PHP.

Pour faire simple j'ai pensé qu'un texte étant impossible de sélectionner donc de copier était beaucoup plus facile à réaliser.

J'ai une ébauche :)
Toute personne ayant déjà voulu faire ca à déja vu ce code :p

function disableselect(e){
   return false
  }
  function reEnable(){
   return true
  }
  document.onselectstart=new Function ("return false")
  if (window.sidebar){
   document.onmousedown=disableselect
   document.onclick=reEnable
  }

Mon problème est que ce code désactive la sélection de tout le texte de ma page or j'aimerais qu'il s'occupe d'un texte spécifique.

Vous allez me dire de mettre ce texte dans un div et de remplacer document par document.getElementById mais cela ce marche pas il ne reconnais pas l'id que je lui donne.

Si quelqu'un a une solution je suis preneur :)
Merci ^^

15 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 12:19
tu n'as pas du comprendre ce que j'ai écrit
( mais je ne me comprend pas parfois moi-même, alors .... )
je me cite :

met l'ordre javascript après la balise ( ou la balise avant si tu préfères :-)) )

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 <head>
  <title>Titre</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" media="screen" type="text/css" title="code" href="code.css" />
 </head>
 
<form method="post" action="">

</form>
 
  <script type="text/javascript">
  function disableselect(e){
   return false
  }
  function reEnable(){
   return true
  }
  document.getElementById("code_pass").onselectstart=new Function ("return false")
  if (window.sidebar){
   document.getElementById("code_pass").onmousedown=disableselect
   document.getElementById("code_pass").onclick=reEnable
  }
  </script>

 
</html>

ou

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 <head>
  <title>Titre</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" media="screen" type="text/css" title="code" href="code.css" />
 </head>
 
<form method="post" action="">

</form>
 
 
</html>




<hr />                                    Cordialement                Bul        
3
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 10:52
Bonjour,

    °     ce code désactive la sélection de tout le texte de ma page ,
           j'aimerais qu'il s'occupe d'un texte spécifique.

                 onselectstart sur l'élement pas sur le document.
   °      il ne reconnais pas l'id
                 franchement aucune raison... mais sans le moindre petit
                 bout de code :


<hr />                                Cordialement               Bul    
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 11:03
   onselectstart sur l'élement pas sur le document.




Voudrais tu dire document.getElementById("").onselectstart ?
Cela ne marche pas non plus.
En effet je n'ai pas montré tout le code car il comporte pas mal de PHP et j'ai pensé que sur ce forum ce n'était pas approprié. Enfin le voici

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <script type="text/javascript">
  function disableselect(e){
   return false
  }
  function reEnable(){
   return true
  }
  document.getElementByName("codepass").onselectstart=new Function ("return false")
  if (window.sidebar){
   document.getElementByName("codepass").onmousedown=disableselect
   document.getElementByName("codepass").onclick=reEnable
  }
  </script>
 </head>
 
 <?php
 function random($car) {
  $string = "";
  $chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  srand((double)microtime()*1000000);
  for($i=0; $i<$car; $i++) {
   $string .= $chaine[rand()%strlen($chaine)];
  }
  return $string;
 } 
 $_SESSION['codepass'] = random(8);
 echo'';
 ?>
 
</html>

Il s'agit de la page code.src.php que j'inclu dans la page membres.php dont voici un extrait :

  . '<tr><td><label>Mail :</label></td><td></td></tr>'
  . '<tr><td colspan="2">'
  require('includes/code.src.php')
  .'<tr><td><label>Code :</label></td><td></td></tr>';

Voilà si le problème parait plus expliqué tant mieu
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 11:07
Désolé j'ai copier coller sans penser au fait qu'il s'agissait d'une version du même problème dans le fond mais pas dans la forme :)

Voici la partie modifiée dans le fichier code.src.php (juste avant les fermetures et </html> :

 $_SESSION['codepass'] = random(8);
 echo'
<?php echo $_SESSION['codepass']; ?> />';

Désolé pour le double post :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 11:12
il vaudrait mieux donner la page htmml générée que le php,
mais déjà tu utilise
document.getElementByName


utilise document.getElementById("id_voulu") en mettant dans la balise



<hr />                                    Cordialement                Bul            
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 11:18
on peut aussi mettre onselectstart dans cette balise
"input text", directement...
<hr />                                Cordialement        Bul        
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 11:39
Non cela ne marche toujours pas. J'ai tout insérer sur une seule page ; voici ma page de récupération de mot de passe :

function pass(){
 open_table('Récupération de votre pass');
 ?>
 <script language="Javascript 1.2">
  <!--
  function disableselect(e){
   return false
  }
  function reEnable(){
   return true
  }
  document.getElementById("codepass").onselectstart=new Function ("return false")
  if (window.sidebar){
   document.getElementById("codepass").onmousedown=disableselect
   document.getElementById("codepass").onclick=reEnable
  }
  //-->
  </script>
 <?php
 session_register("codepass");
 if(isset($_POST['lostpass'])){
  echo $_SESSION['codepass'];
 }
 else{
  echo''
  . 'Pour récupérer votre mot de passe, rentrez votre adresse mail et copiez les 8 caractères dans le champ prévu à cet effet.

'
  . '<form method="post" action="membres.php?act=pass" onsubmit="return(verif_code(this))">'
  . ''
  . '----
<label>Mail :</label>, , '
  . '----
';
  $_SESSION['codepass'] = random(8);
  ?>" /><?php
  echo'----, <label>Code :</label></td>, '
  . '----
'
  . '
</form>';
 }
 close_table(); 
}

Voila je pense que cette tentative est logiquement forcée de marcher...mais non :)
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 11:49
j'insiste : mais la page générée ! pas le php !



on ne sait pas ce que contiennent les variables, la base de données...

et pour ici, malgré tout, tu tente d'accéder à un élément qui n'existe pas encore.
n'oublies pas que le html,javascript... interprète les lignes de la page
les unes après les autres, en séquence de la 1ère à la dernière.
quand tu fais document.getElementById... la balise n'est pas encore créée.
met l'ordre javascript après la balise ( ou la balise avant si tu préfères :-)) )
<hr />                                    Cordialement                Bul        
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 11:52
il faut lire "les navigateurs interprètent le html/javascript..."
<hr />                                            Cordialement                Bul            
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 12:11
Bon j'ai fait une page a par en html contenant le problème simplifié :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 <head>
  <title>Titre</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" media="screen" type="text/css" title="code" href="code.css" />
  <script type="text/javascript">
  function disableselect(e){
   return false
  }
  function reEnable(){
   return true
  }
  document.getElementById("code_pass").onselectstart=new Function ("return false")
  if (window.sidebar){
   document.getElementById("code_pass").onmousedown=disableselect
   document.getElementById("code_pass").onclick=reEnable
  }
  </script>
 </head>
 



<form method="post" action="membres-pass.html">

</form>
 




 
</html>

Verdict cela ne fonctionne toujours pas :)
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 12:26
il y a bien aussi l'attribut unselectable="on"
( dans la balise ) mais exclusif IE je crois.
<hr />                                    Cordialement            Bul        
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
22 janv. 2007 à 13:10
j'ai oublié de dire aussi :
et que se passe-t-il pour les utilisateurs qui interdisent JavaScript ?
ce n'est pas à négliger : ils sont plus nombreux que ceux qui utilisent
FireFox par exemple ( enfin, aujourd'hui )
<hr />                                            Cordialement              Bul            
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 13:11
Merci beaucoup les deux marchent et désolé de ne pas avoir été rapide à la compréhension
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 13:43
Et bien pour ces rares élus ils pourront copier coller le code de confirmation ^^

Ce n'est pas dramatique le principe est d'éviter que des bots spam mon site au niveau des inscriptions.

Donc tant qu il y a le code tout va bien après impossible à sélectionner est un bonus pour montrer que le webmaster à réfléchi (et s'est fait aidé merci encore ;) )

Merci :)
0
GanJasTeR Messages postés 27 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 31 mai 2007
22 janv. 2007 à 13:43
Et bien pour ces rares élus ils pourront copier coller le code de confirmation ^^

Ce n'est pas dramatique le principe est d'éviter que des bots spam mon site au niveau des inscriptions.

Donc tant qu il y a le code tout va bien après impossible à sélectionner est un bonus pour montrer que le webmaster à réfléchi (et s'est fait aidé merci encore ;) )

Merci :)
0
Rejoignez-nous