Système d'auto-délestage

Petit nouveau ! | 3 Messages

01 juil. 2008, 00:55

Bonjour,

Je développe un PBEM (Play By E-mail (un jeu)) et je souhaiterais ajouter une fonction "d'auto-délestage" des comptes.

Je m'explique :

- Si au bout de 10 jours la personne n'effectue pas sa 1ère connexion, elle sera supprimée

- Si la personne ne se connecte pas pendant 30 jours, son compte est supprimé

Bien que je m'y connaisse bien en PHP, cette fonctions, je n'arrive pas trop la coder.

Voici le code (qui fonctionne pas) que j'ai bricolé pour essayer :

<table width="708">
<tr>
    	<td width="153">Pseudo</td>
        <td width="223">Date d'inscription</td>
        <td width="232">Derni&egrave;re connexion</td>
        <td width="223">Date d'inscription +10</td>
        <td width="232">Derni&egrave;re connexion +30</td>
	</tr>
<?php
$connection = mysql_connect("localhost", "root", "");
$base = mysql_select_db("sgre");

		$retour = mysql_query("SELECT * FROM user ORDER by `login`");
		while ($donnees = mysql_fetch_array($retour))
		{
			$id = $donnees['id'];
			$login = $donnees['login'];
			$user = $donnees['user_id'];
			$mail = $donnees['email'];
			$inscrip = $donnees['inscrip'];
			$last = $donnees['lastconnec'];
			$dix =  846000;
			$trente = 2592000;
?>
    <tr>
    	<td><?php echo $login; ?></td>
        <td><?php echo date('d-m-Y', $inscrip); ?></td>
        <td><?php echo date('d-m-Y', $last); ?></td>
        <td><?php echo date('d-m-Y', $inscrip + $dix);?></td>
        <td><?php echo date('d-m-Y', $last + $trente); ?></td>
	</tr>
<?php   	}
?>

<?php
	if($user_id = $last == 0)
	{
		if($inscrip + $dix <= time())
		{
			mysql_query("DELETE FROM user WHERE user_id='$user'");
			mysql_query("DELETE FROM Lantiana_personnages WHERE user_id='$user'");
			mysql_query("DELETE FROM Lantiana_caracteristiques WHERE user_id='$user'");
			mysql_query("DELETE FROM Lantiana_competences WHERE user_id='$user'");
			mysql_query("DELETE FROM newsletter WHERE email='$mail'");
		}
	}
	
	if($user_id = $last + $trente <= time())
	{
			mysql_query("DELETE FROM user WHERE user_id='$user'");
			mysql_query("DELETE FROM Lantiana_personnages WHERE user_id='$user'");
			mysql_query("DELETE FROM Lantiana_caracteristiques WHERE user_id='$user'");
			mysql_query("DELETE FROM Lantiana_competences WHERE user_id='$user'");
			mysql_query("DELETE FROM newsletter WHERE email='$mail'");
	}
?>
</table>
Bien sur cela ne fonctionne pas.

Si vous pouviez me conseillez, cela serait gentil.

D'avance, merci de votre aide

Selmac
Dernière édition par selmac594 le 01 juil. 2008, 01:21, édité 1 fois.

ViPHP
ViPHP | 5884 Messages

01 juil. 2008, 01:12

Qu'est ce qui ne fonctionne pas ?

Petit nouveau ! | 3 Messages

01 juil. 2008, 01:18

il n'exécute pas les taches comme

- Si la personne ne se connecte pas pendant 30 jours, le compte est supprimé
- Si la personne ne fait pas sa 1ère connexion dans les 10 jours, supprimé

J'ai l'affichage mais il n'effectue pas les requêtes + une corrections de mes âneries

ViPHP
ViPHP | 5884 Messages

01 juil. 2008, 01:43

Bah on va pas non plus te faire ton débuggage, il faut que tu utilises var_dump() sur tes variables en jeu ($last, $inscrip, time(), etc...) pour voir si le problème vient des conditions.
Au passage, c'est bien joli de mettre des affectations dans des conditions mais si tu ne veux pas de problèmes de précédence d'opérateurs, parenthèse les...

ViPHP
ViPHP | 4674 Messages

01 juil. 2008, 12:33

Hey :),
Au passage, c'est bien joli de mettre des affectations dans des conditions mais si tu ne veux pas de problèmes de précédence d'opérateurs, parenthèse les...
Il a raison. Tu peux quand même ne pas mettre de parenthèse, mais il faut les écrire dans le bon sens. Tu as écris :
$user_id = $last + $trente <= time()
Il va faire quoi ? Il dit : $user_id vaut $last. À $last, on ajoute la valeur de $trente <= time(), donc ce sera un booléen. Comme PHP est pas méchant, il va le transtyper en entier. Tu vas avoir $last + 0 ou $last + 1. Alors si c'est ce que tu veux faire, mets des parenthèses, sinon, le prochain qui va lire ça va se tirer les cheveux (et les cheveux, c'est sacré) … Ou alors, si tu veux avoir si $user_id est inférieure ou égal à time(), il faut l'écrire dans l'autre sens :
time() > $user_id = $last + $trente
Encore une fois, ce n'est pas transcendant, mais ça reste compréhensible.

Note, j'ai beau retourner le problème dans tous les sens, je ne vois pourquoi l'identifiant dépend d'un temps. Un identifiant est une entitée (un entier, une chaîne de caractère) qui identifie un utilisateur (dans notre cas) à travers le temps, les systèmes, les plates-formes, bref, tout. Si l'identifiant varie, ce n'en n'est plus un. Je crois qu'il y a un problème de méthodologie avant tout.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).