如何实现用户登录

显示一个登陆框:

function display_login_form() {
?>
  <p><a href="register_form.php">Not a member?</a></p>
  <form method="post" action="member.php">
  <table bgcolor="#cccccc">
   <tr>
     <td colspan="2">Members log in here:</td>
   <tr>
     <td>Username:</td>
     <td><input type="text" name="username"/></td></tr>
   <tr>
     <td>Password:</td>
     <td><input type="password" name="passwd"/></td></tr>
   <tr>
     <td colspan="2" align="center">
     <input type="submit" value="Log in"/></td></tr>
   <tr>
     <td colspan="2"><a href="forgot_form.php">Forgot your password?</a></td>
   </tr>
 </table></form>
<?php
}

表单处理三个要素:

1、method指定是get还是post,get的方式会在网址中显示表单的内容,post的方式则会隐藏表单的内容;

2、将表单的内容传递给哪个页面进行处理,这个地方指定member.php;

3、表单的内容,用户名username和password,type指定类型,如果是text,那么用户输入的时候可以所见之所得看见自己输入了什么,如果是password类型,则会做页面上的隐藏处理。最后,设置一个类型为sumbit的按钮,按钮的名称为Log in。


接着,我们看看member.php这个文件的内容:

<?php

// include function files for this application
require_once('bookmark_fns.php');
session_start();

//create short variable names
@$username = $_POST['username'];
@$passwd = $_POST['passwd'];

if ($username && $passwd) {
// they have just tried logging in
  try  {
    login($username, $passwd);
    // if they are in the database register the user id
    $_SESSION['valid_user'] = $username;
  }
  catch(Exception $e)  {
    // unsuccessful login
    do_html_header('Problem:');
    echo 'You could not be logged in.
          You must be logged in to view this page.';
    do_html_url('login.php', 'Login');
    do_html_footer();
    exit;
  }
}

do_html_header('Home');
check_valid_user();
// get the bookmarks this user has saved
if ($url_array = get_user_urls($_SESSION['valid_user'])) {
  display_user_urls($url_array);
}

// give menu of options
display_user_menu();

do_html_footer();
?>

要点解析:

1、将login登陆页表单中的内容读取出来并保存,待处理:

//create short variable names
@$username = $_POST['username'];
@$passwd = $_POST['passwd'];

2、判断用户名username和密码passwd内容都不为空,然后将这两个变量值传给函数function login($username, $password)处理,如果登录成功则将当前的用户名保存在$_SESSION['valid_user']会话变量中,否则抛出异常。


我们再看看函数login的实现:

function login($username, $password) {
// check username and password with db
// if yes, return true
// else throw exception

  // connect to db
  $conn = db_connect();

  // check if username is unique
  $result = $conn->query("select * from user
                         where username='".$username."'
                         and passwd = sha1('".$password."')");
  if (!$result) {
     throw new Exception('Could not log you in.');
  }

  if ($result->num_rows>0) {
     return true;
  } else {
     throw new Exception('Could not log you in.');
  }
}
要点解析:

1、通过接口db_connect();连接数据库;

2、在数据库的表user中查询用户名和密码同时符合用户输入的记录;

3、如果找到了匹配的记录,那么查询结果的num_rows大于0,返回登录成功。

阅读更多
换一批

没有更多推荐了,返回首页