当前位置: 首页 > 知识库问答 >
问题:

用户名必须存在于数据库中才能创建登录

夏朝
2023-03-14

我在Dreamweaver的帮助下创建了这个登录页面,并希望使其用户名字段必须与SQL数据库中的用户名匹配才能创建密码。我不太熟悉这一点,也不确定我需要做什么来要求一个现有的用户名,然后向数据库中的用户名行添加密码。

以下是Dreamweaver创建的php代码:与数据库的连接已经存在,因此我知道下面的代码中不存在该连接。这就像一个正常的注册页面一样好用,但我不希望任何人都能注册。

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

// *** Redirect if username exists
$MM_flag="MM_insert";
if (isset($_POST[$MM_flag])) {
  $MM_dupKeyRedirect="userexists.php";
  $loginUsername = $_POST['username'];
  $LoginRS__query = sprintf("SELECT username FROM users WHERE username=%s", GetSQLValueString($loginUsername, "text"));
  mysql_select_db($database_User_Information, $User_Information);
  $LoginRS=mysql_query($LoginRS__query, $User_Information) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);

  //if there is a row in the database, the username was found - can not add the requested username
  if($loginFoundUser){
    $MM_qsChar = "?";
    //append the username to the redirect page
    if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
    $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
    header ("Location: $MM_dupKeyRedirect");
    exit;
  }
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "register")) {
  $insertSQL = sprintf("INSERT INTO users (username, password) VALUES (%s, %s)",
                       GetSQLValueString($_POST['username'], "text"),
                       GetSQLValueString($_POST['password1'], "text"));

  mysql_select_db($database_User_Information, $User_Information);
  $Result1 = mysql_query($insertSQL, $User_Information) or die(mysql_error());

  $insertGoTo = "login.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_User_Information, $User_Information);
$query_User_Request = "SELECT * FROM users";
$User_Request = mysql_query($query_User_Request, $User_Information) or die(mysql_error());
$row_User_Request = mysql_fetch_assoc($User_Request);
$totalRows_User_Request = mysql_num_rows($User_Request);
?>

共有1个答案

周苑博
2023-03-14

您只需将此项检查为

$loginUsername = $_POST['username'];
$LoginRS__query = sprintf("SELECT username FROM users WHERE username='$loginUsername'", GetSQLValueString($loginUsername, "text"));

如果这个查询成功地给出了结果,那么您需要进一步的逻辑吗

 类似资料:
  • 问题内容: 我正在使用SQL Server开发C#应用程序,并想调用存储过程来创建登录名和用户。 我正在寻找最简单的方法来做到这一点,只是默认的东西,但有用户名和密码。 登录旁边的创建用红色下划线标出? 但是我认为我的登录很好吗?请告诉我我是否缺少任何东西。 与创建用户一起,是否只是这样的一个班轮? 我不明白,并… 我可以做这样的事情: Google如何搜索以下来源: http://ss64.co

  • 本文向大家介绍必须会的SQL语句(一) 创建数据库与删除数据库,包括了必须会的SQL语句(一) 创建数据库与删除数据库的使用技巧和注意事项,需要的朋友参考一下 1.创建数据库 2.删除数据库 只能用drop    drop database 名称

  • 问题内容: PostgreSQL似乎不允许创建名为“ user”的数据库表。但是MySQL将允许创建这样的表。 那是因为这是一个关键词吗?但是Hibernate无法识别任何问题(即使我们设置了PostgreSQLDialect)。 问题答案: 是保留字,通常不建议使用保留字作为标识符(表,列)。 如果您坚持要这样做,则必须将表名放在双引号中: 但是,在引用表时,您 总是 需要使用双引号。此外,表名

  • 有没有一种好方法可以自动创建新用户并将其作为数据库所有者添加到Azure托管SQL Server上创建的每个新数据库中? 因此,基本上创建用户更改角色db_owner每次在服务器上创建新数据库时添加成员(或sp_addrolemember)。 TL;DR on'why':我需要让服务器上的每个数据库都可以访问(并且可以编辑、更改模式对象、更改数据等),并且有一个用户连接到与此问题相关的特定登录名。

  • 安装oracle 19C后,它要求用户名和密码。输入什么,以及如何创建一个具有所有权限和身份验证权限的新用户。(注意,我试图通过登录SYSDBA创建用户命令,但它显示错误为无效的普通用户或角色名.在这里输入图像描述 [在此处输入图像描述][2]

  • 我对oracle数据库非常陌生,请原谅我在问题中的任何技术错误。我使用的是oracle 19c,我认为我的“system”用户密码与“sysdba”用户密码不同。在安装时,我每次都使用相同的密码,但现在连接到system或“\as sysdba”时,连接没有问题,但当我键入“orcl_listener”或“orcl”或“sysdba”的密码时,密码是错误的。例如:conn sysdba输入密码:错