Trouve pas l'erreur !

Signaler
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
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

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



condense ton code stp...



merci

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




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ç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>
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Si tu telecharges et ouvre avec dreamweaver, il te met des jolies couleurs, et tout est clair...
Messages postés
22
Date d'inscription
dimanche 19 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2005

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 -
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



KjeYrO t'as donne ta reponse je pense.

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



$nbjours ++ ; est juste.
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
ah ok merci, je teste et je vous redis !
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Je voudrais parler de la fonction, par ex mktime, time, date, ... Je ne sais pas trop et dans la doc php je trouve pas
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

php et mysql ne gerent pas les dates de la meme maniere. IL faut convertir.
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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.
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Merci pour votre aide !
Tout marche, j'ai trouvé les erreurs !

MERCI
F
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
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