PHP,SMARTY学习笔记20161022

通过 include() 或 require() 函数,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。除了它们处理错误的方式不同之外,这两个函数在其他方面都是相同的。include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错误(fatal error)(在错误发生后脚本会停止执行)。

setcookie() 函数用于设置 cookie。
<?php
setcookie("user", "Alex Porter", time()+3600);
?>

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

<?php
// Print a cookie
echo $_COOKIE["user"];
// A way to view all cookies
print_r($_COOKIE);
?>

我们使用 isset() 函数来确认是否已设置了 cookie:

<?php
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
echo "Welcome guest!<br />";
?>

当删除 cookie 时,您应当使过期日期变更为过去的时间点。
<?php
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>
如果您的应用程序涉及不支持 cookie 的浏览器,您就不得不采取其他方法在应用程序中从
一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,
稍早前我们已经在本教程中介绍过了)。

PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存
的信息是单一用户的,并且可供应用程序中的所有页面使用。

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
<?php session_start(); ?>

存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>

在下面的例子中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置
"views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则我们创建 "views" 变量,并把它设置为 1:
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?php
unset($_SESSION['views']);
?>
您也可以通过 session_destroy() 函数彻底终结 session:
<?php
session_destroy();
?>

Comments [注释]

模板注释被*号包围,例如 {* this is a comment *} 。

Variables assigned from PHP [从 PHP 分配的变量]

调用从 PHP 分配的变量需在前加"$"符号.(同 php 一样)
调用模板内的 assign 函数分配的变量也是这样.(也是用$加变量名来调用)

从配置文件读取的变量

配置文件中的变量需要通过用两个"#"(嵌套在 smarty 界定符"{}"中)或者是 smarty 的保留变量
"$smarty.config."来调用,第二种语法在变量作为属性值并被引号括住的时候非常有用。
{include file="#includefile#"} 这样#includefile#将被当作字符处理,而不表示配置文件变量,但可以
这样表示 {include file="`$smarty.config.includefile`"}不要忘了加('`')反引号,或者用 smarty 界定
符("{}") 。

{$smarty} reserved variable [{$smarty}保留变量]

Request variables[页面请求变量]

就是 get,post,server,session 等变量,可以访问页面请求的变量,例如 get, post, cookies, server,
environment, session ......
例如:

{* 显示来自URL(GET)page 的变量的值 URL (GET) http://www.domain.com/index.php?page=foo *}
{$smarty.get.page}

{* 显示来自一个表单(POST)的变量"page" *}
{$smarty.post.page}

{* 显示cookie "username"的值 *}
{$smarty.cookies.username}

{* 显示 server变量"SERVER_NAME" *}
{$smarty.server.SERVER_NAME}

{* 显示系统环境(env)的变量"PATH" *}
{$smarty.env.PATH}

{* 显示 PHP session 变量"id" *}
{$smarty.session.id}

{* 显示来自get/post/cookies/server/env的变量"username" *}
{$smarty.request.username}

{$smarty.now}

可以通过{$smarty.now}来访问当前的时间戳(timestamp) ,可以通过 date_format 变量调节器来为特
定的输出作处理。

例如:
{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}

{$smarty.const}

可以通过{$smarty.const}来直接访问 PHP 常量

例如:

{$smarty.const._MY_CONST_VAL}

Literal 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有
可能包含大括号等字符信息的 javascript 脚本. 当这些信息处于 {literal}{/literal} 标签中时,模板引擎将
不分析它们,而直接显示.

配置文件

配置文件有利于设计者管理文件中的模板全局变量。最简单的例子就是模板色彩变量。一般情况下你如果
想改变一个程序的外观色彩,你就必须通过去更改每一个文件的颜色变量。如果有这个配置文件的话,色
彩变量就可以保存在一个地方,只要改变这个配置文件就可以实现你色彩的更新。
配置文件语法演示:

# global variables
pageTitle = "Main Menu"
bodyBgColor = #000000
tableBgColor = #000000
rowBgColor = #00ff00

[Customer]
pageTitle = "Customer Info"

[Login]
pageTitle = "Login"
focus = "username"
Intro = """This is a value that spans more
than one line. you must enclose
it in triple quotes."""

# hidden section
[.Database]
host=my.domain.com
db=ADDRESSBOOK
user=php-user
pass=foobar

配置文件变量值能够在引号中使用,但是没有必要。你可以用单引号或者双引号。如果你有一个不只在一
个区域内使用的变量值,你可以使用三引号(""")将它完整的封状起来,可以把它们放进配置文件,只要没
有语法错误。建议在程序行前使用 "#"加一些注释信息来标示。
上面关于配置文件的例子共有两个部分。每部分的名称都是用一个"[]"给括起来。每部分的名称命名规则
就是任意的字符串,只要不包括有符号"["或者"]" 。例子开头的四个变量都是全局变量,也就是说不仅仅是
可以在一个区域内使用。这些变量总是从配置文件中载入。如果某个特定的局部变量已经载入,这样全局

变量和局部变量都还可以载入。如果当某个变量名既是全局变量又是局部变量时,局部变量将被优先赋予
值来使用。如果在一个局部中两个变量名相同的话,最后一个将被赋值使用。
配置文件是通过内建函数载入到模板 { config_load }
可以在某个段时期通过预先想好的变量名或者局部名隐藏变量或者完整的一个节。当你的应用程序读取配
置文件和取得有用数据而不用读取模板时这个非常有用,如果你有第三方来做模板编辑的话,可以肯定的
说它们不能通过载入配置文件到模板而读取到任何有用的数据。

定位 Smarty 类文件的完整系统路径,如果没有定义 Smarty 目录,Smarty 将会试着自动创建合适的值。
如果定义了,路径必须要以斜线结束。

SMARTY_DIR 演示

// 设置到 smarty 的路径
define("SMARTY_DIR","/usr/local/lib/php/Smarty/");
require_once(SMARTY_DIR."Smarty.class.php");

 

GET方法是将表单内容附加在URL地址后面发送;POST方法是将表单中的信息作为一个数据包发送到服务器上的处理程序中,在浏览器的地址栏不显示提交信息。method默认的方法是GET;

POST方法不依赖于URL,不会显示在地址栏,POST方法可以没有限制的传递数据到服务器,所有提交的信息在后台传输,用户在浏览器端看不到这个过程,安全性高。所以POST方法比较适用于发送一个保密的信息或者容量较大的数据到服务器。

PHP中传递参数的几种方法:$_POST[name],$_GET[name],$_SESSION[name]

 

 

Cookie和Session是两种不同的存储机制,前者是从一个web页到下一个页面的数据传递方法,存储在客户端;后者是让数
据在页面中持续有效的方法,存储在服务器端。可以说,掌握Cookie和Session技术,对于web网站页面间信息传递的安全
性是必不可少的。

Cookie实在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie的使用很普遍,许多提供个人化服
务的网站都是利用Cookie来区别不同用户,以显示与用户相应的内容,如Web接口的免费E-mail网站,就需要用到Cookie。
有效地使用Cookie可以轻松完成很多复杂任务。
cookie常用于以下三个方面:
1. 记录访客的某些信息。如可以利用cookie记录用户访问网页的次数,或者记录访客曾经输入过的信息,另外,某些网站
可以使用cookie自动技术访客上次登录的用户名。
2. 在页面之间传递变量。浏览器并不会保存当前页面上的任何变量信息,当页面被关闭时页面上的所有变量信息讲随之消
失。如果用户声明一个变量id=8,要把这个变量传递到另一个页面,可以把变量id以cookie的形式保存下来,然后在下一
页通过读取该cookie来获取变量的值。
3. 将所查看的Internet页存储在cookie临时文件夹中,可以提高以后浏览的速度。

如果不设置cookie的失效时间,那么cookie将永远有效,除非手动将其删除。