| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2174 人关注过本帖
标题:ASP的变量声明请教
只看楼主 加入收藏
freebirdbo
Rank: 1
等 级:新手上路
帖 子:256
专家分:0
注 册:2005-3-27
收藏
 问题点数:0 回复次数:6 
ASP的变量声明请教

我 在一个ASP的简易论坛程序,下面是index.asp的代码,请问我红色标注的 session("username")是怎么来的,是默认申明的一个session变量吗,如果是的话,那么我觉得应该用isEmpty()来检查它是否被初始化才对,也就是说写成:if isEmpty(session("username"))=false

<script language="JavaScript">
function newwin(url) {
var newwin=window.open

(url,"newwin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=400,height=380")

;
newwin.focus();
return false;
}
</script>
<%
'=============连接数据库===============
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.ConnectionString="driver={SQL Server};server=zhangbo;UID=sa;Database=Discuss"
Conn.Open
'============从表Content中读取用户数据==============
Set rs=Server.CreateObject("ADODB.Recordset")
Set rs.ActiveConnection = Conn
rs.CursorType = 3
'打开记录集
rs.Open "SELECT * FROM Content WHERE UpperId=0 ORDER BY IsTop DESC, LastAnswerTime DESC"
'设置每页记录数
rs.PageSize = 3
'读取参数Page,表示当前的页码
Page = CLng(Request("Page"))
'处理不合法的页码
If Page < 1 Then Page = 1
If Page > rs.PageCount Then Page = rs.PageCount
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>论坛首页</title>
<style>
<!--
.main { font-size: 10pt }
-->
</style>
</head>
<body topmargin="0" background="images/Back.jpg" vlink="#000000" link="#000000">

<div align="center">
<center>
<table width="714" border="0" height="218" cellspacing="0" cellpadding="0">
<tr> <td height="112"><img border="0" src="images/Titlebar.jpg"></td> </tr>
<tr> <td height="29" class="main"> <div align="center" style="width: 735; height: 54">
<% If Session("UserName") = "" Then %>
<form method="POST" action="ChkPwd.asp" name="myform">
<p align="left" class="main"><font size="2">&nbsp;
<font color="#FF0000"><% If Session("Errmsg")="" Then %> 游客您好,请您登录或注册
<% Else
Response.Write(Session("Errmsg"))
Session("Errmsg")=""
End If
%> </font>
<img border="0" src="images/arrow.gif">
用户名:</font><input type="text" name="UserName" size="12">&nbsp;&nbsp;
密码: <input type="password" name="UserPwd" size="12"> <input type="submit" value="登录" name="B1">&nbsp;
<a href="UserAdd.asp" onclick="return newwin(this.href)">注册新用户</a>
</form>
<% Else %>
<table width=720> <tr> <td align="left" width=630><p class="main">欢迎光临,<%=Session("UserName")%> ,
<% If Session("UserName") = "Admin" Then %>
<a href=UserList.asp>用户管理</a>&nbsp;
<a href=UserEdit.asp?UserId=<%=Session("UserId")%> onclick="return newwin(this.href)">修改用户信息</a>&nbsp;
<a href=logout.asp>退出登录</a>
<% Else %>
<a href=UserEdit.asp?UserId=<%=Session("UserId")%> onclick="return newwin(this.href)">修改用户信息</a>&nbsp;
<a href=logout.asp>退出登录</a>
<% End If %>
</p> </td>
<td align="left"> <a href="newArt.ASP" onclick="return newwin(this.href)"><font color="#0000FF"><img border="0"

src="images/new.gif"></font></a> </td> </tr> </table>
<% End If %>
</div>
</td> </tr>
</center>
<tr> <td height="18" class="main"> <% Call ShowPage( rs, Page ) %></td></tr>
<tr> <td height="21" class="main"> <% Call ShowList( rs, Page ) %> </td></tr>
<tr> <td height="15"> </td></tr>
<tr> <td height="15"> <p align="center" class="main">本系统为<a href="">数据库编程园地</a>版权所有

</td></tr>
</table>
</body>

[此贴子已经被作者于2006-11-6 9:40:01编辑过]

搜索更多相关主题的帖子: 变量 ASP 声明 newwin 
2006-11-06 09:34
piaoxue
Rank: 3Rank: 3
来 自:地球
等 级:论坛游侠
威 望:3
帖 子:606
专家分:113
注 册:2005-9-19
收藏
得分:0 
session是用来记录你登陆时候输入的用户名的, 你红色的那一句是判断你在论坛进入的时候是不是登陆了用户名。如果没有,就显示您需要登陆的信息。

我感觉在ChkPwd.asp这个页面里面做判断也可以。

我是做平面设计、网站制作、网站推广、主机域名等业务的站长。有需要的给我站内信吧。
2006-11-06 09:45
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
收藏
得分:0 
Session变量的使用一般并不需要初始化,也不用isEmpty去检查,当一个Session变量未被赋值而直接引用时,其默认就是空串""

个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2006-11-06 10:28
freebirdbo
Rank: 1
等 级:新手上路
帖 子:256
专家分:0
注 册:2005-3-27
收藏
得分:0 
二楼说的没有错 在 CHEKPWD.ASP里的却有给 session("username")赋值
但是这个页面里的session("username")跟 chekpwd.asp里的session("username")有关系吗?


斑竹说session变量不用初始化 那么为什么我常看到好多asp程序里这段代码 ,那有怎么解释呢 谢谢:
If IsEmpty(Session("Passed")) Then
Session("Passed") = False
End If
If Session("Passed")=False Then
2006-11-06 10:48
piaoxue
Rank: 3Rank: 3
来 自:地球
等 级:论坛游侠
威 望:3
帖 子:606
专家分:113
注 册:2005-9-19
收藏
得分:0 
这两个页面获取的Session的值是一样的,但是没有什么直接的关系,在index.asp这个页面里面只是起到判断是否是以用户名登陆的用户,这样一个效果。
CHEKPWD.ASP这个页面里面才是真正的获取的session这个变量值的一个处理页面。 这辆个页面没有直接关系,只是获取的值在INDEX。ASP 做个判断。

我是做平面设计、网站制作、网站推广、主机域名等业务的站长。有需要的给我站内信吧。
2006-11-06 11:42
做人很低调
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1268
专家分:0
注 册:2006-8-2
收藏
得分:0 

看看ASP中的内置对象吧

asp内置对象 session 详解

--------------------------------------------------------------------------------

Session 对象
可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。

注意 会话状态仅在支持 cookie 的浏览器中保留。

语法
Session.collection|property|method

集合
Contents 包含已用脚本命令添加到会话中的项目。
StaticObjects 包含通过 <OBJECT> 标记创建的并给定了会话作用域的对象。


属性
CodePage 将用于符号映射的代码页。
LCID 现场标识。
SessionID 返回用户的会话验证。
Timeout 应用程序会话状态的超时时限,以分钟为单位。


方法
Abandon 该方法破坏 Session 对象并释放其资源。


事件
global.asa 文件中声明下列事件的脚本。

Session_OnEnd
Session_OnStart


有关以上事件及 global.asa 文件的详细信息, 请参阅 Global.asa 参考.

注释
您可以在 Session 对象中存储值。存储在 Session 对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。

<%
Session("username") = "Janine"
Session("age") = 24
%>

但是,如果您将对象存储在 Session对象中,而且您使用 VBScript 作为主脚本语言。则必须使用关键字 Set。如下列脚本所示。

<% Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>

然后,您就可以在后面的 Web 页上调用 MyComponent.class1 揭示的方法和属性,其调用方法如下:

<% Session("Obj1").MyMethod %>

也可以通过展开该对象的本地副本并使用下列脚本来调用:

<%
Set MyLocalObj1 = Session("Obj1")
MyLocalObj1.MyObjMethod
%>

创建有会话作用域的对象的另一种方法是在 global.asa 文件中使用 <OBJECT> 标记。

但是不能在 Session 对象中存储内建对象。例如,下面每一行都将返回错误。

<%
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%>

在将对象存储到 Session 对象之前,必须了解它使用的是哪一种线程模型。只有那些标记为“Both”的对象才能存储在没有锁定单线程会话的 Session 对象中。详细信息, 请参阅“创建 ASP 组件”中的“选择线程模型”。

若您将一个数组存储在 Session对象中,请不要直接更改存储在数组中的元素。例如,下列的脚本无法运行。

<% Session("StoredArray")(3) = "new value" %>

这是因为 Session对象是作为集合被实现的。数组元素 StoredArray(3) 未获得新的赋值。而此值将包含在 Application 对象集合中,并将覆盖此位置以前存储的任何信息。

我们极力建议您在将数组存储在 Session对象中时,在检索或改变数组中的对象前获取数组的一个副本。在对数组操作时,您应再将数组全部存储在 Session 对象中,这样您所做的任何改动将被存储下来。下列的脚本对此进行演示。

---file1.asp---
<%
'Creating and initializing the array
Dim MyArray()
Redim MyArray(5)
MyArray(0) = "hello"
MyArray(1) = "some other string"

'Storing the array in the Session object
Session("StoredArray") = MyArray

Response.Redirect("file2.asp")
%>

---file2.asp---
<%
'Retrieving the array from the Session Object
'and modifying its second element
LocalArray = Session("StoredArray")
LocalArray(1) = " there"

'printing out the string "hello there"
Response.Write(LocalArray(0)&LocalArray(1))

'Re-storing the array in the Session object
'This overwrites the values in StoredArray with the new values
Session("StoredArray") = LocalArray
%>

示例
下列代码将字符串 MyName 分配给名为 name 的会话变量,并给名为 year 的会话变量指定一个值,而且为 some.Obj 组件的实例指定一个名为 myObj 的变量。

Session("name") = "MyName"
Session("year") = 96
Set Session("myObj") = Server.CreateObject("someObj")
%>


其实我很低调,只是你不知道...
2006-11-06 11:49
freebirdbo
Rank: 1
等 级:新手上路
帖 子:256
专家分:0
注 册:2005-3-27
收藏
得分:0 
谢啦…………
2006-11-06 13:08
快速回复:ASP的变量声明请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026625 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved