asp编程问题--为啥注册会员时总是说帐号重复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp编程问题--为啥注册会员时总是说帐号重复相关的知识,希望对你有一定的参考价值。
<!--#include file="sub/sjlj.asp"-->
<!--#include file="sub/fun2.asp"-->
<%
function changechr(str)
changechr=replace(replace(replace(replace(str,"<","<"),">",">"),chr(13),"<br>")," "," ")
changechr=replace(changechr,"'","‘")
changechr=replace(changechr,mid(" "" ",2,1),""")
end function
function GenID()
fname = now()
fname = replace(fname,"-","")
fname = replace(fname," ","")
fname = replace(fname,":","")
fname = replace(fname,"PM","")
fname = replace(fname,"AM","")
fname = replace(fname,"上午","")
fname = replace(fname,"下午","")
GenID = fname
end function
Name=changechr(trim(request("Name")))
If name="" Then
response.write "<script>alert('用户名不能为空!请返回!');history.back();</script>"
response.end
end if
Password = changechr(trim(request("Password")))
username = changechr(trim(request("username")))
if Password="" or username="" then
call msg("管理员密码和管理员账号不能为空!请返回!","-1")
end if
set us = conn.execute("select username from uesr ")
if not us.eof then
call msg("账号有重复!请返回!","-1")
end if
us.close
set us = nothing
username = username
on error resume next
BClassID =cint(request("BClassId"))
SClassID =cint(request("SClassID"))
CityID =cint(request("CityID"))
DistrictID =cint(request("DistrictID"))
AreaID =cint(request("AreaID"))
Address = changechr(trim(request("Address")))
Telephone = changechr(trim(request("Telephone")))
QQ = changechr(trim(request("QQ")))
TimePeriod = changechr(trim(request("TimePeriod")))
JiaoTong = changechr(trim(request("JiaoTong")))
Website = changechr(trim(request("Website")))
Email = changechr(trim(request("Email")))
Recommendation = changechr(trim(request("Recommendation")))
Addtime = changechr(trim(request("Addtime")))
Intro = changechr(trim(request("Intro")))
DefaultPicUrl=changechr(trim(request("DefaultPicUrl")))
If name="" or name="admin" Then
call msg("用户名有错误!请返回!","-1")
end if
set rs=server.createobject("adodb.recordset")
sql="select * from user"
rs.open sql,conn,1,3
rs.addnew
rs("username") = username
rs("Password") = Password
rs("Name") = Name
rs("CompanyLevelID")= 1 '免费
rs("CityID") = CityID
rs("DistrictID")= DistrictID
rs("AreaID") = AreaID
rs("Address") = Address
rs("Telephone") = Telephone
rs("QQ") = QQ
rs("TimePeriod")= TimePeriod
rs("JiaoTong") = JiaoTong
rs("Website") = Website
rs("Recommendation")= Recommendation
rs("Intro") = Intro
rs("pic") =DefaultPicUrl
rs.update
rs.close
call msg("注册成功,进入管理页面!","index.asp")
set rs=nothing
conn.close
set conn=nothing
%>
//上面的uesr应该写错了,应该是user吧?另外还缺少查询条件
if not us.eof then
call msg("账号有重复!请返回!","-1")
end if
us.close
set us = nothing
上面的代码写错了,应修改如下:
set us = conn.execute("select username from user where username='"&username&"'")
if not us.eof then
call msg("账号有重复!请返回!","-1")
end if
us.close
set us = nothing 参考技术A set us = conn.execute("select username from uesr ")
set us = conn.execute("select username from uesr where username='"&username&"'") 参考技术B set us = conn.execute("select count(*) from user where username='"&username&"'")
需要加条件啊。你把整个数据库的都去了
为啥注册和我总是在变异和查询类型中?
【中文标题】为啥注册和我总是在变异和查询类型中?【英文标题】:Why the signup and me are always in the mutation and query types?为什么注册和我总是在变异和查询类型中? 【发布时间】:2019-07-12 07:35:43 【问题描述】:我正在学习 GraphQL,在我看到的每个示例中,signup
/login
和 me
调用都在 mutation
和 query
类型中。这是为什么?示例:
type Query
me: User
type Mutation
login(email: String!, password: String!): String
这不应该是User
类型吗?既然是用户相关的事情?
如果这是一个基于意见的问题,我深表歉意 - 如果是这样,我将关闭问题。
【问题讨论】:
【参考方案1】:来自spec:
GraphQL 可建模三种类型的操作:
查询 - 只读获取。
mutation – 一个写入,然后是一个提取。
订阅 – 一个长期存在的请求,它获取数据以响应源事件。
每个操作都与特定类型相关联,尽管变异和订阅类型都是可选的。所以一个模式可以这样定义:
schema
query: Query
这里,Query
指的是一个名为 Query
的类型。按照惯例,这三种类型被命名为Query
、Mutation
和Subscription
——但它们可以命名为其他任何名称,这并不重要。但是,它们必须是对象类型,并且必须至少包含一个字段。
这些操作类型充当 GraphQL 操作的“根”,并且实际上是数据图的入口点。没有其他类型在根级别公开,即使它们存在于您的架构中。
me
或 viewer
字段通常暴露在 Query
类型上,以允许用户获取当前登录的用户。假设我们已经定义了一个User
类型,如果我们将me
字段添加到我们的Query
类型,并将该字段的类型设置为User
,我们可以让端点的消费者编写如下查询:
query
me
# some set of User fields like id, firstName, etc.
如果我们将 me
字段放在 User
类型上,a) 我们不一定有办法请求该字段,因为它不会位于根目录,并且 b) 我们会暴露一个 @ 987654340@ 字段在我们返回 User
的任何地方(例如,返回 Users
列表的 friends
字段)没有多大意义。
同样的逻辑适用于像login
这样的突变——我们希望它们成为我们操作的根,所以我们将它们放在Mutation
类型中。 login
应该是突变还是查询,另一方面,is subjective and depends on your particular use case。
快速绕过突变:
如果您习惯使用 REST,通常会看到操作以它们所操作的数据源为前缀,例如:
POST /articles/id/bookmark
而且我们可能倾向于对我们的突变强制执行类似的结构,从而导致如下请求:
mutation
article
bookmark
但是,这是完全没有必要的,实际上违反了惯例并使实现更加复杂。这样做就足够了:
mutation
bookmarkArticle
关于这一点的更多信息可以找到here。
【讨论】:
【参考方案2】:本题基于 GraphQL 架构设计。设计是 100% 基于意见的东西。但让我试着回答你的问题。
在login
变异答案中,客户端应该收到身份验证令牌或类似的。这个token
将作为http 标头发送给每个身份验证请求。显然,这个token
不是User
实体的一部分。在复杂的应用程序中,您可以像这样设计变异答案:
user: ...
token: ...
但对于演示应用程序只需要令牌(字符串)作为login
变异答案。
【讨论】:
【参考方案3】:这原来是两个独立的问题。
这里的第一个答案是,如果您要进行 GraphQL 查询,则需要某种方法来获取对象以开始查询。不像您在 Java 或其他面向对象语言中看到的那样,没有“静态方法”的概念。这些初始查询集必须在根 Query
类型上。你可以想象
type Query
"The currently logged-in user."
me: User!
"Find a user by their email address."
user(email: String!): User
拥有User
对象后,您可以查询其他字段,但最初需要一些方法来获取它。
query WhatsMyEmail
me email
其次,所有更改数据的操作都是Mutation
类型的***字段。这主要是惯例——实际上没有什么能阻止你在解析器函数中做任何你想做的事情——但它有几个关键影响。只需查询对象上的每个字段并从模式中生成类似的查询就很容易了:
fragment AllUserFields on User
id, name, email, delete
query WhoAmI
me ...AllUserFields # oops I deleted myself
您还可以保证***突变按顺序执行,但 GraphQL 中的其他所有内容都可以按任何顺序执行。如果您的架构允许这样做,email
可以是旧的或新的电子邮件地址,例如:
query ChangeMyEmail
me
changeEmail(email: "new@example.com")
email # is allowed to evaluate first and return old@example.com
诸如“登录”之类的内容实际上只是与任何特定对象无关的“操作”,仅附加到 Mutation
而不是任何更具体的类型更有意义。 (如果“login”是User
的一个属性,是哪一个,在没有登录的情况下如何找到它?)
【讨论】:
以上是关于asp编程问题--为啥注册会员时总是说帐号重复的主要内容,如果未能解决你的问题,请参考以下文章
为啥不总是调用已注册的 UIDeviceOrientationDidChangeNotification?
为啥复选框选择列表总是在 ASP.NET MVC-5 中发布为 null [重复]