使用php和phpmyadmin更改数据库中的日期
**大家好,首先我想道歉我的英语不是很好。我目前正在从事数据库和php方面的工作。我解释我的问题,我想在用户每次注册或连接时插入当前日期,用当前日期替换旧日期,然后收集并创建连接历史记录。 谢谢你潜在的帮助 我的数据库有5个字段:1使用php和phpmyadmin更改数据库中的日期,php,mysql,Php,Mysql,**大家好,首先我想道歉我的英语不是很好。我目前正在从事数据库和php方面的工作。我解释我的问题,我想在用户每次注册或连接时插入当前日期,用当前日期替换旧日期,然后收集并创建连接历史记录。 谢谢你潜在的帮助 我的数据库有5个字段:1 id,int(11),自动增量 邮件varchar(255) 伪varchar(25) mdp字符(32) 日期 register.php $ AfficherFormulaire=1; //traitement du formulaire: if(iss
- id,int(11),自动增量
- 邮件varchar(255)
- 伪varchar(25)
- mdp字符(32)
- 日期
$ AfficherFormulaire=1;
//traitement du formulaire:
if(isset($_POST['pseudo'],$_POST['mdp'],$_POST['mail'])){//l'utilisateur à cliqué sur "S'inscrire", on demande donc si les champs sont défini avec "isset"
if(empty($_POST['mail'])){//le champ mail est vide
echo '<a id="annotation">le champ mail est vide.</a>';
} elseif(empty($_POST['pseudo'])){//le champ pseudo est vide, on arrête l'exécution du script et on affiche un message d'erreur
echo '<a id="annotation">le champ pseudo est vide.</a>';
} elseif(!preg_match("#^[a-z0-9]+$#",$_POST['pseudo'])){//le champ pseudo est renseigné mais ne convient pas au format qu'on souhaite qu'il soit, soit: que des lettres minuscule + des chiffres (je préfère personnellement enregistrer le pseudo de mes membres en minuscule afin de ne pas avoir deux pseudo identique mais différents comme par exemple: Admin et admin)
echo '<a id="annotation">Le Pseudo doit être renseigné en lettres minuscules sans accents, sans caractères spéciaux.</a>';
} elseif(strlen($_POST['pseudo'])>15){//le pseudo est trop long, il dépasse 25 caractères
echo '<a id="annotation">Le pseudo est trop long, il dépasse 15 caractères.</a>';
} elseif(empty($_POST['mdp'])){//le champ mot de passe est vide
echo '<a id="annotation">Le champ Mot de passe est vide.</a>';
} elseif(mysqli_num_rows(mysqli_query($mysqli,"SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."'"))==1){//on vérifie que ce pseudo n'est pas déjà utilisé par un autre membre
echo '<a id="annotation">Ce pseudo est déjà utilisé.</a>';
} elseif(mysqli_num_rows(mysqli_query($mysqli,"SELECT * FROM membres WHERE mail='".$_POST['mail']."'"))==1){//on vérifie que ce mail n'est pas déjà utilisé par un autre membre
echo '<a id="annotation">Ce mail est déjà utilisé.</a>';
} else {
// INSERT INTO membres VALUES('', 'mail', 'pseudo', 'mdp', NOW);
if(!mysqli_query($mysqli,"INSERT INTO membres SET pseudo='".$_POST['pseudo']."',mail='".$_POST['mail']."', mdp='".md5($_POST['mdp'])."'", ")){
echo "Une erreur s'est produite: ".mysqli_error($mysqli);
} else {
echo '<a id="annotation">Vous êtes inscrit avec succès!</a>';
header("Location: postedecontrole.php");
}
}
}
?>在更新当前时间戳时,将日期列的属性保留为
在连接时更新任何行之前,请从日期列获取值以获取旧日期
我相信这应该行得通
编辑:
注册:注册期间,您将创建一个新行,因此日期列将获得一个值。这是您的注册时间
连接/登录:在同一个表中创建另一列,该列将保留用户的状态,即已登录或已注销。您可以在用户每次登录或注销时更新此状态。日期单元格将得到更新,因为它在更新当前时间戳属性时具有
但是,您可以通过多种方式实现这一点。这只是一种方法。我个人不喜欢cookies/js,因此不建议这样做。您需要函数日期('Y-m-d'),但我更喜欢microtime(true),并将日期保存为十进制13,3。对于collect,您必须创建另一个表。感谢您的帮助,但是如果我有两个不同的表,我如何才能将成员的昵称与他的日期联系在一起?每个批次都需要一个表,id,date,id\u用户(外键)谢谢您快速回答。我按照您在我的数据库中告诉我的更改,但我不明白您何时告诉我更新行。@Nico现在检查。我已更新我的回复。如果有帮助,请单击回复左侧的复选标记将其变为绿色。:)
session_start(); // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
if(isset($_POST['connexion'])) { // si le bouton "Connexion" est appuyé
// on vérifie que le champ "Pseudo" n'est pas vide
// empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
if(empty($_POST['pseudo'])) {
echo "Le champ Pseudo est vide.";
} else {
// on vérifie maintenant si le champ "Mot de passe" n'est pas vide"
if(empty($_POST['mdp'])) {
echo "Le champ Mot de passe est vide.";
} else {
// les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
$Pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES, "ISO-8859-1"); // le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
$MotDePasse = htmlentities($_POST['mdp'], ENT_QUOTES, "ISO-8859-1");
//on se connecte à la base de données:
$mysqli = mysqli_connect("localhost", "root", "", "domoserre");
//on vérifie que la connexion s'effectue correctement:
if(!$mysqli){
echo "Erreur de connexion à la base de données.";
} else {
// on fait maintenant la requête dans la base de données pour rechercher si ces données existe et correspondent:
$Requete = mysqli_query($mysqli,"SELECT * FROM membres WHERE pseudo = '".$Pseudo."' AND mdp = '".$MotDePasse."'");//si vous avez enregistré le mot de passe en md5() il vous suffira de faire la vérification en mettant mdp = '".md5($MotDePasse)."' au lieu de mdp = '".$MotDePasse."'
// si il y a un résultat, mysqli_num_rows() nous donnera alors 1
// si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
if(mysqli_num_rows($Requete) == 0) {
echo "Le pseudo ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
} else {
// on ouvre la session avec $_SESSION:
$_SESSION['pseudo'] = $Pseudo; // la session peut être appelée différemment et son contenu aussi peut être autre chose que le pseudo
header("Location: postedecontrole.php");
}
}
}
}