Cacher un lien d'ajout au panier

WRInaute discret
Bonjour,

Quelle est la meilleure manière de coder un lien "ajouter au panier" sachant que je ne souhaite pas qu'un robot provoque des ajouts au panier en parcourant ma boutique ? En effet, le panier est stocké en BDD et non pas en session.

Aujourd'hui, j'utilise une petite fonction js qui "écrit" la balise <a href= etc mais je suppose qu'il existe une méthode plus classe.

Avez-vous des suggestions ?
Merci
 
WRInaute accro
Xophe a dit:
Bonjour,

Quelle est la meilleure manière de coder un lien "ajouter au panier" sachant que je ne souhaite pas qu'un robot provoque des ajouts au panier en parcourant ma boutique ? En effet, le panier est stocké en BDD et non pas en session.

Aujourd'hui, j'utilise une petite fonction js qui "écrit" la balise <a href= etc mais je suppose qu'il existe une méthode plus classe.

Avez-vous des suggestions ?
Merci

Le faire en javascript via une fonction OnClick.
 
WRInaute discret
Le onClick présente l'inconvénient de laisser l'URL en clair dans le code. Un robot peut découvrir cette url et faire une requête sur celle-ci.

J'ai donc décidé d'utiliser la méthode suivante.
En PHP :
Code:
function hide_link($url, $content, $title=false, $target='_blank')
	{		
		$output1 = '<script language="javascript">' ;
		$output2 = '' ;
		
		$j = 0 ;
		for ($i=0; $i<strlen($url); $i=$i+2)
		{
			$output1 .= 'var a'.$j.'=\''.substr($url, $i, 2).'\';' ;
			$output2 .= '+a'.$j ;
			$j++ ;
		}
		
		$output1 .= 'document.write(\'<a href="\''.$output2.'+\'"'.($title ? ' title="'.$title.'"' : '').($target ? ' target="'.$target.'"' : '').'>'.$content.'</a>\');</script>' ;
				
		return  $output1 ;
	}

Cette fonction PHP va "découper" l'URL en blocs de 2 lettres puis la réassembler pour créer la balise a.

Code:
echo hide_link('http://www.example.com/panier/ajouter/1', 'Ajouter au panier', false, false) ;

produit le HTML suivant

Code:
<script language="javascript">var a0='ht';var a1='tp';var a2=':/';var a3='/w';var a4='ww';var a5='.e';var a6='xa';var a7='mp';var a8='le';var a9='.c';var a10='om';var a11='/p';var a12='an';var a13='ie';var a14='r/';var a15='aj';var a16='ou';var a17='te';var a18='r/';var a19='1';document.write('<a href="'+a0+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+'">Ajouter au panier</a>');</script>
 
WRInaute accro
En fait je n'envoie pas vers une page spécifique d'ajout au panier qui se charge, après mise à jour du dit panier, de faire la redirection vers la page d'origine.

Au OnClick, je soumet un formulaire sur la page en cours et c'est là que va se passer l'ajout au panier, lors du submit du formulaire, pas dans une page dédiée. Il y a aussi la solution de faire ça en Ajax.
 
WRInaute accro
De mon expérience, je pense que le mieux reste un formulaire :

<form action="pagedajoutaupanier.php" ...>
<input type="submit" value="Ajouter au panier"/>
</form>
 
WRInaute discret
Dans le cas de ma boutique, il va être très rare qu'un utilisateur ajoute plusieurs produits dans son panier. Je préfère donc l'envoyer directement sur la page "panier"
 
WRInaute accro
Xophe a dit:
Dans le cas de ma boutique, il va être très rare qu'un utilisateur ajoute plusieurs produits dans son panier. Je préfère donc l'envoyer directement sur la page "panier"

Tu peux faire ca avec un header php après le traitement.
 
Discussions similaires
Haut