Linux PHP MySQL时区设置方法详解

 更新时间:2016年11月25日 15:01  点击:1394
本文章来给各位同学介绍关于Linux PHP MySQL时区设置方法详解,希望此方法对各位同学会有所帮助。

LAMP环境下,理想的情况是Linux PHP MySQL的时区都设置一致,否则程序极易出现一些阴差阳错的【时间差】问题。假设设置时区为:"Asia/Shanghai"

1. Linux设置时区,以CentOS5.5为例:


cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2. MySQL中设置时区

编辑MySQL配置文件:my.cnf/my.ini,在[mysqld]下加上:

default-time-zone = '+8:00'

实际上,如果MySQL所在OS的时区已经设置正确,则可以不用在MySQL中设置时区,因为MySQL服务启动的时候,会自动采用OS的时区。

3. PHP中设置时区

在PHP配置文件PHP.ini中:

 

1 date.timezone = "Asia/Shanghai"

设置好后,最好重启下系统。

如果是购买的Web空间,没有权限在Linux PHP MySQL中配置时区。那也好办,只需要在PHP脚本中设置和OS对应的时区,因为MySQL中默认使用的是OS的时区。假设OS的时区是'Asia/Shanghai',使用下面两条语句其中之一即可:


ini_set('date.timezone', 'Asia/Shanghai'); 

date_default_timezone_set('Asia/Shanghai');

当你想生成一个随机的密码的时候,你第一想到的可能是使用 uniquid() 函数,但是如果我们使用 array_rand() 和 range() ,可以更完美的实现这个功能。


方法一,

 代码如下 复制代码

<?php
header("Content-type: text/html; charset=utf-8");

function randCode($length) {
    $ranges = array(range('a', 'z'), range('A', 'Z'), range(1, 9));
    $code = '';
    for($i = 0; $i < $length; $i++){
        $rkey = array_rand($ranges);
        $vkey = array_rand($ranges[$rkey]);
        $code .= $ranges[$rkey][$vkey];
    }
    return $code;
}

echo "www.111cn.net";
echo randCode(5); // 输出如:3IxY8、E6HOv、1qHiy等等
?>

方法二,

1、在 33 – 126 中生成一个随机整数,如 35,

2、将 35 转换成对应的ASCII码字符,如 35 对应 #

3、重复以上 1、2 步骤 n 次,连接成 n 位的密码

该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据需要调整范围,如ASCII码表中 97 – 122 位对应 a – z 的英文字母,具体可参考 ASCII码表; chr ( int $ascii )函数用于将对应整数 $ascii 转换成对应的字符。

 代码如下 复制代码

function create_password($pw_length = 8)

{

$randpwd = '';

for ($i = 0; $i < $pw_length; $i++)

{

$randpwd .= chr(mt_rand(33, 126));

}

return $randpwd;

}

// 调用该函数,传递长度参数$pw_length = 6

echo create_password(6);

方法三,

 代码如下 复制代码

//自动为用户随机生成用户名(长度6-13)

        function create_password($pw_length = 4){

            $randpwd = '';

            for ($i = 0; $i < $pw_length; $i++){

                $randpwd .= chr(mt_rand(33, 126));

            }

            return $randpwd;

        }

        function generate_username( $length = 6 ) {

            // 密码字符集,可任意添加你需要的字符

            $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

            $password = '';

            for ( $i = 0; $i < $length; $i++ )

            {

                // 这里提供两种字符获取方式

                // 第一种是使用substr 截取$chars中的任意一位字符;

                // 第二种是取字符数组$chars 的任意元素

                // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

                $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];

            }

            return $password;

        }

        // 调用该函数

        $userId = 'user'.generate_username(6);

        $pwd = create_password(9);

昨天学习了一下php5.5发现有一个新的功能就是类级别的常量,下面我来给大家简单分享一下我的学习笔记。

不久前php刚发布了5.5的第一个稳定版,介绍了一个类级别的常量,名字是 `CLASS` 这个常量对所有的类有效,返回类的全名。

 代码如下 复制代码

<?php
namespace vendorpackage;
class Foo
{
    // ...
}
var_dump(Foo::CLASS);
//上面脚本输出 string(18) "vendorpackageFoo".

为什么要使用它

我们为什么要使用一个这样的常量,当然不是像上面那个例子一样只是获得类的全名。我们使用__NAMESPACE__也可以达到同样的效果,而且php5.3就可以用了:

 代码如下 复制代码

<?php
namespace vendorpackage;
class Foo
{
    // ...
}
var_dump(__NAMESPACE__ . 'Foo');

然而,当你需要完全限定名称,命名空间引用了类命名空间别名…然后它变得有趣

在下面的例子:

 

 代码如下 复制代码


<?php
use vendorpackageFoo;
class FooTest extends PHPUnit_Framework_TestCase
{
    public function testBarCanBeProcessed()
    {
        $bar = $this->getMock('vendorpackageBar');
        $foo = new Foo;
        $foo->process($bar);
        // ...
    }
}

 

 代码如下 复制代码
<?php
use vendorpackageFoo;
use vendorpackageBar;
class FooTest extends PHPUnit_Framework_TestCase
{
    public function testBarCanBeProcessed()
    {
        $bar = $this->getMock(Bar::CLASS);
        $foo = new Foo;
        $foo->process($bar);
        // ...
    }
}
php session()函数在php开发应用中有很重要的一个角色了,下面我来给初学者简单的介绍一下关于php session()函数使用方法与实例。

对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用。
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。


由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 的内容。实际上在服务器端的 Session 文件,PHP自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全很多。
 

 代码如下 复制代码

<?php
// 启动Session
session_start();
// 声明一个名为 admin 的变量,并赋空值。
$_SESSION["admin"] = null;
?> 

<?php
// 启动Session
session_start();
// 将原来注册的某个变量销毁
unset($_SESSION['admin']);
// 销毁整个 Session 文件
session_destroy();
?> 

<?php
// 启动Session
session_start();
// 保存一天
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?> 

<?php
// 保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?> 

<?php
// 保存一天
$lifeTime = 24 * 3600;
// 取得当前 Session 名,默认为 PHPSESSID
$sessionName = session_name();
// 取得 Session ID
$sessionID = $_GET[$sessionName];
// 使用 session_id() 设置获得的 Session ID
session_id($sessionID);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?> 

<?php
// 设置一个存放目录
$savePath = './session_save_dir/';
// 保存一天
$lifeTime = 24 * 3600;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
$_SESSION['admin'] = true;
?> 

另外,我们还可以使用 session_set_save_handler 函数来自定义 Session 的调用方式。


PHP函数补完:session_id()

session_id()
session_id() 存取目前 session 代号。

语法: string session_id(string [id]);

本函数可取得或者重新配置目前存放 Session 的代号。若无参数 id 则表示只有取得目前 Session 的代号,加上参数则表示将 Session 代号设成新指定的 id。输入及返回均为字符串。

输出 session_id()

 代码如下 复制代码

<?php
 session_start();
 echo session_id();
 // 输出 dqr58dnuqj2gufvg4o3tmjb9v4
?>

设置 session_id()

 代码如下 复制代码
<?php
 session_id("NowaMagic");
 session_start();
 
 echo session_id();
 // 输出 NowaMagic
?>

session_id 恢复 session的内容
php的session是可以程序恢复的,这个和java不太一样。session的恢复机制可以实现多个应用程序session的共享,因为php的session都是以文件形式或者数据库存储的。首先是session_id的获取是通过session_id()函数获取,这个值可以进行传递。

程序恢复session,首先要知道session_id,大家通过手册可以知道session的恢复通过session_id($id);但是在恢复时要注意一个先后顺序,要得到之前session的内容,必须在session_start()之前执行session_id($id),这样才能在执行了session_start时初始化session的时候恢复到之前的内容,否则的话你得到的是一个空的session,你什么也得不到。之前session被重新初始化了。这个和session_start()的作用有密切关系,因为session_start告诉php,session要初始化,要从session文件中反序列化session内容,所以session_start的作用就是把之前存储的文件内容反序列化。session_start序列化之前要知道session_id,如果没有就生成一个新的session_id。如果有就反序列化相应文件的内容。

在php中流程控制语句包括了while,for,if,switch,foreach,declare语句了,下面我来给各位入门者介绍一下流程控制语句使用方法,希望此方法对各位朋友有据租。

在PHP中,流控制语句主要有条件语句和循环语句组成。其中,流控制语句有if/else和switch语句;循环语句有while和for语句。

1. IF语句

在PHP中,IF语句有两种语法结构。一种用大括号表示语句块,一种用冒号表示语句块。前者一般用于纯代码中,后者一般用于代码和HTML结合时。两种写法如下:

 代码如下 复制代码

// 大括号表示语句块
if ($value) {
    // 操作;
} elseif($value) {
    // 操作;
} else {
    // 操作;
}

// 冒号表示语句块
if ($value) :
    // 操作;
elseif($value) :
    // 操作;
else :
    // 操作;
endif;

2. switch语句

switch语句和C语言有些相似,它可以使用数字和字符串做为判断值。它执行的代码是,从第一个匹配值(或者default)开始,到遇到break为止。所以,在写程序的时候一定不要忘记写break。不然会执行所有分支。代码示例如下:

 代码如下 复制代码

switch ($value) {
    case 'a':
    case 'b':
        echo 'value is a or b.';
        break;
    case 'c':
        echo 'value is c.';
        break;
    default:
        echo 'value is others.';
        break;
}

3. while语句

while语句和if语句一样,也用两种语法结构。大括号表示语句块以及冒号表示语句块表示语句块。两种写法如下:

 代码如下 复制代码
// 大括号表示语句块
$i = 0;
while ($i &lt; 5) {
    echo $i;
}
// 冒号表示语句块
$i = 0;
while ($i &lt; 5) :
    echo $i;
endwhile;

4. do...while语句

do...while语句和while语句区别是while语句先判断后执行,而do...while语句是先执行后判断。也就是说,即便条件不符合要求,do...while语句也会执行一次。其写法如下:

 代码如下 复制代码

$i = 0;
do {
    echo $i;
} while ($i &lt; 5);

5. for语句

for语句里要注意的是,它先执行初始化代码,然后每一次循环首先执行判断语句,执行循环会再执行自增自减函数。也就是说,如果条件不符合,循环不会被执行。其语法结构也有两种,大括号表示语句块以及冒号表示语句块表示语句块。两种写法如下:

 代码如下 复制代码
 // 大括号表示语句块
for ($i = 0; $i &lt; 5; $i++) {
    echo $i;
}
// 冒号表示语句块
for ($i = 0; $i &lt; 5; $i++) :
    echo $i;
endfor;

6. foreach语句

foreach语句用于遍历整个数组。和for一样,它的语法结构也有两种,大括号表示语句块以及冒号表示语句块表示语句块。两种写法如下:

 代码如下 复制代码
// 大括号表示语句块
foreach($array as $value) {
    each $value;
}
// 冒号表示语句块
foreach($array as $value) :
    each $value;
endforeach;

7. declare语句

declare语句指每执行N条语句后调用一个函数。如

 代码如下 复制代码
register_tick_function('test');
declare(ticks = 2) {
    print '1';
    print '2';
    print '3';
    print '4';
    print '5';
}
function test() {
    print 'declare
';
}

这段代码的结果为

1
2
3

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • C#方法的总结详解

    本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
  • mysql锁定单个表的方法

    mysql锁定单个表的方法 复制代码 代码如下:mysql>lock table userstat read; mysql>unlock tables; 页级的典型代表引擎为BDB。 表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。 行级的典型代表引擎为INN...2014-05-31