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.

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。