PHP注册/登录/发邮件--【白嫖项目】

强撸项目系列总目录在000集

PHP要怎么学–【思维导图知识范围】

本系列校训

用免费公开视频,卷飞培训班哈人!打死不报班,赚钱靠狠干!
只要自己有电脑,前后项目都能搞!N年苦学无人问,一朝成名天下知!

本项目使用技术

PHP无类PHP类写法ThinkPHP框架其它框架
*

环境

PHP版本mysql版本运行工具编辑工具
5.4.45+Apache5.5(phpStudy自带)phpStudy2018VSCode

上效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注册,登录两个功能一起,而且都可是完全好用
手机号校验是有的。
验证码不能通过点击刷新,可以用刷新页面的方法,刷新。

phpStudy 设置

网站目录,不能有中文或空格,就乖乖的用C语言能识别的变量名
在这里插入图片描述

导数据库

打开mysql-front 或navicat
注意:数据库名:email 超级用户:root 密码:123456
运行本例附件即可。最后导入数据库成功的截图如下:

在这里插入图片描述

程序基本流程

系统运行起来之后,
登录页面为:
http://localhost/denglu.html
初始帐号为: 用户名:wangaihua 密码 123456
只有这一个用户有数据。(有邮件)
其它的用户需要先注册假定A,然后用其它的用户给这个A发邮件。
然后再用A登陆打开收件箱,即可看到
在这里插入图片描述

项目目录如图:

在这里插入图片描述
颜色方案
在这里插入图片描述

注册zhuce.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link type="text/css" rel="stylesheet" href="zhuce.css" />
<script type="text/javascript">
function validate(){
  var psd1=document.getElementById('psd1');	
  var psd2=document.getElementById('psd2');
  var psd1Val=psd1.value;
  var psd2Val=psd2.value;
  if(psd1Val!=psd2Val){
	alert("两次输入密码不一致,请重新输入");
	psd2.focus();
	return false;  
  }
}
//更换验证码的函数
function yzmupdate(){
	document.yzm.src="yzm.php?"+Math.random();
}
//document.getElementsByTagName('span')[0].onclick = yzmupdate();
//定义函数创建XMLHttpRequest对象实例
function createXML(){
	var xml=false;
	if(window.ActiveXObject){
		try{xml=new ActiveXObject("Msxml2.XMLHTTP");}
		catch(e){
			try{xml=new ActiveXObject("Microsoft.XMLHTTP");}
			catch(e){
				xml=false;
			}
		}
	}
	else if(window.XMLHttpRequest){
		xml=new XMLHttpRequest;
	}
	return xml;
}
function check(){
	var xml=createXML();
	var emailAddr=document.getElementById('emailaddr').value;
	var url="check.php";
	var postStr="emailaddr="+emailAddr;
	xml.open("POST",url,true);
  xml.setRequestHeader("Content-type", "Application/x-www-form-urlencoded;charset=utf8");
  xml.send(postStr);
  xml.onreadystatechange=function(){
   	if(xml.readyState==4 && xml.status==200){
      if(xml.responseText!=''){
      	alert(xml.responseText);
      }
  	}
	}
}
</script>
<script src="jquery-1.11.3.min.js"></script>
<script type="text/javascript">
	//下面使用jQuerypost方法
	/*function check(){
		var emailaddr=$("#emailaddr").val();
		var res=$.ajax({
			type:"post",
			url:"check.php",
			data:"emailaddr="+emailaddr,
			async:true,
			success:function(result){
				alert(result);
			}
		});
		//alert(res.responseText);//在方法内部使用success和外部使用alert效果一样
	}*/
	//下面使用get方法,check.php中必须改为$_GET
	/*function check(){
		var emailaddr=$("#emailaddr").val();
		var res=$.ajax({
			type:"get",
			url:"check.php?emailaddr="+emailaddr,
			async:true,
			success:function(result){
				alert(result);
			}
			//只能在方法内部使用success,不能在外部使用alert
		});
	}*/
</script>
</head>

<body>
<div class="divshang"></div>
<div class="divzhong">
  <form method="post" onsubmit="return validate()" action="zhuce.php">
    <table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
      <tr>
        <td class="td1">邮件地址:</td>
        <td class="td2">
          <input type="text" name="emailaddr" id="emailaddr" required="required" pattern="[a-zA-Z][a-zA-Z0-9_]{4,16}[a-zA-Z0-9]" onchange="check()" />@163.com
          <p>6~18个字符,包括字母、数字、下划线,字母开头、字母或数字结尾</p>
        </td>
      </tr>
      <tr>
        <td class="td1">密码:</td>
        <td class="td2">
          <input type="password" name="psd1" id="psd1" required="required" pattern="[a-zA-Z0-9!@#$%^&*_]{6,16}" />
          <p>6~16个字符,区分大小写</p>
        </td>
      </tr>
      <tr>
        <td class="td1">确认密码:</td>
        <td class="td2">
          <input type="password" name="psd2" id="psd2" />
          <p>请再次输入密码</p>
        </td>
      </tr>
      <tr>
        <td class="td1">手机号:</td>
        <td class="td2">
          <input type="text" name="phoneno" id="phoneno" pattern="1[3|5|7|8][0-9]{9}" />
          <p>密码遗忘或被盗时,可通过手机短信取回密码</p>
        </td>
      </tr>
      <tr>
        <td class="td1">验证码:</td>
        <td class="td2">
          <input type="text" name="useryzm" id="useryzm"/><img src="yzm.php" name="yzm" id="yzm" align="top" />
          <p>请输入图片中的字符 <span onclick="yzmupdate()">看不清楚?换一张</span></p>
        </td>
      </tr>
      <tr>
        <td class="td1">&nbsp;</td>
        <td class="td2">
          <input type="submit" value="立即注册" />
        </td>
      </tr>
    </table>
  </form>
  </div>
  <div class="divxia"></div>
</body>
</html>

注册的后台:zhuce.php

<?php
  session_start();
  $emailaddr=$_POST['emailaddr'];
  $psd=$_POST['psd1'];
  $psd1=md5($psd);
  $phoneno=$_POST['phoneno']; 
  $zhucedate=date("Y-m-d H:i:s");
  $useryzm=$_POST['useryzm'];
  $yzmchar=$_SESSION['string'];
  if(strtoupper($useryzm)==strtoupper($yzmchar)){
  	echo "尊敬的用户您好,您注册的信息如下:<br />";
  	echo "邮件地址是:$emailaddr<br />";
  	echo "密码是:$psd<br />";
  	echo "手机号码是:$phoneno<br />";
  	echo "你输入的验证码字符是:{$useryzm}<br />";
  	echo "系统生成的验证码字符是:{$yzmchar}<br />";
	  $conn=mysqli_connect('localhost','root','123456','email');
	  $sql="insert into usermsg values('$emailaddr','$psd1','$phoneno','$zhucedate')";
	  if(mysqli_query($conn,$sql)){
	  	echo "注册数据已经写入数据表中<br />";
	  }else{
	  	echo "插入未成功,请检查insert语句<br />";
	  }
	  mysqli_close($conn);
  }else{
  	include 'zhuce.html';
	  echo "<script>";
	  echo "document.getElementById('emailaddr').value='$emailaddr';";
	  echo "document.getElementById('psd1').value='$psd';";
	  echo "document.getElementById('psd2').value='$psd';";
	  echo "document.getElementById('phoneno').value='$phoneno';";
	  
	  echo "document.getElementById('useryzm').placeholder='验证码输入错误,请重新输入';";
	  echo "document.getElementById('useryzm').className='inp';";
	  echo "</script>";
  }
  
 ?>

登录前台denglu.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
	.divw {
	width: 370px;
	height: 200px;
	padding: 50px 0 0;
	margin: 0 auto;
	border: 1px solid #00f;
}

#errormsg {
	width: 200px;
	height: 40px;
	padding: 0;
	margin: 0 auto;
	display: none;
	/*visibility:hidden;*/
	font-size: 10pt;
	color: #f00;
}

#cont {
	width: 320px;
	height: 160px;
	padding: 0;
	margin: 0 auto;
	font-size: 10pt;
	font-family: calibri;
}

#cont p {
	margin: 20px 0;
}

#emailaddr,
#psd {
	width: 180px;
	height: 16px;
	padding: 2px 0;
	margin: 0;
	border: #aaf 1px solid;
	outline:none;
}

input {
	border-radius: 5px;
}
</style>

</head>

<body>
<form method="post" action="denglu.php">
  <div class="divw">
    <div id="errormsg">账号或密码错误,请重新输入</div>
    <div id="cont">
      <p>用户名:<input type="text" name="emailaddr" id="emailaddr" pattern="[a-zA-Z][a-zA-Z0-9_]{4,16}[a-zA-Z0-9]" />@163.com</p>
      <p>&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" name="psd" id="psd" />忘了密码?</p>
      <p align="center"><input type="submit" value="  登  录  " />&nbsp;&nbsp;
         <input type="button" value="  注  册  " onclick="window.open('zhuce.html');" /></p>
    </div>
  </div>
</form>
</body>
</html>


登录后台denglu.php

<?php
	
	session_start();
	$emailaddr=$_POST['emailaddr'];
	$_SESSION['emailaddr']=$emailaddr;
	if(isset($_COOKIE[$emailaddr])){
		echo "<script>";
		echo "alert('账号已经锁定,请耐心等待');";
		echo "</script>";
		exit();		
	}
	$psd=md5($_POST['psd']);
	$conn=mysqli_connect('localhost','root','123456','email');
	//对输入的账号进行转义防止SQL注入
	$emailaddr1 = mysqli_real_escape_string($conn, $emailaddr);
	$sql="select * from usermsg where emailaddr='{$emailaddr1}' and psd='{$psd}'";
	if($res=mysqli_query($conn,$sql)){
		$num=mysqli_num_rows($res);
		if($num==0){
			if(isset($_SESSION[$emailaddr])){
				$count=$_SESSION[$emailaddr];
				$count++;
			}else{
				$count=1;
			}
			$_SESSION[$emailaddr]=$count;//将变化后的计数值写入session
			if($count==3){
				setcookie($emailaddr,$emailaddr,time()+1800);//30分钟
				echo "<script>";
				echo "alert('3次输入错误,锁定账号,30分钟后再尝试');";
				echo "</script>";
				exit();
			}else{
				$chance=3-$count;
				echo "<script>";
				echo "alert('你还有{$chance}次机会');";
				echo "</script>";
			}
			include 'denglu.html';
			echo "<script>";
			echo "document.getElementById('errormsg').style.display='block';";
			echo "</script>";
		}else{
			include 'email.php';
		}
	}
?>

其它代码下资源包好了
整体代码在本文资源包里,这里不贴全部了。

配套资源

PHP注册/登录/发消息–【强撸项目】:
https://download.csdn.net/download/dearmite/88084785

作业:

功能没啥可以加的了:
把前台的页面美化美化就行了。比如说,给首页加个底图?
登陆,注册,都可以优化,化妆美颜一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

项目花园范德彪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值