Trouve pas l'erreur !

zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 24 avril 2005 à 14:46
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 30 avril 2005 à 12:06
Bonjour,
Voilà, j'ai un problème, j'ai téléchargé un espace membres sur le net, très bien d'ailleurs, et j'ai essayé de le modifier pour qu'il m'affiche le nombre de jours de connexion, c'est à dire si je me connectes lundi, mercredi, jeudi, il m'affichera 3. Le truc c est que j'ai créer un champ $lastlog, qui est la dernière connexion. Ce champ devrait contenir la date de la dernière connexion sur le site. J'ai également ajouter $nbjours, qui dit le nombre de jours de connexion sur le site. En fait, à la connexion, je regarde si $lastlog est egal a aujourd'hui sinon je fais +1 à $nbjours, ensuite j'acualise $lastlog.
En théorie, ca marche, mais en pratique c est différent.
ERREUR: Bienvenue dans votre espace membre, c'est votre 0eme jour de connexion.
Je vous laisse regarder la page de verification de la connexion et de l inscription...

verification de la connexion: pdf_connexion2.php:

<?
session_start();
require "conf.php3";
mysql_connect("$sql_serveur","$sql_login","$sql_pass");
mysql_select_db("$sql_bdd");


mysql_query("SELECT nbjours FROM pdf_membre WHERE pseudo= '$pseudo'");
mysql_query("SELECT lastlog FROM pdf_membre WHERE pseudo='$pseudo'");


$lastlog=addslashes(htmlspecialchars($_POST[lastlog]));
$nbjours=addslashes(htmlspecialchars($_POST[nbjours]));


$pseudo = $_POST['pseudo'];
$pass = $_POST['password'];


if ($pseudo != NULL AND $pass != NULL)
{


$reponse = mysql_query ("SELECT * FROM pdf_membre WHERE pseudo='$pseudo'");
$donnees = mysql_fetch_array ($reponse);
$verif = $donnees['pass'];
$id = $donnees['id'];
$pseudo_sql = $donnees['pseudo'];
$confirm = $donnees['confirm'];

if($_SESSION["SESSION_OUVERTE"] != 1)
{
$lastlog = $donnees["lastlog"];
$interval_temps = mktime(0, 0, 0, date("m") , date("d") , date("Y")) - $lastlog;
$lastlog = mktime(0, 0, 0, date("m") , date("d") , date("Y"));

$_SESSION["SESSION_OUVERTE"] == 1;
}

if($pass != $verif)
{
$reponse = 'Votre identifiant ou votre code secret est incorrect';
$redirection = 'pdf_connexion.php';
}
elseif($confirm != NULL)
{
$reponse = 'Votre compte n\'est pas encore activé';
$redirection = 'pdf_connexion.php';
}
else
{
$_SESSION['pseudo'] = $pseudo_sql ;
$redirection = 'pdf_espace_membre.php';
$reponse = 'Connexion réussie vous allez être redirigé.
[pdf_espace_membre.php Rejoindre directement l\'Espace membre]
Dernière connexion :' . date("d/m/Y : H\hi", $interval_temps);
}
}
if($interval_temps != 0)
{
$nbjours == $nbjours + +;
}
mysql_query("UPDATE pdf_membre SET nbjours='$nbjours' WHERE pseudo='$pseudo'");
mysql_query("UPDATE pdf_membre SET lastlog='$lastlog' WHERE pseudo='$pseudo'");
?>
<html>
<head>
<meta http-equiv="refresh" content="2;URL=<? echo "$redirection"; ?>">
</head>
<? echo "$reponse"; ?>

</html>

verification de l'inscription: pdf_inscription2.php:

<?php
session_start();


require "conf.php3";


mysql_connect("$sql_serveur","$sql_login","$sql_pass");
mysql_select_db("$sql_bdd");


if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail))
{
$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$confirm = str_shuffle($chaine);
$pseudo = htmlentities($_POST['pseudo']);
$mail = htmlentities($_POST['mail']);
$mdp = htmlentities($_POST['mdp']);
$verif_mdp = htmlentities($_POST['verif_mdp']);
$lastlog = mktime(date("m") , date("d") , date("Y"));
$nbjours = htmlentities($_POST['nbjours']);
$parrain = htmlentities($_POST['parrain']);

$message1 = '<html> Bonjour ' . $pseudo . ' et bienvenue sur site. ';
$message1 . = '';
$message1 .= '
Merci pour votre inscription !
';
$message1 .= 'Voici un rappel de vos identifiants, gardez les précieusement :
';
$message1 .= 'Votre Pseudo :' . $pseudo .'.
';
$message1 .= 'Votre Mot de passe:' . $mdp .'.

';
$message1 .= 'Votre Mail:' . $mail .'.

';
$message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.
';
$message1 .= 'Copiez ou cliquez sur le lien ci-dessous pour activer votre compte:
';
$message1 .= 'http://site.com/membres/confirm.php?login=' . str_replace(' ','%20',$pseudo) . '&confirm=' . $confirm . '

';
$message1 .= 'A très bientôt sur le site!

[http://www.site.com/">site';


$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo'") or die (mysql_error());
$donnees = mysql_fetch_array($verification)or die (mysql_error());


if($donnees['COUNT(*)'] >= 1)
{
$reponse = 'Désolé, ce pseudo est déjà utilisé, merci d\'en choisir un nouveau. [javascript:history.back(1) Retour au formulaire]';
}
else
{
$verification2 = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE mail='$mail'") or die (mysql_error());
$donnees2 = mysql_fetch_array($verification2)or die (mysql_error());

if($donnees2['COUNT(*)'] >= 1)
{
$reponse = 'Cette adresse e-mail est déjà utilisé, veuillez en choisir une autre. [javascript:history.back(1) Retour au formulaire]';
}
elseif( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail))
{
$reponse = 'Un ou plusieurs champs ne sont pas remplis, [javascript:history.back(1) Retour au formulaire]';
}
elseif( $mdp != $verif_mdp)
{
$reponse = 'Les mots de passe ne sont pas identiques, [javascript:history.back(1) Retour au formulaire]';
}
elseif( $pseudo == $parrain)
{
$reponse = 'Vous ne pouvez pas vous parrainer vous-même! [javascript:history.back(1) Retour au formulaire]';
}
else
{
mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$lastlog', '$nbjours', '$parrain')");
$reponse = 'Bravo, vous êtes maintenant inscrit sur mon site.
Vous allez recevoir un mail pour activer votre compte.
http://www.site.com/">Retour à l\'Accueil';
$email_admin = [mailto:'mon_mail@moi.com' 'mon_mail@moi.com'];
$entete = "MIME-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: <$email_admin>\r\n";
$entete .= "Reply-To: $email_admin\r\n";
mail($mail,'Inscription sur Gamwin' . $login .'.' , $message1, "$entete");
}
}
}
else
{
$reponse = 'Votre adresse e-mail "' . $mail . '" n\'est pas correcte. [javascript:history.back(1) Retour au formulaire]';
}






?>


<html>

<? echo "$reponse"; ?>

</html>

structure de la table:

CREATE TABLE `pdf_membre` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(255) NOT NULL default '',
`pass` varchar(255) NOT NULL default '',
`mail` varchar(255) NOT NULL default '',
`confirm` text NOT NULL,
`lastlog` date NOT NULL default '',
`nbjours` int(11) NOT NULL default '',
`parrain` text NULL,
KEY `id` (`id`)
)

je sais deja que mktime() c est faux, mais je sais pas quoi mettre à la place, parce que je prefererais qu'il m'insère dans la bdd que la date, mais je connais pas la fonction... Alors si qqn peut deja m'aider pour ca ce serait deja cool...

merci d'avance pour votre aide.
F

18 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 avril 2005 à 15:06
Salut,



condense ton code stp...



merci

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
24 avril 2005 à 15:14
tiens, si tu veux le zip: http://membres.lycos.fr/ludigratuit/membres.zip c est plus simple, regarde pdf_connexion2.php et pdf_inscription2.php.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 avril 2005 à 15:16
Non je veux juste que tu condenses ton code...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
24 avril 2005 à 15:19
lol, ca change quoi? Le code la il est condenser je trouve, il y a juste les 3 sauts de ligne à la fin, mais ils se font automatique.
Sinon, tu peux m'aider???

merci
F
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 avril 2005 à 15:46
ça change que c'est trop long à lire :-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
24 avril 2005 à 16:19
Si tu telecharges et ouvre avec dreamweaver, il te met des jolies couleurs, et tout est clair...
0
KheYrO Messages postés 22 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 24 avril 2005
24 avril 2005 à 23:40
Yo!
je sais pâs si ca vient de la mais le $nbjour = $nbjour + + ça veut rien dire, soit tu met $nbjour += 1 ou $nbjour = $nbjour + 1 (ou je crois ++$nbjour) et pourquoi un = = ??? c'est reservé au if.
Voilà essaye et dis-moi
CiaO


- FoReVeR ChiNeSe PoWeR -
- KheYrO -
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2005 à 10:45
Hello,



KjeYrO t'as donne ta reponse je pense.

$nbjours == $nbjours + +; est faux.



$nbjours ++ ; est juste.
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
26 avril 2005 à 12:58
ah ok merci, je teste et je vous redis !
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
26 avril 2005 à 13:03
merci c est cool, c'est une erreur de moins lol, mais ca marche tjs pas.
Sinon je voudrais savoir c est quoi le code php pour insérer une date (sans l'heure) dans une bdd???
Parce que je crois qu il y a une erreur qui vient de là.

merci d'avance
F
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
26 avril 2005 à 13:19
Je voudrais parler de la fonction, par ex mktime, time, date, ... Je ne sais pas trop et dans la doc php je trouve pas
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2005 à 14:17
Hello,

php et mysql ne gerent pas les dates de la meme maniere. IL faut convertir.
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
27 avril 2005 à 11:53
et je peux faire comment pour qu il insère dans la bdd une date au format aaaa-mm-jj, je parle du php. Moi j'en ai besoin que pour faire des comparaisons, alors après j'aurais pas besoin de convertir il me semble.

Pour l'instant j'ai ceci qui s insere dans la bdd a l inscription. Mais le prob, c est que j ai deja modifier ma base pour qu elle insere des dates au format aaaa-mm-jj:

$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
$confirm = str_shuffle($chaine);
$pseudo = htmlentities($_POST['pseudo']);
$mail = htmlentities($_POST['mail']);
$mdp = htmlentities($_POST['mdp']);
$verif_mdp = htmlentities($_POST['verif_mdp']);
$lastlog = mktime(date("m") , date("d") , date("Y"));
$nbjours = htmlentities($_POST['nbjours']);
$parrain = htmlentities($_POST['parrain']);

il faudrait remplacer la ligne en gras par celle qui insere la date au format aaaa-mm-jj, le prob c est que je sais pas ce qu il faut mettre.
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
27 avril 2005 à 12:07
Je viens de trouver un tuto sur le net. Mais je sais pas si c est adaptable a ma situation:

<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'login', 'password');

// on seléctionne la base
mysql_select_db('nom_de_la_base',$db);

// on crée la requete SQL
$sql = 'SELECT nom,prenom,statut,DATE_FORMAT(date, '%d-%m-%Y') as datefr FROM famille_tbl';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_array($req))
{
// on affiche les informations de l'enregistrement en cours
echo ''.$data['nom'].' '.$data['prenom'].' ('.$data['statut'].')';
echo ' date de naissance : '.$data['datefr'].'
';
}

// on ferme la connexion à mysql
mysql_close();
?>
merci d'avance,
F
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
27 avril 2005 à 13:03
Merci pour votre aide !
Tout marche, j'ai trouvé les erreurs !

MERCI
F
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
30 avril 2005 à 09:09
dsl, j'ai cru que tout marchait, mais une erreur inconnue persiste: Si je me connectes sur mon site ayant 0 jours de connexion et la date est la date d'inscritpion (différente d aujourd'hui). Tout ceci est insérer correctement à l'inscription dans la bdd, j ai verifié. Quand je me connectes, il m'affiche c'est mon 1er jour de connexion donc il a fait +1 a $nbjours. Jusque là tout va bien. Mais si dans la bdd je change la date de derniere connexion pour pouvoir me reconnecter aujourd'hui, tout marche, mais apres lorsque je me connectes sur le site, il me met c est votre 1er jour de connexion alors qu'il devrait mettre c est votre 2eme jour de connexion.
Bon, j'ai tout essayé je trouve pas.
Voilà le code:
<?
session_start();
require "conf.php3";
mysql_connect("$sql_serveur","$sql_login","$sql_pass");
mysql_select_db("$sql_bdd");


mysql_query("SELECT nbjours, lastlog FROM pdf_membre WHERE pseudo='$pseudo'");


$lastlog=addslashes(htmlspecialchars($_POST[lastlog]));
$nbjours=addslashes(htmlspecialchars($_POST[nbjours]));

$pseudo = $_POST['pseudo'];
$pass = $_POST['password'];


if ($pseudo != NULL AND $pass != NULL)
{


$reponse = mysql_query ("SELECT * FROM pdf_membre WHERE pseudo='$pseudo'");
$donnees = mysql_fetch_array ($reponse);
$verif = $donnees['pass'];
$id = $donnees['id'];
$pseudo_sql = $donnees['pseudo'];
$confirm = $donnees['confirm'];

if($_SESSION["SESSION_OUVERTE"] != 1)
{
$lastlog = $donnees["lastlog"];
$interval_temps = date("Y-m-d") - $lastlog;
$lastlog = date("Y-m-d");

$_SESSION["SESSION_OUVERTE"] == 1;
}

if($pass != $verif)
{
$reponse = 'Votre identifiant ou votre code secret est incorrect';
$redirection = 'pdf_connexion.php';
}
elseif($confirm != NULL)
{
$reponse = 'Votre compte n\'est pas encore activé';
$redirection = 'pdf_connexion.php';
}
else
{
$_SESSION['pseudo'] = $pseudo_sql ;
$redirection = 'pdf_espace_membre.php';
$reponse = 'Connexion réussie vous allez être redirigé.
[pdf_espace_membre.php Rejoindre directement l\'Espace membre]
';
}
}
if($interval_temps != 0000-00-00) //j'ai essayé avec ($interval_temps != 0) mais ca va pas non plus...
{
$nbjours ++;
}
mysql_query("UPDATE pdf_membre SET nbjours='$nbjours', lastlog='$lastlog' WHERE pseudo='$pseudo'");
?>
<html>
<head>
<meta http-equiv="refresh" content="1;URL=<? echo "$redirection"; ?>">
</head>
<? echo "$reponse"; ?>

</html>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 avril 2005 à 10:55
Salut,



perso je ferais un truc comme ça :



Je stocke dans un format INT le "$lastlog" qui sera inséré via la
fonction time() (le champ INT doit être au moins de largeur 10, perso
je mets 11)



Ensuite, pour savoir si le lastlog est le même jour qu'aujourd'hui :

<?php

if($lastlog%(3600*24)===time()%(3600*24))

{

//le visiteur s'est déjà connecté aujourd'hui

}

else

{

//UPDATE SET nb_connexion=nb_connexion+1 WHERE id_membre=id;

}

?>



en gros ;-)



je ne sais pas si ça fonctionnera, mais c'est toujours bon à tester vu la longueur de ton code.



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
30 avril 2005 à 12:06
ah ouai ok merci, ca irait aussi, mais bon la j'ai trouvé l'erreur, en faite le prob c'etait simplement que je ne recuperai pas le nbjours actuel donc il faisait +1 a quelque chose d'inconnu, donc 0 alors il me mettait tjs 1 dans la bdd, parce que j actualisai a la fin.
mnt c est ok,
merci encore pour ton aide,
F
0
Rejoignez-nous