CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

使用 PHP 进行身份管理

作者: ,  出处:甲骨文OTN, 责任编辑: 叶江, 
2007-05-24 10:50
  了解如何在基于 PHP 的 Web 应用程序中实现身份管理……

  分析基本 HTTP/HTTPS 身份验证代码。您输入用户名和口令之后,脚本将调用 verify_db_login() 函数。以下 PHP 代码演示了如何在领域中验证用户身份:

  // Declare control variable.
  $valid_user = false;
  // Authenticate user.
  if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW'])))
  if (verify_db_login($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']))
  $valid_user = true;

  该函数将打开一个 Oracle 数据库连接,并检查凭证是否有效。如果凭证有效,verify_db_login() 函数将返回 true;如果凭证无效,则返回 false。如果缺少 SYSTEM_USER 表,代码将要求您检查缺少的表。Web 页面的主代码显示在该函数中:

  // Check for authorized account.
  function verify_db_login($userid,$passwd)
  {
  // Attempt connection.
  if ($c = @oci_connect(SCHEMA,PASSWD,TNS_ID))
  {
  // Return a row.
  $s = oci_parse($c,"SELECT NULL
  FROM system_user
  WHERE system_user_name = :userid
  AND system_user_password = :passwd
  AND SYSDATE BETWEEN start_date
  AND NVL(end_date,SYSDATE)");
  // Encrypt password.
  $newpassword = sha1($passwd);
  // Bind variables as strings.
  oci_bind_by_name($s,":userid",$userid);
  oci_bind_by_name($s,":passwd", $newpassword));
  // Execute the query.
  if (@oci_execute($s,OCI_DEFAULT))
  {
  // Check for a validated user, also known as a fetched row.
  if (oci_fetch($s))
  return true;
  else
  return false;
  }
  else
  {
  // Print error when execution fails.
  $errorMessage = "Check for a missing SYSTEM_USER table.
";
  print $errorMessage;
  }
  // Close connection.
  oci_close($c);
  }
  else
  {
  $errorMessage = oci_error();
  print htmlentities($errorMessage['message'])."
";
  }
  }

  对于 verify_db_function() 函数,需要注意两件事情。第一,查询返回一个空值,这将避免处理任何不必要的返回值。第二,明文口令使用 sha1() 函数加密,并指定给本地变量。

  现在,您应该知道如何为基本 HTTP/HTTPS 身份验证构建所需的组件。与该身份验证模型相关的两个注意事项是:(1) 一旦您在浏览器中验证了凭证,即拥有完整的领域访问权;(2) 只能通过关闭所有浏览器窗口来注销。

  Cookie 和会话模型。Cookie 和会话模型很常用,因为您可以让用户登录和注销 Web 应用程序而无需关闭所有浏览器窗口。该身份验证模型也比基本 HTTP/HTTPS 模型更加复杂。可以通过多种方式实现 Cookie 和会话身份验证。

共10页。 9 1 2 3 4 5 6 7 8 9 10 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i