Exécuter un lien sous conditions

Répondre
coringan
le 24/03/2010 à 04:39
coringan
Comment ouvrir une page avec le lien suivant sous certaines conditions ?

Lien
<?php 
echo '<a href="MaPage.php">Ouvrir ici</a>';
?>


Conditions
<?php 
if($a == 1)
{
// On ouvre MaPage.php
}
else
{
// On n'ouvre pas MaPage.php et on affiche un message d’erreur : Exp. $a n’est pas bon !
}
?>
Je fais ce qui me plaît, et ce que je fais me plaît !
Keika
le 24/03/2010 à 06:19
Keika
deux facons:
-PHP - tu verifies tes conditions avec le serveur et tu actives ou non le lien (en integrant la balise HTML <a href=""></a> autour du mot)

-javascript: lors de l'event onClick, tu verifies tes parametres et tu autorises ou non le chargement de la page.
Le PHP --> C'est dur !
coringan
le 24/03/2010 à 12:31
coringan
Tout cela est très beau, merci.
Mais comment je dis tout ça en PHP ?
Le lien est déjà présent, c'est la condition qui fait que la page s'ouvre ou non au click.
Je fais ce qui me plaît, et ce que je fais me plaît !
Amery
le 24/03/2010 à 13:07
Amery
Si je comprends bien (pas sûr smiley), tu veux rediriger le visiteur vers une autre page? Dans ce cas, il faut utiliser la fonction header :

<?php
if($a == 1)
{
header('Location: mapage.php');
exit(); // Pour mettre fin à l'exécution du script
}
else
{
print("$a n’est pas bon !");
}
?>


Par contre, si tu veux ouvrir une fenêtre supplémentaire, là il faut passer par du javascript, mais c'est pas mon dada...
coringan
le 24/03/2010 à 21:39
coringan
Ok, je ceci au départ
<?php 
echo '<a href="MaPage.php">Ouvrir ici</a>';
?>


Si je te comprends bien c'est à peu près le code suivant qui fait l'affaire ?
<?php 
echo '<a href="if(isset($_SESSION['privilege']))
{
header('Location: FavorisLigne.php');
exit();
}
">'Favoris en ligne'</a>';
?>
Je fais ce qui me plaît, et ce que je fais me plaît !
Amery
le 25/03/2010 à 08:19
Amery
non...

le code qui fait l'affaire si tu veux rediriger le visiteur vers une autre page, c'est juste :

<?php
header('Location : mapage.php');
exit();
?>


Pas besoin de balise <a href=...>.

Mais je pense que pour ce que tu veux faire, il faut utiliser du javascript, et là, je m'y connais pas bien... Va peut-être voir sur des sites spécialisés javascript.
LA GLOBULE
le 25/03/2010 à 08:19
LA GLOBULE
Heu non, Amery avait donné la bonne solution.

Dans ton premier message, tu dis vouloir simuler un clic sur un lien (tu parles d'ouvrir une page) si une condition est valide.

Ceci est équivalent à une redirection : tu balances le visiteur sur la page ciblé par ce lien sans que le visiteur clic sur un lien.

Donc :

<?php
if ($condition_validee) {
header('location: la_page.php');
exit();
}
else {
echo 'une erreur';
}
?>
coringan
le 25/03/2010 à 12:47
coringan
Vous avez tous les deux raison.
mais il faut que le lien soit là avant tout, un peu comme un bouton.

<?php 
echo '<a href="MaPage.php">Ouvrir ici</a>';
?>


Tu cliques dessus, la page s'ouvre si la condition est remplie plus haut, mais ce que vous me proposez ne s'applique pas vraiment à mon problème.
Je fais ce qui me plaît, et ce que je fais me plaît !
LA GLOBULE
le 25/03/2010 à 12:58
LA GLOBULE
Ah ok.

Bon ben si la condition est remplie, tu affiches le lien et si elle n'est pas remplie, ben soit tu affiches du texte, ou bien un lien vers une page qui explique pourquoi le lien n'est pas activée ou bien une alert javascript, ou ce que tu veux.
En tout cas, sans faire des trucs crappy (javascript inside, c'est à dire qui ne marchera pas si la personne n'active pas le javascript), tu ne pourras pas afficher un "lien qui n'est pas clickable".

Par contre, il te faudra aussi faire une vérification dans MaPage.php pour vérifier que la personne avait bien le droit de clicker sur le lien (car clicker sur un lien et saisir une URL dans le navigateur, niveau PHP, c'est pareil).
Keika
le 28/03/2010 à 16:25
Keika
c'est quoi en fait la condition ?
et tu veux mettre un lien devant le nez de ton utilisateur mais sans le laisser y acceder ? alors qu'il pourrait tout simplement le copier et coller dans la barre d'adresse...

Je pense que verifier la condition avant d'afficher le lien serait meilleur.
Le PHP --> C'est dur !
Répondre
LoadingChargement en cours