dtpw54085 2018-05-02 15:04
浏览 135

使用php和phpmyadmin更改数据库中的日期

**Hello everyone, first of all I want to apologize my english is not very good. I am currently working on databases as well as php. I explain my problem, I would like to insert the current date each time the user registers or connects, replace the old date by the current date and then collect it and make a connection history. Thank you for your potential help

my database has 5 fields :1.

  • id, int(11) , AUTO_INCREMENT
  • mail varchar(255)
  • pseudo varchar(25)
  • mdp char(32)
  • Date

register.php

$ 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");
    }
}

connection.php

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");
            }
        }
    }
}

} ?>

  • 写回答

1条回答 默认 最新

  • duanli0119 2018-05-02 15:08
    关注

    Keep the Attribute of Date column as on update CURRENT TIMESTAMP.

    Before updating any row while connecting fetch the value from the Date column to get the old date.

    I believe this should work.

    Edit:

    Registration: During registration, you are creating a new row hence the Date column will get a value. This is your time of registration.

    Connecting/Logging In: Make another column in the same table which will keep the status of the user, logged in or logged out. You can update this status each time the user logs in or logs out. The Date cell will get updated as it has on update CURRENT TIMESTAMP attribute.

    However, you can achieve this in a number of ways. This is just a method. I personally don't like cookies/js for such purposes so not suggesting it.

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站