>  기사  >  백엔드 개발  >  PHP를 사용하여 간단한 백그라운드 등록 및 로그인 구현(코드 포함)

PHP를 사용하여 간단한 백그라운드 등록 및 로그인 구현(코드 포함)

不言
不言원래의
2018-07-24 11:32:2521739검색

이 기사에서 공유한 내용은 PHP를 사용하여 간단한 백엔드 등록 및 로그인(코드 포함)을 구현하는 방법에 관한 것입니다. 이 내용은 도움이 필요한 친구들에게 큰 도움이 되기를 바랍니다.

저는 PHP 초보입니다. 얼마전에 공부해서 PHP 중국어 사이트의 백그라운드 프레임워크를 다운받고 스타일을 변경한 후 인터넷에서 형성된 프로젝트를 참고하여 함수코드를 추가했습니다.

또 다른 참고 사항: 저는 검증을 위해 navicat for mysql+sublime+phpmystudy 도구를 사용합니다.

1. 먼저 레이어와 디렉터리 파일을 생성합니다

먼저 프로젝트의 계층적 디렉터리를 넣습니다:

등록 및 로그인 기능만 구현해야 하는 경우 생략할 수 있는 폴더가 많이 있습니다. 그 안에도 구현했기 때문입니다. 프런트 엔드 코드는 전체 시스템의 계층적 디렉터리에 배치됩니다.

2. 항목 파일(index.php)

<?php 

/* PHP系统进入的入口页面*/
header("Content-type: text/html; charset=utf-8");
include(&#39;admin/login.html&#39;);//首页

?>

3. 로그인 페이지

3.1 admin/login.html (여기서는 부트스트랩 프레임워크와 jquery가 사용됩니다.)

<!-- PHP系统进入的页面 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <!-- <link rel="stylesheet" type="text/css" href="../public/css/base.css">  -->
    <link rel="stylesheet" type="text/css" href="css/b_login.css">
    <title></title>
</head>
<body>

<span class="visible-lg"><!-- bootstrap自适应工具  大屏幕>=1200px可见 必须全屏才可以使用-->
 <p class="login">
	<p class="loginmain">
		<h2>熊猫个人事务管理系统</h2>
			<form action="admin/login_check.php" class="form-horizontal" method="post">
		           <!-- 让表单在一行中显示form-horizontal -->

                <!-- 用户名 -->
		          <p class="form-group">
		          	<!-- for 属性规定 label 绑定到哪个表单元素 -->
		              <label for="username" class="col-lg-1 control-label">用户名</label>

		               <p class="col-lg-4">
		                <input type="text" name="username" id="username" class="form-control" placeholder="请输入登录账号"/>
		              </p>              
		          
		          </p>
				  <p class="form-group"></p>
				  <p class="form-group"></p>

                <!-- 密码 -->
		          <p class="form-group">
		              <label for="password" class="col-lg-1 control-label">密  码</label>
		              <p class="col-lg-4">
		                <input type="password" name="password" id="password" class="form-control" placeholder="请输入密码"/>
		              </p>              
		          </p>
                
                   <p class="form-group"></p>
                   <p class="form-group"></p>


                <!-- 验证码 -->
                <p class="form-group">
		              <!-- for 属性规定 label 与哪个表单元素绑定。 -->
		              <label for="captcha" class="col-lg-1 control-label">验证码</label>
		              
		             <p class="col-lg-2">
		              	<!-- ./ 当前路径 -->
                         <!-- 用户输入验证码的框  -->
		                <input type="text" name="captcha"  id="captcha" class="form-control" placeholder="请输入右图内容:"  />
                         <!--   当用户链接时,void(0) 计算为 0,但 Javascript 上没有任何效果。 -->
                     </p>
		             
		              <p>    

                          <!-- 验证码图片 -->
                          <a href="#" onclick="javascript:reflash()">
                       <img id="captcha_img" name="captcha_img"  alt="看不清楚,换一张"  border="1" src="admin/captcha.php?r=<?php echo rand(); ?>" width=100 height=30>  
                      </a>


                </p>
                  <p class="form-group"></p>
                  <p class="form-group"></p>


		          <p class="form-group">
		            <p class="col-lg-11 col-lg-offset-1">              
		                <span class="checkbox ">
		                    <label><input type="checkbox" name="" class="checkbox-inline">记住我</label> 
		                </span>           
		            </p>
		          </p>

               
		          <p class="form-group">
		          	<p>
		            <p class="col-lg-1 col-lg-offset-1">
		                <input type="submit" name="b_login" value="登录" class="btn btn-success btn-lg">
		            </p>

                    <p class="col-lg-1 col-lg-offset-1">
		            	<a href="admin/register.html">
		            		<input type="button" name="b_register" value="注册" class="btn btn-success btn-lg">
                        </a>
		            </p>
                       <p class="form-group"></p>
                       <p class="form-group"></p>
		            <span class="text" name="text"></span>  
		          </p>

		    </form>

	    </p>
	<p class="rightpic" >
		<p id="container" >
		</p>
	</p>
 </p>

		<p class="bottom">
	      版权所有 2017-2018 我是熊( ̄(工) ̄)工作室
       </p>
</span>
<script src="public/js/jquery-3.1.1.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="public/js/delaunay.js"></script>
<script src="public/js/TweenMax.js"></script>
<script src="js/effect.js"></script>

<script src="js/b_login.js"></script>
</body>
</html>

3.2 css/ b_login. css (사진은 개인 취향에 따라 다를 수 있음)

body{
	background-image: url(../picture/17.png);
	background-size: cover;
	font-size: 17px;
	font-family: "幼圆"
}
.login{
	width:1000px;
	height:500px;
	margin:100px auto;
	border:1px;
	background-color: rgba(0, 0, 0, 0.3);
	padding: 1px;
	position:relative;
	color:#fff;
}
.rightpic{
	width:500px;
	height:360px;
	position:absolute;
	right:30px;
	top:50px;
	opacity: 0.6;
}
.captcha{

	cursor:pointer
}
.text{
font-size: 18px;
margin-left: 180px;
text-align: center;
color: #f00;

}
.bottom{
	text-align: center;
	color: #fff;
}
#container{	
	position: relative;
	width:500px;
	height:330px;
}
canvas{ position: absolute;
 		backface-visibility: hidden; 
		-webkit-backface-visibility: hidden;
		-moz-backface-visibility: hidden;
	 	-ms-backface-visibility: hidden;
}
img {
	 position: absolute;
	 -webkit-transition: opacity .3s;
	  transition: opacity .3s;
}

3.3 js/b_login.js (인증 코드는 여기에 포함됩니다)

//alert($)
function reflash(){
	var change = document.getElementById(&#39;captcha_img&#39;);
	check.src="admin/captcha.php?r=<?php echo rand(); ?>";
}
$(document).ready(function(){//页面加载完成再加载脚本

   /*点击登录按钮后做的事件处理*/
	$(&#39;input[name="b_login"]&#39;).click(function(event){
		var $name = $(&#39;input[name="username"]&#39;);
		var $password = $(&#39;input[name="password"]&#39;); 
		var $captcha =  $(&#39;input[name="captcha"]&#39;); 
		var $text = $(".text");
		var _name = $.trim($name.val());//去掉字符串多余空格
		var _password = $.trim($password.val());
		var _captcha_img =  $.trim($captcha.val());
       
		if(_name==&#39;&#39;){
			$text.text(&#39;请输入用户名&#39;);
			$name.focus();
			return;
		}
		if(_password==&#39;&#39;){
			$text.text(&#39;请输入密码&#39;);
			$password.focus();
			return;
		}
		if(captcha==""){
	       $text.text(&#39;请输入验证码&#39;);
		   return;
		}


});

});

3.4 admin/captcha.php (인터넷에서 이 사진 인증 코드를 찾았습니다)

<?php

/*实现简单的验证码功能*/

//开启session
session_start();
//创建一个大小为 100*30 的验证码
$image = imagecreatetruecolor(100, 30);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);

$captch_code = &#39;&#39;;
for ($i = 0; $i < 4; $i++) {
    $fontsize = 6;
    $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));
    $data = &#39;abcdefghijkmnpqrstuvwxy3456789&#39;;
    $fontcontent = substr($data, rand(0, strlen($data) - 1), 1);
    $captch_code .= $fontcontent;
    $x = ($i * 100 / 4) + rand(5, 10);
    $y = rand(5, 10);
    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//就生成的验证码保存到session
$_SESSION[&#39;authcode&#39;] = $captch_code;

//在图片上增加点干扰元素
for ($i = 0; $i < 200; $i++) {
    $pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
    imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);
}

//在图片上增加线干扰元素
for ($i = 0; $i < 3; $i++) {
    $linecolor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220));
    imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor);
}
//设置头
header(&#39;content-type:image/png&#39;);
imagepng($image);
imagedestroy($image);

?>

3.5 admin/login_check.php (메인 함수 코드입니다. 그전에 데이터베이스 파일이 있어야 합니다.

panda_work 데이터베이스에 접속하기 위한 사용자 이름은 root 이고 비밀번호는 123456 입니다)

<?php

	//开启Session
	session_start();
	header("Content-type:text/html;charset=utf-8");

	$link = mysqli_connect(&#39;localhost&#39;,&#39;root&#39;,&#39;123456&#39;,&#39;panda_work&#39;);

	if (!$link) {
	 die("连接失败:".mysqli_connect_error());
	}

	//接受提交过来的用户名及密码
	$username = @$_POST["username"];//用户名
	$password = @$_POST["password"];//密码
	$captcha = @$_POST["captcha"]; //验证码

	/*if($username == "")
	{
	 //echo "请填写用户名<br>";
	 echo"<script type=&#39;text/javascript&#39;>alert(&#39;请填写用户名&#39;);location=&#39;login.html&#39;; </script>";
	}

	if($password == "")
	{
	 //echo "请填写密码<br><a href=&#39;login.html&#39;>返回</a>"; 
	 echo"<script type=&#39;text/javascript&#39;>alert(&#39;请填写密码&#39;);location=&#39;login.html&#39;;</script>";
	}*/

	if($captcha != @$_SESSION[&#39;authcode&#39;]) //判断填写的验证码是否与验证码PHP文件生成的信息匹配
	{
	 echo "<script type=&#39;text/javascript&#39;>alert(&#39;验证码错误!&#39;);location=&#39;../index.php&#39;;</script>";
     return;
	}

	$sql = "select * from panda_admin";
	$result = mysqli_query($link, $sql);
	$rows = mysqli_fetch_array($result);

	if($rows) {
	 //拿着提交过来的用户名和密码去数据库查找,看是否存在此用户名以及其密码
		if ($username == $rows["name"] && $password == $rows["password"]) {

		$_SESSION[&#39;username&#39;] = $username;
		 //echo "验证成功!<br>";
		 echo "<script type=&#39;text/javascript&#39;>alert(&#39;登陆成功&#39;);location=&#39;../web/index.html&#39;;</script>";
		} else {
		 //echo "用户名或者密码错误<br>";
		 echo "<script type=&#39;text/javascript&#39;>alert(&#39;用户名或者密码错误&#39;);location=&#39;../index.php&#39;;</script>";
		 //echo "<a href=&#39;login.html&#39;>返回</a>";
		}
	}
?>

3.6 데이터베이스(필요한 것을 따르세요)

3.7 렌더링

4. 등록 페이지

4.1 admin/register.html(부트스트랩 프레임워크 및 jquery는 여기서 사용됨)

<!DOCTYPE html>
<html lang="en">
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="./../bootstrap/css/bootstrap.min.css">
    <!-- <link rel="stylesheet" type="text/css" href="../public/css/base.css">  -->
    <link rel="stylesheet" type="text/css" href="../css/b_register.css">

    <title>后台注册页面</title>
</head>
<body>

<span class="visible-lg"><!-- bootstrap自适应工具  大屏幕>=1200px可见 必须全屏才可以使用 或者改百分比使用-->

<p class="register">

<form action="register_check.php" method="post" enctype="multipart/form-data">
  <p class="form-group">
    <label for="username">用户名</label>
    <input type="text" class="form-control" id="username" placeholder="Username" name="username">
  </p>

  <p class="form-group">
    <label for="nickname">昵称</label>
    <input type="text" class="form-control" id="nickname" placeholder="Nickname" name="nickname">
  </p>


  <p class="form-group">
    <label for="password">密码</label>
    <input type="password" class="form-control" id="password" placeholder="Password" name="password">
  </p>

 <p class="form-group">
    <label for="confirmPassword">确认密码</label>
    <input type="password" class="form-control" id="confirmPassword" placeholder="ConfirmPassword" name="confirmPassword">
  </p>
    
  <p class="form-group">
   
     <a href="#" onclick="javascript:reflash()">
      <img id="captcha_img" name="captcha_img"  alt="看不清楚,换一张"  border="1" src="captcha.php?r=<?php echo rand(); ?>" width=100 height=30>  
     </a>
      <p><p>
      <input type="text" class="form-control" id="captcha" placeholder="请输入上图验证码,按F5可刷新" name="captcha">
  </p>


  <p class="form-group">
    <label for="photoFile">头像</label>
    <input type="hidden" name="MAX_FILE_SIZE" value="10240000" id=""/>
    <input type="file" id="photoFile" name="photoFile">
  
  </p>

  <button type="submit" name="b_register" class="col-lg-1 col-lg-offset-3">提交</button>
  <p>
    <a href="../index.php">
     <button type="button" name="b_login" class="col-lg-1 col-lg-offset-3">返回</button>
    </a>
   <span class="text2"></span>
</form>

</p>

</span>
<p class="bottom">
    版权所有 2017-2018 我是熊( ̄(工) ̄)工作室
</p>

</body>
<script src="./../public/js/jquery-3.1.1.min.js"></script>
<script src="./../bootstrap/js/bootstrap.min.js"></script>
<script src="./../public/js/delaunay.js"></script>
<script src="./../public/js/TweenMax.js"></script>
<script src="../js/effect.js"></script>

<script src="../js/b_register.js"></script>
</html>

4.2 css/b_register.css (사진은 개인 취향에 따라 다를 수 있음)

body{
	/*background-image: url(../picture/14.png);*/
	background-size: auto;
	font-size: 17px;
	font-family: "幼圆";
    background-image: url(../picture/19.jpg);
    background-repeat:no-repeat;
  /*  text-align: center;*/
    /*color: #00F;*/
}
.register{

	width:800px;
	height:600px;
	margin:200px auto;
	border:1px;
	background-color: rgba(0, 0, 0, 0.3);
	padding: 1px;
	position:relative;
	background-image: url(../picture/18.gif); 
    opacity: 0.8;
}

.bottom{
	text-align: center;
	color: #fff;
	margin-bottom: 100px;
}

4.3 js/b_register.js (이미지 업로드는 여기에 포함됨)

//alert($)
function reflash(){
	var change = document.getElementById(&#39;captcha_img&#39;);
	check.src="admin/captcha.php?r=<?php echo rand(); ?>";
}
$(document).ready(function(){//页面加载完成再加载脚本

   /*点击登录按钮后做的事件处理*/
	$(&#39;input[name="b_register"]&#39;).click(function(event){
		var $name = $(&#39;input[name="username"]&#39;);
		var $password = $(&#39;input[name="password"]&#39;); 
		var $confirmPassword = $(&#39;input[name="confirmPassword"]&#39;);
		var $photoFile = $(&#39;input[name="photoFile"]&#39;);
		var $nickname = $(&#39;input[name="nickname"]&#39;);
		
		var $text2 = $(".text2");
        

		var _name = $.trim($name.val());//去掉字符串多余空格
		var _password = $.trim($password.val());
		var _confirmPassword = $.trim($confirmPassword.val());
		var _nickname = $.trim($.trim($nickname.val()));

		if(_name == &#39;&#39;){
			$text2.text(&#39;请输入用户名&#39;);
			$name.focus();
			return;
		}

		
		if(_nickname == ""){
            $text2.text(&#39;请输入昵称&#39;);
			$nickname.focus();
			return;
		}

		if(_password == &#39;&#39;){
			$text2.text(&#39;请输入密码&#39;);
			$password.focus();
			return;
		}

		if(_confirmPassword == ""){
           $text2.text("请输入验证码");
           $confirmPassword.focus();
           return;
		}

		if(_password !=_confirmPassword){
          $text2.text("两次输入的密码不一致");
          $password.focus();
          return;
		}
		if (_photoFile == "") {
			$text2.text("请选择一个图片文件");
			$photoFile.focus();
			return;
		}
		


});

});
In4.4 admin /file_check.php (업로드된 사진 파일을 처리했는데 이것도 인터넷에서 찾은 내용이고 코드의 작은 부분을 변경했는데 Admin 폴더 아래에 만들어야 합니다.

4.5 admin/register_check.php (it 로그인 모듈과 데이터 테이블 공유)

<?php 
//1.处理文件信息
    $fileArr = @$_FILES["photoFile"];//input标签中的name
 
    //将文件信息保存在变量中
    $name = @$fileArr[&#39;name&#39;];//文件名
    $type = @$fileArr["type"];//文件类型
    $tmp_name = @$fileArr["tmp_name"];//文件临时存储位置的文件名
    $error = @$fileArr["error"];//文件的错误信息
    $size = @$fileArr["size"];//文件的大小
    
//2.新建存储文件的目录
    $filePath = "uploads"; 
    function createDir($filePath){
    	if(!file_exists($filePath)){ 
			$res = mkdir($filePath); 
			if($res){
				 echo "创建成功"; 
			}
		} 
	} 
	createDir($filePath);
	
	//因为要上传的文件为图片,所以此时设置允许的后缀名如下,如果其他文件则修改为txt等后缀 
	$allowExt=["image/png","image/jpeg","image/gif"];
	
//3.判断文件是否上传成功
    if($error===UPLOAD_ERR_OK){//UPLOAD_ERR_OK==0,上传成功
         if(!in_array($type,$allowExt)){//如果类型不在数组中
             exit("非法类型文件");

         }
         //判断后缀正确但不是图片的文件
         if(!getimagesize($tmp_name)){
             exit("不是真正的一张图片");
         }  
         
         $ext = pathinfo($name)["extension"];//获取文件后缀 
         $uniname = time().".".$ext;//生成一个唯一的文件名 
         $destination = $filePath."/".$uniname;
 
//4.move_uploaded_file将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false
         $res = move_uploaded_file($tmp_name,$destination);
         
         if($res){//上传成功 
             //把图片服务器连接传出去:拼接出一个图片的src 
             $server = @$_SERVER["HTTP_ORIGIN"]; 
             $rootDir = pathinfo($_SERVER["REQUEST_URI"])["dirname"];  
             $imgPath = $server.$rootDir."/".$destination; //图片的src
            //echo "<img src=&#39;{$imgPath}&#39;>";//输出图片
            $_SESSION[&#39;imgPath&#39;] = $imgPath;
         }
         else{

             echo "<script type=&#39;text/javascript&#39;>alert(&#39;上传失败!&#39;);location=&#39;register.html&#39;;</script>";
         }
    }
    else{//上传失败,给出错误提示
         switch ($error) {
             case UPLOAD_ERR_INI_SIZE://1
                 die("上传的文件超过了PHP配置中upload_max_file大小的最大值");//die();结束程序
                 break;
             case UPLOAD_ERR_FORM_SIZE://2
                 die("上传的文件超过了HTML表单中隐藏域MAX_FILE_SIZE中value选项指定的值");
                 break;
             case UPLOAD_ERR_NO_TMP_DIR://6
                 die("没有找不到临时文件夹");
                 break;
             case UPLOAD_ERR_CANT_WRITE://7
                 die("文件写入失败");
                 break;
             case UPLOAD_ERR_EXTENSION://8 
                 die("php文件上传扩展没有打开");
                 break;
             case UPLOAD_ERR_PARTIAL://3 
                 die("文件只有部分被上传");
                 break;
             default:
                 break;
         }
    }
?>

4.6 렌더링(인터넷의 배경 이미지 소스)

마침내

: 직접 확인했습니다. 등록과 로그인의 두 가지 기본 기능은 다음과 같습니다. 완전히 실현되었으며 데이터베이스와의 상호 작용은 문제가 되지 않습니다.

관련 권장 사항:

PHP가 표시 코드를 위해 데이터베이스에 그림을 업로드하는 방법

php 대기열 처리: PHP 메시지 대기열 구현 원리(그림 및 텍스트)

위 내용은 PHP를 사용하여 간단한 백그라운드 등록 및 로그인 구현(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.