Executer une fonction par un lien

ViPHP
ViPHP | 656 Messages

19 févr. 2005, 23:14

Bonjours, je recherche actuellement comment faire pour, l'orsqu'on clic sur un lien, une fonction de la page soit executé sur cette page.

Dans mon cas je voudrais executer session_unregister ('login'); pour deconecter les utilisateurs du site.

J'ai vu qu'il y avait des techniques avec pour lien : index.php?page=Membre&op=Deconnexion

Dont le code ressemblerait à ça :

function deconnexion() {
session_unregister ('login');
}

switch($op){
case "logout":
echo"rien";
deconnexion();
session_unregister ('login');
break;
}


Si vous pouviez me donner un lien, un avis, une astuce ou simplement le nom courant de cette technique. Merci

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

20 févr. 2005, 10:28

Attention on le répètera jamais assez mais php s'éxécute sur le serveur et renvois une résultat donc on peut pas créer de lien direct entre du html et du php.

Pour ton bouton tu dois rechargé la page avec un paramètre par exemple en url ?login=deconnecte
et au début de ta page php tu controle si le paramètre login=deconnecte alors tu exécute ta fonction.

a+

ViPHP
ViPHP | 656 Messages

20 févr. 2005, 14:06

Oui j'ai bien essayé ça par 3 possibilité, mais la pluspart du temps, il execute tout d'un coup malgré les if et else

Voici ce que j'ai deja tenté

Code : Tout sélectionner

<?PHP if(!isset($_SESSION['login'])){ if ( isset( $_GET['op=Inscription'] ) && $_GET['op=Inscription']) {echo"inscrit";} else{ echo"bas";} if ( isset( $_GET['op'] ) && $_GET['op'] = 'Passperdu' ) {echo"pass";} else{ if ( isset( $_GET['op'] ) && $_GET['op'] = ('Deconnexion') ) {echo"deco";} else{echo"connect";}} }else{ $login = $_SESSION['login']; echo"<div align=\"center\" class=\"centre\">Vous &ecirc;tes d&eacute;ja connect&eacute; en temps que ".$login."<br><br><a href=\"index.php?page=Membres&op=Deconnexion\" class=\"centre\">Deconnexion</a></div>"; } //Les fonctions ensuite (les echo c'est juste pour tester que ça fonctionne)

Donc si vous connaisez une methode, ou alors un bon tuto merci bien

Mammouth du PHP | 1339 Messages

21 févr. 2005, 07:53

Ca ne suffie pas ca ?
<?PHP 

function deconnexion() { 
session_unregister ('login'); 
} 



	if($_GET['op'] == "Deconnexion") {
		deconnexion();
		echo "votre session a ete detruite";
						   }else{ 
		$login = $_SESSION['login']; 
		echo"<div align=\"center\" class=\"centre\">Vous &ecirc;tes d&eacute;ja connect&eacute; en temps que ".$login."<br><br><a href=\"index.php?page=Membres&op=Deconnexion\" class=\"centre\">Deconnexion</a></div>"; 
	} 
?>
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 févr. 2005, 13:10

Bonjours, je recherche actuellement comment faire pour, l'orsqu'on clic sur un lien, une fonction de la page soit executé sur cette page.

Dans mon cas je voudrais executer session_unregister ('login'); pour deconecter les utilisateurs du site.

J'ai vu qu'il y avait des techniques avec pour lien : index.php?page=Membre&op=Deconnexion

Dont le code ressemblerait à ça :
function deconnexion() {
session_unregister ('login');
}

switch($op){
case "logout":
echo"rien";
deconnexion();
session_unregister ('login');
break;
}

Si vous pouviez me donner un lien, un avis, une astuce ou simplement le nom courant de cette technique. Merci
Ben, tu souhaites que quand on clique sur le lien Déconnexion ou Quitter, la session se termine ?

C'est assez simple, tu mets un lien <a href="nomduprogramme.php"></a> et quand la personne clique, le programme nomduprogramme.php est exécuté, elle va sur cette page.
Donc, à toi après de mettre dans le programme ce qu'il faut pour : la déconnecter (kill de session) et la renvoyer sur une page (accueil, aurevoir ou autre.)

Encore des questions ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

ViPHP
ViPHP | 656 Messages

21 févr. 2005, 19:28

Je ne voulais pas rediriger vers une autre page. J'ai plus ou moins bien resolut le problème en mettant un bouton cliquable au lieu d'un lien. Il verifie si le bouton a été cliqué si oui il deconnecte, sinon il laisse affiché le bouton.

ViPHP
ViPHP | 656 Messages

12 mars 2005, 16:30

Je reprends le problème.

Il faudrais que ma page soit découpée en plusieurs fonctions, cette page serait elle même inclus dans index.php par pseudo-frame.

Lorsqu'on cliquerais sur un lien par exemple index.php?page=Membre&op=Deconnexion ce serait la fonction Deconnexion dans ma page membre qui serait executée, mais je ne veux pas rediriger vers une page deconnexion.php

Mammouth du PHP | 859 Messages

12 mars 2005, 19:06

Attention on le répètera jamais assez mais php s'éxécute sur le serveur et renvois une résultat donc on peut pas créer de lien direct entre du html et du php.

Pour ton bouton tu dois rechargé la page avec un paramètre par exemple en url ?login=deconnecte
et au début de ta page php tu controle si le paramètre login=deconnecte alors tu exécute ta fonction.

a+
Pourquoi tu ne veux pas faire ça?

Tu places dans ta page une condition qui teste ta_page_courante?login=deconnecte et si login est bien égal à deconnecte tu tues la session.

C'est la méthode la plus simple et toi tu ne veux pas la faire...cherchez l'erreur...

Personnellement c'est la méthode que j'applique pour déconnecter une session.

Invité
Invité n'ayant pas de compte PHPfrance

12 mars 2005, 23:42

Prenons l'exemple de PHPbb, ils ne font pas comme ça il me semble.

ils arrivent à faire ce que je veux, c'est pareil pour phpNuke et beaucoup d'autres tels que IPB.

Je ne veux pas faire ça car mon fichier membre va comporter absoluement tout ce qui concerne l'utilisateur : connexion, inscription, passperdu, modification des infos,...

Je ne veux pas avoir a faire à chaque fois un bouton, je veux un lien c'est plus simple ce dont je parle pour l'utilisation que je veux.

Mammouth du PHP | 1885 Messages

12 mars 2005, 23:45

Tu crées un fichier logout.php qui se chargera de supprimer la session en cour pour ensuite rediriger le visiteur vers une page d'accueil ou une page normale.

C'est aussi simple que ça :)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

ViPHP
ViPHP | 656 Messages

13 mars 2005, 00:34

Non, je ne veux pas un milliard de fichiers dans mon site.

Je veux faire des fonctions toutes dans le même fichier, si je commence à créer un fichier pour chaques fonction j'ai pas fini.

Ma demande n'est pas compliquée pourtant, des masses de personnes l'utilisent, yen a plein ce forum de situations comme la mienne.

Mammouth du PHP | 1885 Messages

13 mars 2005, 00:55

Regarde : Prenons par exemple phpBB que tu sembles prendre toi-même pour exemple.

phpBB possède de nombreuses librairies et fichiers. Il serait inadapté d'utiliser qu'un seul fichier pour gérer tout ton site. Un site n'est pas un seul fichier, c'est un ensemble de librairies et fichiers remplissant chacun leur fonction.

Par exemple, le fichier profile.php de phpBB est en fait qu'une simple fenêtre sur les diverses librairies disponibles. Le fichier se charge d'inclure la librairie correspondant à l'action souhaitée. Donc un seul fichier semble remplir chacune des fonctions alors qu'en fait, des dizaines de librairies sont créées afin de gérer les diverses actions possibles.

La création de fichiers est inévitable si l'on veut un code clair et efficace.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Invité
Invité n'ayant pas de compte PHPfrance

13 mars 2005, 01:03

Nan mais moi je veux que le fichier membres s'occupe de tout ce qui est membre, dans phpbb je vois tres bien qu'il est possible d'afficher un message d'erreur, de delogguer, de créer un compte par le meme fichier (on le vois dans le lien) alors pourquoi, moi, sur mon projet, je ne pourrais pas faire pareil ?

Ceci est nettement plus simple, je decoupe en fonction, j'appel la fonction qu'il me faut quand j'en ai besoin plutot que d'appeler un autre fichier pour lequel je devrais a nouveau ajouter le nom pour les pseudo frames etc.

Je recherche uniquement cette possibilitée pour mon site, j'ai vu qu'il était possible avec les switch, ce serait tres bien ça mais je n'y arrive pas.

Si quelqu'un alors pourrais m'expliquer comment faire un switch qui fonctionnerait bien.

Merci

Mammouth du PHP | 1885 Messages

13 mars 2005, 01:05

Ouvre le fichier profile.php de phpBB2 et revient me voir.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 20 Messages

13 mars 2005, 01:20

De plus je précise que de passer des actions par l'URL peut être dangeureux si le code n'est pas bien sécurisé!