Executer une fonction par un lien

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Executer une fonction par un lien

par Invité » 22 mars 2005, 18:34

j'suis pas un as mais.....

http://exec.php?fct=mafonction

--------exec.php------
include("fct.php");
exec($fct)
-------------------------

--------fct.php---------
function mafonction(){echo("coucou");}
-------------------------

donc la solution c'est des truc genre exec() ou si je me rappel bien passthru()
mais tous ça c'est assez dangereux et je crois que ces fonctions sont désactivé chez les hebergeurs genre free

un autre solution m'interresse aussi

par Ultiny » 13 mars 2005, 01:40

Oui ça c'est vrai, on pourrait passer du code.

C'est bon ça marche avec les switchs et ça fait exactement ce que je voulais. Je reviendrais pour la securitée lol.

Mon problème de switch etait simplement dans le $_GET

Je précise que j'avais déja vu cette technique dans Nuked-Klan. voila

par ram2000 » 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é!

par Xenon_54 » 13 mars 2005, 01:05

Ouvre le fichier profile.php de phpBB2 et revient me voir.

par Invité » 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

par Xenon_54 » 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.

par Ultiny » 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.

par Xenon_54 » 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 :)

par Invité » 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.

par flitox » 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.

par Ultiny » 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

par Ultiny » 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.

Re: Executer une fonction par un lien

par mere-teresa » 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 ?

par Elie » 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>"; 
	} 
?>

par Ultiny » 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