即使在 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 中设置时区后,服务器中的时间戳也会给出错误的时间的主要内容,如果未能解决你的问题,请参考以下文章

无法在 PHP 中设置默认时区

在 PHP 和 MySQL 中设置时区

从unix时间戳创建php DateTime对象,在一行中设置时区

PHP中设置时区方法小结

在 Python 中设置时区

如何在 Amazon EC2 中设置时区?