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
%>

set us = conn.execute("select username from uesr ")
//上面的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/loginme 调用都在 mutationquery 类型中。这是为什么?示例:

type Query 
  me: User


type Mutation 
  login(email: String!, password: String!): String

这不应该是User 类型吗?既然是用户相关的事情?

如果这是一个基于意见的问题,我深表歉意 - 如果是这样,我将关闭问题。

【问题讨论】:

【参考方案1】:

来自spec:

GraphQL 可建模三种类型的操作:

查询 - 只读获取。

mutation – 一个写入,然后是一个提取。

订阅 – 一个长期存在的请求,它获取数据以响应源事件。

每个操作都与特定类型相关联,尽管变异和订阅类型都是可选的。所以一个模式可以这样定义:

schema 
  query: Query

这里,Query 指的是一个名为 Query 的类型。按照惯例,这三种类型被命名为QueryMutationSubscription——但它们可以命名为其他任何名称,这并不重要。但是,它们必须是对象类型,并且必须至少包含一个字段。

这些操作类型充当 GraphQL 操作的“根”,并且实际上是数据图的入口点。没有其他类型在根级别公开,即使它们存在于您的架构中。

meviewer 字段通常暴露在 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 [重复]

ASP.Net Core 3.1 脚手架的身份页面并未全部使用(即登录页面正常,注册页面不正常)......为啥?

为啥我的手机号注册不了nice软件?

为啥 Asp.net MVC 不能区分具有不同参数的两个动作?