Bloquer l'utilisation d'un script à un utilisateur

Eléphanteau du PHP | 30 Messages

09 avr. 2012, 15:48

Bonjour,

J'ai une console d'administration d'un site avec plusieurs utilisateurs autorisés.
Je dois mettre en place le "blocage" suivant:
Lorsque qu'un utilisateur fait la demande pour manipuler (par exemple mettre à jour) l'ID x mais qu'un autre utilisateur a déjà fait cette demande, il a un message "demande déjà en cours".

Avez-vous une idée ?

Merci d'avance :-)

ViPHP
xTG
ViPHP | 7331 Messages

09 avr. 2012, 16:50

Ajouter l'id du compte demandeur sur le n-uplet concerné ?
Si id vide on peut, sinon on a l'id de la personne ayant fait la demande.

Ou bien faire une table externe regroupant les demandes, mais à réfléchir à la modélisation pour pas faire une usine à gaz.

Eléphanteau du PHP | 30 Messages

10 avr. 2012, 10:11

Merci pour tes idées!

Ne connaissant pas l'utilisation d'un n-uplet... je passe ;-)

Je crois que je vais en effet partir sur une table annexe le plus simple possible, car il y a plusieurs scripts différents qui doivent être "contrôlés".
Je pense faire une table "transition" avec le USER et ID concerné.
Si l'ID n'est pas dans la table = on enregistre sur "transition" > exécute le script > on efface sur "transition".
Si l'ID est dans la table = on met un message "revenez plus tard!"

ViPHP
xTG
ViPHP | 7331 Messages

10 avr. 2012, 11:14

Un n-uplet c'est une ligne dans une table, un enregistrement si tu préfères.

Eléphanteau du PHP | 30 Messages

10 avr. 2012, 11:20

Ok, merci!

Donc, si je comprends bien, à la place de faire ma table "transition", j'ajouterai un champ à ma table existante qui serait p.ex. "en cours d'utilisation"?

ViPHP
xTG
ViPHP | 7331 Messages

10 avr. 2012, 11:56

Oui c'est cela.

Eléphanteau du PHP | 30 Messages

13 avr. 2012, 15:55

Pour info, j'ai donc créé une table sur laquelle je fais mon contrôle et cela fonctionne super bien!

Avant toute manipulation, je fais un contrôle et si c'est bon, j'insère l'info "en cours de manipulation"

$sql="SELECT * FROM inuse WHERE xInUse=$ID";
//execution de la requete:
$requete=mysql_query($sql, $cnx) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
if($result=mysql_fetch_object($requete))
{
echo("<span class='txt'><b>EST DEJA EN COURS DE MANIPULATION </b></span><br /><br />");
}
else
{
mysql_query("INSERT INTO inuse (xInUse, UserInUse, DateUse) VALUES ('$ID', '$UserID', '$Date')") or die(mysql_error());

ensuite, j’exécute ma requête - INSERT, UPDATE, etc....
et je ferme mon "en cours de manipulation" avec
mysql_query("DELETE FROM inuse WHERE xInUse = '$ID'") or die(mysql_error());
}