欢迎注册和登陆我们的学海灯塔

经过了一周的时间,在我们队长的带领下,我们小组成功解决了学海灯塔的登陆和注册功能。欢迎光临 学海灯塔
下面介绍一下这个功能是如何实现的。不多说,先上代码。

register.php中的注册表单
<form action="register_handle.php" method="post" class="login">
                <p class="lead">注册用户</p>
                <div class="form-group">
                    <input type="text" autocomplete="off" class="required form-control" placeholder="姓名 *" name="Name" value="">
                </div>
                <div class="form-group">
                    <input type="text" autocomplete="off" class="required form-control" placeholder="用户名 *" name="username" value="">
                </div>
                <div class="form-group">
                    <input type="password" class="required form-control" placeholder="密码 *" name="password" value="">
                </div>
                <div class="form-group">
                    <input type="password" class="required form-control" placeholder="确认密码 *" name="Conform Password" value="">
                </div>
                <div class="form-group">
                    <input type="text" autocomplete="off" class="required form-control" placeholder="邮箱 *" name="email" value="">
                    <input type="submit" value="发送验证码" class="course-submit">
                </div>
                <div class="form-group">
                    <input type="text" autocomplete="off" class="required form-control" placeholder="邮箱验证码(登录邮箱查询) *" name="conform email" value="">
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary btn-lg1 btn-block" name="submit" value="注册">
                </div>
            </form>
在上面的这个表单里,点击注册按钮后会把数据提交给register_handle.php处理,处理过程请看下面的代码。

register_handle.php
<?php 
$username=$_POST['username'];
$password=$_POST['password'];
$link = mysqli_connect('localhost','users','666','users');
if($_POST['submit']){
    if(mysqli_query($link,"insert into users (username,password) values('$username','$password')")){
        setcookie("uname",$username,time()+7200);
       echo "<script>alert('successfully');window.location= 'index.php';</script>";
    }else {
        echo "<script>alert('failed');history.go(-1)</script>";
    }
}

?>
首先,$username=$_POST['username'];  $password=$_POST['password'];  这两句话把表单中的username和password传递给$username和$password。接下来,$link = mysqli_connect('localhost','users','666','users');  用来连接数据库,localhost是主机名,第一个users是用户名,666是用户密码,第二个users是数据库名。这个函数的用法可以看 菜鸟教程里面的函数介绍
mysqli_query($link,"insert into users (username,password) values('$username','$password')") 这句话就是把$username和$password加到一个叫做users的数据表里。这个函数的用法可以看 菜鸟教程mysqli_query的介绍。如果成功登陆就跳到index.php,失败了就返回当前页面。

login.php中的登陆表单
<form action="login_handle.php" method="post" name="form" class="login">
	    	<p class="lead">欢迎!</p>
		    <div class="form-group">
			    <input autocomplete="off" type="text" name="username" class="required form-control" placeholder="用户名">
		    </div>
		    <div class="form-group">
			    <input autocomplete="off" type="password" class="password required form-control" placeholder="密码" name="password">
		    </div>
		    <div class="form-group">
		    	<input type="checkbox" name="remember" value="true"> 记住密码
		    	<input type="submit" class="btn btn-primary btn-lg1 btn-block" name="submit" value="登录">
		    </div>
	        <p>没有注册或忘记密码? <a href="register.php" title="Sign Up">点击这里</a></p>
		 </form>
登陆界面的方法也是类似的,把登陆表单的数据交给login_handle.php处理,处理过程在下面介绍。

login_handle.php
<?php 
$username=$_POST['username'];
$password=$_POST['password'];
$link = mysqli_connect('localhost','users','666','users');
$query=mysqli_query($link,"SELECT username,password FROM users WHERE username = '$username'");//找到与输入用户名相同的信息,注意要取出的信息有两项

if (!$query) {
 printf("Error: %s\n", mysqli_error($link));
 exit();
}
$row = mysqli_fetch_array($query);

if($_POST['submit']){    
    if($row['username']==$username &&$row['password']==$password){
        setcookie('uname',$username,time()+7200);
        echo "<script>alert('successfully');window.location.href= 'index.php';</script>";
    }
    else echo "<script>alert('failed');history.go(-1)</script>";//返回之前的页面
}



?>
这段php脚本获取了username和password之后,就去数据库里面查找username的相同的字段,$query=mysqli_query($link,"SELECT username,password FROM users WHERE username = '$username'");  这个函数的用法也可以看 菜鸟教程的mysqli_query介绍。如果找到匹配的username和password,就跳到index.php,否则返回当前页。

index.php用户名信息
<li class="dropdown">
                    	<?php 
                		$flag=0;
             			if(isset($_GET["out"])){
                			if($_GET["out"]){
                			setcookie('uname','',time()-1);
        					$flag=1;//防止服务器接收到getout操作时已经认为该用户有cookie,然后下面的COOKIE[NAME]已经有了,服务器返回给他的才是空的
    						}
						}
						if($flag!=1){
    						$link=mysqli_connect('localhost','users','666','users');
    						if(isset($_COOKIE['uname'])){
        						$name=$_COOKIE['uname'];
        						$query=mysqli_query($link,"SELECT username FROM users WHERE username = '$name'");
        						$row=mysqli_num_rows($query);
        						if($row==1){
									echo '<i class="fa fa-user"></i> '.$name.'<a href="index.php?out=1">退出</a>';
        						}
    						}else{ 
						  		echo '<a href="login.php"><i class="fa fa-user"></i><span>登录/注册</span></a>';
							}
						}
						else{ 
							echo '<a href="login.php"><i class="fa fa-user"></i><span>登录/注册</span></a>';
						}
						?>
		        </li>
在没有登陆的时候,主页上会有一个登录/注册的链接按钮,成功登陆之后这个按钮会变成用户名和退出按钮。这个功能是通过上面的代码实现的。仔细观察会发现,在register_handle.php和login_handle.php成功注册或者登陆之后都有这么一句话setcookie('uname',$username,time()+7200); 就是服务器给浏览器一个cookie叫做uname,值是$username,有效期是7200秒,使用方法可以看 w3school关于setcookie的介绍
如果isset($_COOKIE['uname']) 并且查询数据库里只有一个叫做$username的用户,就会执行echo '<i class="fa fa-user"></i> '.$name.'<a href="index.php?out=1">退出</a>';把登陆/注册按钮替换成用户名和退出。

在上面,我们介绍了页面是怎么给数据库发东西和获取东西的,接下来介绍一下数据库怎么配置。

首先打开phpmyadmin,点击用户账户,如果有一个叫做users的用户并且你知道密码那就不用新注册了。


接下来点击数据库,新建一个数据库叫做users


点击这个数据库,进去新建一个数据表叫做users



再看一下这个数据表的结构,有两个字段,其中username是主键和索引,为了保证不出现相同的用户名,需要选择username主键和唯一,不然有两个相同的username就登不上去了。



看一下我们的数据表内容,可以在后台修改。


欢迎光临我们的 学海灯塔


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值