即使在 php 中设置时区后,服务器中的时间戳也会给出错误的时间
Posted
技术标签:
【中文标题】即使在 php 中设置时区后,服务器中的时间戳也会给出错误的时间【英文标题】:timestamp in server giving wrong time even after setting timezone in php 【发布时间】:2019-12-28 11:25:52 【问题描述】:我有一个网站,可以在用户填写表格后向表格添加值。我的服务器在印度以外,所以当我输入当前时间戳时,它没有给我正确的印度时间,所以为了修复它,我在我的 php 文件中添加了印度时区。列默认值仍然是“Currenttimestamp”完整代码如下:
<?php
session_start();
error_reporting(0);
include('includes/dbconnection.php');
if (strlen($_SESSION['cvmsaid']==0))
header('location:logout.php');
else
if(isset($_POST['submit']))
$cvmsaid=$_SESSION['cvmsaid'];
$fullname=$_POST['fullname'];
$mobnumber=$_POST['mobilenumber'];
$email=$_POST['email'];
$add=$_POST['address'];
$whomtomeet=$_POST['whomtomeet'];
$department=$_POST['department'];
$reasontomeet=$_POST['reasontomeet'];
$query=mysqli_query($con,"set session time_zone='Asia/Kolkata'");
$query=mysqli_query($con, "insert into tblvisitor(FullName,Email,MobileNumber,Address,WhomtoMeet,Deptartment,ReasontoMeet) value('$fullname','$email','$mobnumber','$add','$whomtomeet','$department','$reasontomeet')");
if ($query)
$msg="Visitors Detail has been added.";
else
$msg="Something Went Wrong. Please try again";
?>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body class="animsition">
<div class="page-wrapper">
<!-- HEADER MOBILE-->
<?php include_once('includes/sidebar.php');?>
<div class="page-container">
<!-- HEADER DESKTOP-->
<?php include_once('includes/header.php');?>
<!-- HEADER DESKTOP-->
<!-- MAIN CONTENT-->
<div class="main-content">
<div class="section__content section__content--p30">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<strong>Add</strong> New Visitor
</div>
<div class="card-body card-block">
<form action="" method="post" enctype="multipart/form-data" class="form-horizontal">
<p style="font-size:16px; color:red" align="center">
<?php if($msg)
echo $msg;
?> </p>
<div class="row form-group">
<div class="col col-md-3">
<label for="text-input" class=" form-control-label">Full Name</label>
</div>
<div class="col-12 col-md-9">
<input type="text" id="fullname" name="fullname" placeholder="Full Name" class="form-control" required="">
</div>
</div>
<div class="row form-group">
<div class="col col-md-3">
<label for="email-input" class=" form-control-label">Email Input</label>
</div>
<div class="col-12 col-md-9">
<input type="email" id="email" name="email" placeholder="Enter Email" class="form-control" required="">
</div>
</div>
<div class="row form-group">
<div class="col col-md-3">
<label for="password-input" class=" form-control-label">Phone Number</label>
</div>
<div class="col-12 col-md-9">
<input type="text" id="mobilenumber" name="mobilenumber" placeholder="Mobile Number" class="form-control" maxlength="10" required="">
</div>
</div>
<div class="row form-group">
<div class="col col-md-3">
<label for="textarea-input" class=" form-control-label">Address</label>
</div>
<div class="col-12 col-md-9">
<textarea name="address" id="address" rows="9" placeholder="Enter Visitor Address..." class="form-control" required=""></textarea>
</div>
</div>
<div class="row form-group">
<div class="col col-md-3">
<label for="password-input" class=" form-control-label">Whom to Meet</label>
</div>
<div class="col-12 col-md-9">
<input type="text" id="whomtomeet" name="whomtomeet" placeholder="Whom to Meet" class="form-control" required="">
</div>
</div>
<div class="row form-group">
<div class="col col-md-3">
<label for="password-input" class=" form-control-label">Company</label>
</div>
<div class="col-12 col-md-9">
<input type="text" id="department" name="department" placeholder="Company Name" class="form-control" required="">
</div>
</div>
<div class="row form-group">
<div class="col col-md-3">
<label for="password-input" class=" form-control-label">Reason To Meet</label>
</div>
<div class="col-12 col-md-9">
<input type="text" id="reasontomeet" name="reasontomeet" placeholder="Reason To Meet" class="form-control" required="">
</div>
</div>
<div class="card-footer">
<p style="text-align: center;"><button type="submit" name="submit" id="submit" class="btn btn-primary btn-sm">Submit
</button></p>
</div>
</form>
</div>
</div>
</div>
</div>
<?php include_once('includes/footer.php');?>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- end document-->
<?php ?>
仍然没有得到印度时间戳,谁能告诉我如何修复它。提前致谢
【问题讨论】:
检查一下 - ***.com/questions/32224547/… 如果该列确实是一个 TIMESTAMP,那么在检索它之前您需要做的就是确保首先在同一连接上执行 `set session time_zone='Asia/Kolkata'。你在做这个吗? 我编辑了您的代码并将您的查询分成两个查询。我还将您的代码 sn-p(用于执行 javascript/HTML)更改为标准代码块。 @Booboo 我已经添加了你的代码,但时间戳仍然没有改变,它显示了服务器时间戳 我把你的代码弄乱了吗?我不再看到 select 语句。如果我这样做了,你能把代码放回去吗?在进行选择之前,您是否有机会再做一次mysqi_connect
?
【参考方案1】:
如果该列是 TIMESTAMP,那么在连接 $con
上,在检索该列之前,您只需执行以下查询:
set session time_zone='Asia/Kolkata'
这适用于您使用的任何语言。就时区转换而言,您不应该在 PHP 中对返回的时间戳进行任何操作;这些将由 MySql 为您完成。
顺便说一句,您应该使用准备好的语句。当您当前正在执行查询时,您可能会面临 SQL 注入攻击。
【讨论】:
它没有解决问题,它显示 Parse error: syntax error, unexpected 'session' (T_STRING) 那么如果你得到一个语法错误,你就没有正确地做:mysql>set session time_zone='Asia/Kolkata'; Query OK, 0 rows affected (0.00 sec)
某些服务器可能缺少某些时区,但您不会收到语法错误,而是:ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Kolkatax'
@kingkhankkhan 你把set
这个词加进去了吗?
我应该在哪里添加它【参考方案2】:
尝试使用新配置在 public_html
文件夹中创建自定义 php.ini
并添加到它
date.timezone="Asia/Kolkata"
编辑后尝试检查更改是否正确
echo date_default_timezone_get();
【讨论】:
以上是关于即使在 php 中设置时区后,服务器中的时间戳也会给出错误的时间的主要内容,如果未能解决你的问题,请参考以下文章