【发布时间】:2022-06-10 20:59:17
【问题描述】:
我创建了一个表单,用户可以在其中更改自己的姓名,并将其保存在数据库中。我想在提交后控制用户是否已经在不到一个月前更改了他的名字。
在我的数据库中,我有一个名为“name_changed”的列,其中默认数据是 0000-00-00,当名称更改时,日期保存在“name_changed”中。但我不知道如何控制月份。
这里是 HTML 代码:
<form action="#" method="POST">
<input type="text" class="..." name="name" required>
<input class="..." type="submit" name="change-name">
</form>
这里是 PHP 代码:
if(isset($_POST['change-name']) && $_POST['name'] != ""){ // take data form
$errors = "0";
if(strlen($_POST['name']) < 21){ // control length
$name = "$_POST[name]";
$sql = "SELECT * FROM user_db WHERE email = '$_SESSION[email]'";
$date_today = date('Y-m-d'); // i don't know if it's right
$data_today_month = // take only month
$date_db = $fetch_info['name_changed']; // take date on db from column "name_changed"
$date_db_month = // take only month
$diff_between_date_today_month_and_data_db_month = $date_today_month - $date_db_month;
if($data_db == '0000-00-00' or $diff_between_date_m_and_data_db_m>= '1'){
$update_pass = "UPDATE user SET name = '$name' WHERE email = '$_SESSION[email]'";
$run_query = mysqli_query($con, $update_pass);
if($run_query){
$sql = "SELECT * FROM user WHERE email = '$_SESSION[email]'";
$update_pass = "UPDATE user SET name_changed = '$date' WHERE email = '$_SESSION[email]'";
$run_query = mysqli_query($con, $update_pass);
}
}else{
$count_error = '1';
$errors = "you can only change your name once a month!";
}
}else{
$count_error = '1';
$errors['db-error'] = "Something wrong!";
}
}
谢谢
【问题讨论】:
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?