Lien désactivé après click

Résolu
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis entrain de creer un site en php et j'ai un probleme qui me bloque vraiment depuis des jours.
Bon, j-ai des liens et je veux que lorsqu'un utilisateur clique dessus une fois le lien devient désactivé et on ne peut plus y cliquer.
j'ai essayé plusieurs codes javascript mais vainement.
J'attends vos propositions et si vous avez besoin de plus d'eclairsissement je serais prête.
A voir également:

16 réponses

Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
code final... dsl il m'a fallu le temps de comprendre comment fonctionnent les variables de session.
maintenant tout est retenu par session, donc même si rafraichissement ou modif d'URL, ça marche:
page1.php
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body>
<?php
if (isset($_SESSION['clic'])) {
echo "Clic=".$_SESSION['clic']."<br/><br/>";
echo "<a>vous avez d&eacute;j&agrave; cliqu&eacute; sur ce lien</a>";
}
else echo "<a href=\"page2.php?c=1\">Page2</a>";
?>
</body>
</html>


page2.php:
<?php
session_start();
$_SESSION['clic'] = $_GET['c'];
$clic = $_SESSION['clic'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body bgcolor="#999999">
</body>
</html>

<?php
echo "Clic=".$clic."<br/><br/>";
echo "<a href=\"page1.php\">Precedent</a>";
$_SESSION['clic'] = $clic;
?>
4
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
merci infiniment pour votre aide
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
ça y est j'ai trouvé:
page1.php:
<?php
session_start();
$clic = $_GET['c'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body>
<?php
if (isset($clic)) {
echo "Clic=".$clic."<br/>";
echo "<a>vous avez d&eacute;j&agrave; cliqu&eacute; sur ce lien</a>";
}
else echo "<a href=\"page2.php?c=1\">Page2</a>";
?>
</body>
</html>


page2.php
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body bgcolor="#999999">
</body>
</html>

<?php
$clic = $_GET['c'];
echo "Clic=".$clic."<br/>";
echo "<a href=\"page1.php?c=".$clic."\">Precedent</a>";
?>
1
stephbb75 Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   112
 
Bonjour,

La page se rafraiche une fois que tu a cliquer sur le lien ?
Si oui, il faut que tu utilise les cokie par exemple, ou les session pour mémoriser que l'on adéjà cliquer sur le lien.

StephBB75
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
effectivement, galère....moi j'ai essayé un truc qui ne marche pas encore mais c'est peut-être une piste
<script type="text/javascript">

function CELIEN(){
var clicsurlien=0;
var LIEN;
document.getElementsByTagName("a").onclick = clicsurlien++;
if (clicsurlien <= 1) {
	return LIEN="exemple.html";
}
else {
	return LIEN="#";
}
}
</script>
<a href="return CELIEN()">LIEN</a>
0

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

Posez votre question
stephbb75 Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   112
 
CEla ne fonctionneras pas comme cela.
Il faut faire qqchoses comme cela :


<script type="text/javascript">

function CELIEN( numLien )
{
var ObjLien = document.getElementsByTagName("Lien"+numLien);

if ( ObjLien.var = 0)
{
ObjLien.var = 1;
ObjLien.href = "#";

}

}
</script>



<a id="Lien1" var=0 href="Lien1.html" Onclick="CELIEN('1')">LIEN 1</a>
<a id="Lien2" var=0 href="Lien2.html" Onclick="CELIEN('2')">LIEN 2</a>
...

Pas tester mais cela devrais fonctionné, et c'est dans l'idée de ce qu'il faut faire.

Steph
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
pas con... y a une erreur de syntaxe à la ligne if ( ObjLien.var = 0) selon dream...
moi j'ai testé ton code avec target="_blank" dans les liens, mais ça ne fonctionne pas. J'essaye de voir si je peux corriger ça
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
moins difficile, tu utilises une librairie JS pour masquer le lien après le premier clic en agissant sur la
feuille de style (visibility:hidden;) voir JQUERY, SCRIPTACULOUS, MOOTOOLS.
Y en bien un des trois qui doit savoir le faire.
0
stephbb75 Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   112
 
Oui sur le if il manque un = ;-)

Je n'utilise pas dream... mais notpad++ pour faire des sites ;-)
Et les lib JS j'aime bien me compliquer la vie en ne les utilisent pas ;-)

Tu peut voire quelques une de mes réaliseation en JavaScript ici : http://sitedesteph.free.fr/ y'a un jeur en JS, des demos, un simulateur d'amiga, ....

Effectivement on doit pouvoir faire la même choses en passent par les feuilles de style.

Steph
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
avec ceci ça marche. juste un petit blem de display du slideup à régler avec un overflow=hidden sur le container du lien (un li par ex)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>
<body>
<script src="http://code.jquery.com/jquery-latest.js"></script>

<script>
  $(document).ready(function(){
    
    $("#lien").click(function () { 
      $(this).slideUp(); 
    });

  });
  </script>
  <style>
  #lien { color:black; cursor:pointer; text-decoration:none; }
  a:hover { background-color:#09C; padding:10; }
  </style>
</head>
<body>
  <a id="lien" href="#">Lien</a>
</body>

</body>
</html>
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour ce code mais malheureusement lorsque je l'ai essayé le lien est vraiment devenu grisé mais on peut toujours y cliquer et passer à la page suivante.
Et moi ce que je veux c'est quand un utilisateur clique une fois il se redirige vers la page suivante,mais quand il revient une autre fois le lien devient innaccessible,c.à.d qu'il trouve le lien grisé.

En plus d'aprés ce que je sais le cod javascript doit etre entre la balise <head> et non pas <body>
donc je me demande si dans ton code c'est juste une faute de frappe ou il faut le mettre vraiment dans <body>???

Aussi il y a 2 balises <body> et 2 <head> ce qui me parait un peu etrange.Et j'espere que c'est seulement une faute de frappe.


Et merci bcp en tt cas
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
merci tous pour vos réponses j'en suis vraiment reconnaissante.
0
stephbb75 Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   112
 
Salut sahoumita,

Pour ce que tu veut faire c'est beaucoup plus compliquer que ce qu'il n'y paris.
En fait il faut mémoriser que la personne est déjà venu sur la page et qu'elle a cliquer sur le lien.
Et de toute façon, s'il ferme son navigateur et vide son cache et ses cookies, il pourras toujours recliquer sur le lien en revenant sur la page.
Pour ce que tu veut faire, il faut gérer les utilisateur (login/PW) et mémoriser qu'il a cliquer sur le lien.
Cela ne peut se faire qu'en PHP (ou ASP), pas en HTMl/JavaScript/CCS

Steph
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
Si je t'ai bien compris,je pense que pour moi cette partie est déjaà faite et voici un extrait de mon code pour voir si c'est justement ce que tu viens de dire:

<?php
//connexion à la base

if ($_SESSION['login'] != ' ') //Le geek est loggué ?
{
$pseudo = $_SESSION['login'];
// et je comence à eecuter mon code
....
.....


?>

Donc c'est avec cette partie de code que je garde une session toujours ouvertes entre les pages et je peux mémoriser que la personne est déjà venue sur la page.
Maintenant ce qui m manque je pense c'est de l'action script pour résoudre mon problème n'est-ce-pas?
0
stephbb75 Messages postés 726 Date d'inscription   Statut Membre Dernière intervention   112
 
Oui c'est bien cela, il faut que tu fasse une variable de session et que tu l'utiliser, et quand tu ne veut pas le lien, tu envoie un lien sans href (ou mieux, tu ne met pas de lien mais un simple texte ce qui seras plus compréhensible par l'utilisateur qu'un lien qui ne fait rien ! )
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
mais moi je veux qu'au départ que l'utilisateur trouve un lien pour pouvoir acceder à la page suivante.Mais il n'a le droit de passer à cette page suivante qu'uen seule fois c'est pour cela que je veux que quand il revienne il trouve le lien grisé ou quoi que ce soit,l'essentiel c'est qu'il ne pourra plus accéder à la page suivante.
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
avec session_start();, pas besoin de login en tout cas. pour un de mes sites j'ai récupéré un panier que j'ai lié à paypal et qui fonctionne avec session_start.
j'ai deux-trois heures de libre cette aprem je vois si je peux te concocter un truc avec ça.

dsl pour le code précédent effectivement, j'ai laissé un body en trop et il ne fonctionne que si tu ouvre le lien en popup, et que l'utilisateur ne rafraichit pas... donc inutile dans le cas présent.
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
D'abord merci pour accorder de l'importance pour mon problème.
Alors est-ce-que tu proposes de nouvelles solutions?
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
tu vois il faut rappeler les données dans l'URL. je croyais que ce n'était pas obligatoire avec session_start(); mais apparemment c'est le cas.
après le problème c'est que si l'utilisateur fait précédent ce code ne marche plus; mais là ça fonctionne si tu incites l'utilisateur à naviguer depuis ta page.
il y a peut-être un equivalent de onprevious(); en php à toi de le trouver!
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
merci bcp ça marche pour l'instant meme si je n'ai pas encore fait toutes les modifications mais je ne sais pas pourquoi il me donne toujours cette erreur:
Notice: Undefined index: c au niveau de la page2.php meme avant modification.Est-ce-que t'as une idee à ce propos par ce que moi je ne suis que débutante en php et je n'en sais pas trop.
Et merci
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
es-tu sûre d'avoir bien copié le code?
c'est ce que j'ai fait et je n'ai pas cette erreur.


nota: toute page php doit être testée sous wamp (win) ou mamp (mac) si en local, ou sinon en distant.

sinon je vais essayer d'améliorer ce code car la variable n'est pas définie en tant que variable de session, je crois même que session_start(); n'est pas utile avec un code aussi simple.
J'essaye de voir ça dès que j'en ai le temps. avec un include contenant la variable de session ça devrait être mieux et les internautes auraient beau cliquer sur précédent, la variable serait retenue.
0
sahoumita Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
 
oui j'ai copié le code tel qu'il est
0
Judes-Emile Bornes IV Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   12
 
tu peux voir ces deux pages, code identique je le garantis à l'adresse suivante:
http://www.laplumesurlatoile.com/Tests/page1.php
0