PHP会话Session的具体使用方法解析
PHP会话Session的御用比起Cookie来说相对要更安全一些,而且没有数据长度的限制。我们今天就向大家介绍有关PHP会话Session一些相关知识,以加深民大家对PHP会话Session的认识程度。 PHP函数header()查询单部件的具体方法解 WordPress获得2009开源PHP项目亚军 PHP数组转字符串与PHP字符串转数组的相关 探讨PHP引用&符号的一些注意问题 PHP数组处理函数概览 由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。 对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能 只做一次验证。为什么呢?因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。 而PHP会话Session就不同了,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。 当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。我这里就不多说了。 PHP会话Session在 php.ini 是否需要设置呢?一般不需要的,因为并不是每个人都有修改 php.ini 的权限,默认 Session 的存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹里,这个稍后我会介绍。 开始介绍如何创建 Session。非常简单,真的。 启动 Session 会话,并创建一个 $admin 变量:
1 |
<ol class="dp-xml"><li class="alt"><span><span>// 启动 Session </span></span></li><li><span>session_start(); </span></li><li class="alt"><span>// 声明一个名为 admin 的变量,并赋空值。 </span></li><li><span>$_SESSION["admin"] = null; </span></li><li class="alt"><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span></li></ol> |
如果你使用了 […]
View Details如何使用 CSS3 增强网站字体设计CSS, 字体网页设计, 字体WOFF字体属性字体嵌入
利用 Windows Internet Explorer 9 中新提供的对 层叠样式表 (CSS),级别 3 (CSS3) 字体模块的支持,您可以将您的网站访问者的版式体验进行升级。 本主题演示如何将新的 CSS3 字体功能并入到您的网站中,以便在 Internet Explorer 9 和其他现代浏览器中突显您的字体设计。 版式是 Web 设计不可缺少的一部分,Internet Explorer 9 支持在 CSS 字体模块级别 3工作草案和 Web 开放字体格式 (WOFF) 1.0 工作草案中定义的高级版式功能。 这些功能包括以下各项: 通过使用 @font-face 规则改进的字体链接 新提供的对 Web 字体格式的支持: Web 开放式字体格式 (WOFF) 原始的可安装的 TrueType 和 OpenType(未设置嵌入权限) 具有新增的和更新的字体属性的高级版式功能: 新增的 font-stretch 属性 更新的 font-weight 和 font-size 属性,它们使其呈现行为在其他浏览器中更加一致。 另外,Internet Explorer 9 利用硬件加速的 Microsoft DirectWrite API 和子像素 Microsoft ClearType 字体定位(在 IE9 标准模式中),可比以前更快地呈现字体,且字体看起来更平滑。 (有关 Internet Explorer 9 中的字体硬件呈现的详细信息,请参阅 IE 团队博客上的 IE9 中的子像素字体。) 本主题包含以下几节: Web 字体入门 font 元素 CSS 字体属性 字体嵌入 其他解决方案 WOFF 格式 使用 Internet Explorer 9 […]
View Details如何使用 CSS3 创建酷炫十足的按钮创建按钮, CSS3CSS3, 创建按钮Web 设计, 按钮
注意 本主题受 ZURB.com 上的这篇博客文章的启发并针对 Windows Internet Explorer 9 进行了优化。 利用 层叠样式表 (CSS),级别 3 (CSS3) 和 Internet Explorer 9,只需少量几个标记,您就可以创建外观非常吸引人的按钮。 本主题演示如何完全利用 层叠样式表 (CSS) 将简单的超链接转换为时髦的按钮。 本主题包含以下几节: 起点 添加圆角 添加阴影 添加透明渐变叠加 作为数据 URI 添加透明渐变叠加 汇总 相关主题 本主题包括以下 CSS3 功能: 使用 border-radius 属性的圆角 使用 box-shadow 属性的阴影 RGBA 颜色值 本主题还包括首次在 Windows Internet Explorer 8 中引入的以下功能: 数据 统一资源标识符 (URI) 透明 可移植网络图形 (PNG) 起点 在本主题中,我们使用如何使用 CSS3 添加圆角框中的同一咖啡公司示例。 我们会将棕色订单信息水平栏中每个产品描述后的“Order Now!”超链接变成一个按钮。 该订单信息栏当前如下所示: 此规则由以下类选择器定义: 复制
1 |
.product_orderinfo { text-align: right; display: block; padding: 5px; font-size: 11px; font-weight: bold; color: white; background-color: #996633;} |
首先,让我们将“Order Now!”超链接变成一个基本的矩形按钮。 为了很好地与其他设计部分进行对比,让我们将此按钮设为蓝色。 我们还将增加订单信息栏的高度,以便容纳更大的按钮。 基本按钮的 CSS 如下所示。 (已声明此选择器,以便具有 product_orderinfo 类的元素中的任何 a 元素都会应用所列的声明。 这将确保此选择器只应用于订单信息栏中的“Order Now!”按钮。) 复制
1 |
.product_orderinfo a { color: white; display: inline-block; padding: 5px 10px; text-decoration: none font-weight: bold; margin: 3px; background: #000099;} |
这将使订单信息栏如以下图像所示: 我们还将添加以下选择器,以便当光标悬停在此按钮上时使其变成棕色: 复制
1 |
.product_orderinfo a:hover { background: #663300;} |
这将使得当光标悬停在此按钮上时它会如下所示: 可以查看修订过的页面。 还可以下载它的 […]
View Details如何使用 CSS3 添加投影添加投影, CSS3CSS3, 投影
如何使用 CSS3 添加投影添加投影, CSS3CSS3, 投影 本主题向您演示如何使用 Windows Internet Explorer 9 和 层叠样式表 (CSS),级别 3 (CSS3) 向布局元素的外部或内部添加投影。 您甚至可以为您使用 Internet Explorer 9 中新提供的圆角支持创建的圆角曲线添加阴影。 本主题包含下列部分: 方框阴影选项和语法 创建基本投影 使用投影创建“发光”效果 创建内部投影 使用其他浏览器创建投影 汇总 使用旧版 Internet Explorer 创建投影 相关主题 方框阴影选项和语法 投影是由 box-shadow 属性启用的。 像圆角一样,Internet Explorer 9 中的投影功能非常强大;您有多个可以指定的选项。 box-shadow 属性中值的顺序如下: 复制
1 |
box-shadow: hoff voff bd sd color inset; |
此处,hoff 指示水平偏移,voff 指示垂直偏移,bd 指示模糊距离,sd 指示扩散距离,color 指示阴影颜色,而 inset 是一个关键字,使用时指示阴影为内部阴影,而不是外部阴影。 前两个值是属性工作所必需的值,所有值都必须按照列出的顺序指定。 如果未指定颜色,则 Internet Explorer 9 使用黑色作为阴影颜色。 此处定义了每个值: horizontal offset 此长度值是必需的。 它指定阴影向右(正值)或向左(负值)延伸的距离。 有关视觉解释,请参阅以下图示;hoff 指示水平偏移,设置为 20 像素。 vertical offset 此长度值是必需的。 它指定阴影向下(正值)或向上(负值)延伸的距离。 有关视觉解释,请参阅以下图示;voff 指示垂直偏移,设置为 20 像素。 blur distance 此正长度值指示阴影边缘的模糊程度,即模糊起点和终点之间大约的距离。 值越高越模糊。 有关视觉解释,请参阅以下图示;bd 指示模糊距离,设置为 30 像素。 spread distance 此长度值指示阴影形状在各个方向扩展(正值)或收缩(负值)的程度。 此值表示阴影在各个方向将延伸超过原始图形尺寸的距离。 有关视觉解释,请参阅以下图示;sd […]
View Details如何使用 CSS3 添加圆角圆角文本框, 圆
通过使用 层叠样式表 (CSS),级别 3 (CSS3) 为布局元素生成圆角,可以美化网站的外观。 本主题演示了通过使用 Windows Internet Explorer 9 中的新圆角内置支持让您的网站布局更具吸引力的几个基本方法。 它包含以下几部分: 起点 生成全部相同的圆角 分别生成多个圆角 使用椭圆生成圆角 使用其他浏览器生成圆角 汇总 使用早期版本的 Internet Explorer 生成圆角 相关主题 起点 对于本主题中描述的任务,我们从最基本的网页开始操作。 该页是一家虚拟的咖啡公司的网页,其中包括一些 HTML、一些 层叠样式表 (CSS) 和几个图像。 可以查看并下载 HTML 和 CSS。 下面的屏幕快照显示了初始网页。 要点 在创建您自己的网页以利用 Internet Explorer 9 中引入的新 Web 标准支持时,请确保在页面顶部包括以下 !DOCTYPE 指令: 复制
1 |
<!DOCTYPE html> |
这将确保 Internet Explorer 9 使用最新的标准支持在“Internet Explorer 9 标准模式”中呈现您的页面。 有关详细信息,请参阅定义文档兼容性。 与许多其他布局一样,在此布局中,框有助于以可视方式分隔内容,并提供视觉吸引力。 同样,此布局完全是平直的。 不过,可利用 Internet Explorer 9 和 CSS3 为这些框生成圆角。 Internet Explorer 9 中使用 CSS3 生成的圆角非常可靠,并且这些圆角有很多种可能的组合。 在本主题中,我们将重点说明示例布局的三个区域,如下图中的突出显示部分所示: 咖啡豆缩略图图像的边框(由 product_thumb 类选择器定义) 靠页面右侧的边栏(由 sidebar ID 选择器定义) 靠页面顶部和底部的黄色标题带区(由 header 和 footer ID 选择器定义) 生成全部相同的圆角 我们将从咖啡豆缩略图开始操作,为其提供略微平滑的角。 若要为框生成全部相同的圆角,请为 border-radius 属性指定一个值。 […]
View Detailsdiv 实现长英文字母自动换行CSS
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 最佳CSS定义换行代码 .wrap { table-layout:fixed; word-break: break-all; overflow:hidden; } 这里 overflow:hidden;或者 auto;
View Details英文数字、月份和星期
1 one2 two3 three4 four5 five6 six7 seven8 eight9 nine10 ten11 eleven12 twelve13 thirteen14 fourteen15 fifteen16 sixteen17 seventeen18 eighteen19 nineteen20 twenty21 twenty-one22 twenty-two23 twenty-three30 thirty32 thirty-two40 forty50 fifty60 sixty70 seventy80 eighty90 ninety100 one hundredJanuary n.一月February n.二月March n.三月April n.四月May n.五月June n.六月July n.七月August n.八月September n.九月October n.十月November n.十一月December n.十二月 星期一 Monday星期二 Tuesday三 Wednesday四 Thursday五 Friday六Saturday日Sunday
View Details浅析WPF与Silverlight的关键区别
本文将讨论的是WPF与Silverlight的关键区别,希望本文能对大家更好的了解这两者有所帮助。 Silverlight刚诞生时,很多人只是简单的理解它为Flash的竞争对手。但是随着微软的进一步工作,Silverlight的应用范围越来越广泛,甚至很多人将它与WPF混为一谈。本文将为大家细细道来。 当WPF和Silverlight越来越受到.NET开发人员重视的时候,两者间的界限也越来越模糊。回顾六月,Wintellect发布了鲜为人知但极其重要的“微软WPF和Silverlight之异同白皮书”。我们建议GUI开发人员要通读全部69页,我们会列出主要的观点及其对相关业务范围开发人员的影响。 依赖关系属性是两个平台的重要组成部分,使用PropertyMetadata可代替普通字段来保存属性。Silverlight仅提供了该类,而WPF却有若干子类型可用。 UIPropertyMetadata添加了一个标识符,用于决定“在使用了元数据实例的地方,是否应该禁播依赖关系属性的动画” FrameworkPropertyMetadata添加一个标识符来指示影响管道的那些属性,包括控制管理、测量和呈现。它也可用于指示属性是否允许数据绑定以及默认的类型。由于Silverlight不支持该类,因此所有的数据绑定在默认情况下都是单向的。 Silverlight不支持隧道事件。两个平台都支持Direct事件和Bubbling事件。 WPF支持多种类型的触发器。一个简单的触发器附加到依赖关系属性后,当触发器条件满足的时候便会自动修改样式。除了简单触发器以外,WPF也支持可响应路由事件或使用数据绑定的触发器。 Silverlight使用视觉状态管理器代替触发器。WPF当前并不提供该技术,但会在WPF 4.0中添加。 Silverlight仅支持若干标记扩展。除了通用的StaticResource、Binding和TemplateBinding扩展以外,WPF还添加了DynamicResource、RelativeSource、x:Type、x:Static和x:Array。 有很多键盘和鼠标事件仅在WPF中可用。由于为数众多的关系,我们稍后会列出完整列表。 关于UIElement类和IInputElement接口。当某个控件被禁用的时候,WPF使用它们来禁用所有的子控件。Silverlight不提供这种功能,所以开发人员不得不手动遍历控件树。 在通信方面,Silverlight仅限于BasicHttpBinding和PollingDuplexHttpBinding。当然,WPF支持所有的绑定。 最后,打印功能在两者之间也完全不同。WPF可直接打印可视化树而Silverlight则依赖浏览器实现。
View DetailsSET IDENTITY_INSERT 学习心得
想要将值插入到自动编号(或者说是标识列,IDENTITY)中去,需要设定 SET IDENTITY_INSERT 示例: 1.首先建立一个有标识列的表:CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40)) 2.尝试在表中做以下操作:INSERT INTO products (id, product) VALUES(3, 'garden shovel') 结果会导致错误:“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'products' 中的标识列插入显式值。” 3.改用:SET IDENTITY_INSERT products ONINSERT INTO products (id, product) VALUES(1, 'garden shovel') 返回正确。 4.建立另外一个表products2,尝试相同插入操作:CREATE TABLE products2 (id int IDENTITY PRIMARY KEY, product varchar(40)) 然后执行:SET IDENTITY_INSERT products2 ONINSERT INTO products2 (id, product) VALUES(1, 'garden shovel') 导致错误:“表 'material.dbo.products' 的 IDENTITY_INSERT 已经为 ON。无法对表 'products2' 执行 SET 操作。” 改为执行:SET IDENTITY_INSERT products OFFSET IDENTITY_INSERT products2 ONINSERT INTO products2 (id, product) VALUES(2, 'garden shovel') 执行通过。 5.尝试以下操作:SET IDENTITY_INSERT […]
View Details文件管理系统
一、准备知识点: 1.对文件操作,先引用两个命名空间:using System.IO;(操作文件)、using Sysetem.Text;(操作文本) 2.创建文本文件:(1)创建文件名和文件内容(相当于新建文本文档)(2)创建StreamWriter对象,创建一个某某格式的文件(3)将内容写入数据流WriteLine (4)关闭StreamWrite对象.Close() 方法一:直接创建一个StreamWriter对象 string filename = TextBox1.Text string filecontent= TextBox2.Text StreamWriter sw =File.CreatText(Server.MapPath("~/txt/"+ filename +".txt")); sw.WriteLine(filecontent); sw.Close(); Response.Write("<script>alert('已经成功新建了一个’+ filename +'.txt,并添加了数据')</script>") 方法二:在创建StreamWriter对象之前先创建一个FileStream(文件流)对象,并在最后关闭它。 string filename = TextBox1.Text string filecontent= TextBox2.Text FileStream fs = new FileStream(Server.MapPath("~/txt/"+ filename + ".txt")),FileMode.Create,FileAccess.Write); //文件流fs的路径、文件打开方式:创建和写操作 StreamWriter sw = new StreamWriter(fs,Encoding.Default); //文件流fs和浏览器默认编码类型 sw.WriteLine(filecontent); sw.Close(); fs.Close(); Response.Write("<script>alert('成功新建了一个’+ filename +'.txt,并添加了数据')</script>") 3.读取文本文本: 方法一:直接使用File.ReadAllText(文件路径,编码方式) TextBox1.Text=File.ReadAllText(Server.MapPath("~/txt/**.txt"),Encoding.Default); 方法二:使用StreamReader对象以File.OpenText(文件路径)读取文件数据以及使用StreamBuilder对象的Append属性来添加读取文件的数据(UTF-8规范读取的数据) StreamReader sr = File.OpenText(Server.MapPath("~/txt/**.txt")); StreamBuilder sb = new StreamBuilder(); while(!sr.EndOfStream) //如果数据不到最后一行,继续添加(循环语句) { sb.Append(sr.ReadLine() +"<br>");} sr.Close(); 方法三:使用StreamBuilder对象的Append属性添加从StreamReader对象那里读取的数据流,与前一种方法不同的是,这次用到了FileStream的File.Open方法取代了File.OpenText(文件路径)的方法(GB2312规范读取数据) StreamBuilder sb = new StreamBuilder(); FileStream fs = File.Open(Server.MapPath("~/txt/**.txt"),FileMode.Open,FileAccess.Read); StreamReader sr = new StreamReader(fs,Encoding.Default); […]
View Details