首页 > 其他分享 >第五章 使用OOP注册会员

第五章 使用OOP注册会员

时间:2023-06-26 22:37:09浏览次数:35  
标签:xml username password index function 第五章 会员 OOP php


index.php

<?php ob_start();?>
<!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 rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php
function __autoload($_className) {
	require $_className . '.class.php';
}
// 实例化主类
if (isset ( $_GET ['index'] )) {
	$_main = new Main ( $_GET ['index'] );
} else {
	$_main = new Main ();
}
// 运行
$_main->_run ();
?>
</body>
</html>

 

Login.class.php

<?php
// 登录类
class Login extends User {
	// 写一个构造方法来接收表单的值
	public function __construct($_userName, $_passWord) {
		$this->_username = $_userName;
		$this->_password = $_passWord;
	}
	// 从xml里读出信息
	public function _query() {
		// 载入xml文件
		$_sxe = simplexml_load_file ( 'user.xml' );
		if ($this->_username == $_sxe->username && $this->_password == $_sxe->password) {
			// 生成一个cookies
			setcookie ( 'user', $this->_username );
			Tool::_alertLocation ( $this->_username . ',欢迎您回来!', '?index=member' );
		} else {
			Tool::_alertBack ( '登录失败!' );
		}
	}
	public function _check() {
		if (empty ( $this->_username ) || empty ( $this->_password )) {
			return false;
		}
		return true;
	}
}
?>

 

login.inc.php

<h3>请登录您的账号</h3>
<div class="login">
	<form method="post" action="">
		<p>用 户 名:<input type="text" name="username" /></p>
		<p>密  码:<input type="password" name="password" /></p>
		<p><input type="submit" name="send" value="登录" /></p>
		<p>[<a href="?">返回上一层</a>]</p>
	</form>
</div>

 

Main.class.php

<?php
// 主类,控制界面载入,处理数据
class Main {
	private $_index;
	private $_send;
	// 构造方法,用来初始化数据
	public function __construct($_index = '') {
		$this->_index = $_index;
		if (isset ( $_POST ['send'] )) {
			$this->_send = $_POST ['send'];
		}
	}
	// 总管
	public function _run() {
		// 处理数据
		$this->_send ();
		// 载入界面
		include $this->_ui ();
	}
	// 创建一个载入界面的方法
	// 这个方法,我想得到login.inc.php这个字符串
	private function _ui() {
		if (empty ( $this->_index ) || ! file_exists ( $this->_index . '.inc.php' )) {
			$this->_index = 'start';
		}
		return $this->_index . '.inc.php';
	}
	// 创建一个方法来接收登录和注册发送的操作
	private function _send() {
		switch ($this->_send) {
			case '注册' :
				$this->_exec ( new Reg ( $_POST ['username'], $_POST ['password'], $_POST ['notpassword'], $_POST ['email'] ) );
				break;
			case '登录' :
				$this->_exec ( new Login ( $_POST ['username'], $_POST ['password'] ) );
				break;
		}
	}
	// 创建一个执行的方法,里面传一个参数,是Reg或者Login类的对象引用
	private function _exec($_class) {
		if ($_class->_check ()) {
			$_class->_query ();
		} else {
			Tool::_alertBack ( '字段不能为空!' );
		}
	}
}
?>

 

member.inc.php

<h3>欢迎您回来</h3>
<div class="start">
	<p>欢迎您的归来,[<?php echo $_COOKIE['user']?>]</p>
</div>

 

Reg.class.php

<?php
// 注册类
class Reg extends User {
	// 写一个构造方法来接收表单的值
	public function __construct($_userName, $_passWord, $_notPassWord, $_eMail) {
		$this->_username = $_userName;
		$this->_password = $_passWord;
		$this->_notpassword = $_notPassWord;
		$this->_email = $_eMail;
	}
	// 将信息注册到xml里
	public function _query() {
		// xml字符串
		$_xml = <<<_xml
<?xml version="1.0" encoding="utf-8"?>
<user>
	<username>$this->_username</username>
	<password>$this->_password</password>
	<email>$this->_email</email>
</user>
_xml;
		// 创建simplexml类
		$_sxe = new SimpleXMLElement ( $_xml );
		// 生成xml
		$_sxe->asXML ( 'user.xml' );
		// 跳转到login.inc.php页面
		Tool::_alertLocation ( '恭喜你,注册成功!', '?index=login' );
	}
	// 给注册做验证
	public function _check() {
		if (empty ( $this->_username ) || empty ( $this->_password ) || empty ( $this->_notpassword ) || empty ( $this->_email )) {
			return false;
		}
		return true;
	}
}
?>

 

reg.inc.php

<h3>请注册您的个人信息</h3>
<div class="reg">
	<form method="post" action="">
		<p>用 户 名:<input type="text" name="username" /></p>
		<p>密  码:<input type="password" name="password" /></p>
		<p>密码确认:<input type="password" name="notpassword" /></p>
		<p>电子邮件:<input type="text" name="email" /></p>
		<p><input type="submit" name="send" value="注册" /></p>
		<p>[<a href="?">返回上一层</a>]</p>
	</form>
</div>

 

start.inc.php

<h3>欢迎光临onestopweb博客</h3>
<div class="start">
	<a href="index.php?index=login">登录</a> | 
	<a href="index.php?index=reg">注册</a>
</div>

 

Tool.class.php

<?php
// 辅助工具类,里面存放的都是静态方法,直接调用,无需实例化
final class Tool {
	// 弹出一个信息,然后跳转到指定的页面
	static public function _alertLocation($_info, $_url) {
		echo "<script type=\"text/javascript\">alert('$_info');location.href='$_url';</script>";
		exit ();
	}
	// 弹窗返回之前
	static public function _alertBack($_info) {
		echo "<script type=\"text/javascript\">alert('$_info');history.back();</script>";
		exit ();
	}
}
?>

 

User.class.php

<?php
// 这个用户类,规范子类的字段和方法
abstract class User {
	// 成员字段
	protected $_username;
	protected $_password;
	protected $_notpassword;
	protected $_email;
	// 一个方法,登录和注册
	// 如果你点了登录,就执行这个方法登录
	// 如果你点了注册,就执行这个方法注册
	abstract function _query();
	// 验证
	abstract function _check();
}
?>

 

user.xml

<?xml version="1.0" encoding="utf-8"?>
<user>
	<username>onestopweb</username>
	<password>123456</password>
	<email>[email protected]</email>
</user>

 

效果图:

第五章 使用OOP注册会员_php


 

 

 

 

 

 

 

标签:xml,username,password,index,function,第五章,会员,OOP,php
From: https://blog.51cto.com/u_16171388/6558637

相关文章

  • AI绘画:Roop插件的使用详解!
    roop插件有哪些特性,如果安装,已经在上一篇讲的非常详细了。不知道你们装得怎么样了? ​ 今天,来详细的说一说roop插件的使用。首先呢启动我们的Stable-Diffusion-WebUI,然后确保插件已经启用! ​ 选择好模型,查看插件情况,一切准备......
  • AI绘画:Roop插件的特性与安装!
    交叉”学科”来了! 我们之前讲过可以实现单图换脸的Roop,也讲过可以通过文字描述画画的项目Stable-Diffusion-WebUI。现在这两者要通过sd-webui-roop产生交汇。我们先来简单的看一下这个插件可以干什么!   功能特点根据项目作者的说法,这个插件基于r......
  • Roop:显卡GPU版软件已就位,速度提升28倍!
    如题,GPU版本已经搞定。我在本地的一台电脑行做了个简单的对比,同一个小视频,CPU要5分多钟,GPU只要12秒。而且,内存的需求量也大幅度降低了。  美队这个架子,给托尼用,也挺不错哦! ​ 这次的版本,准确来说是GPU+CPU都可以,另外是代码更新到了最......
  • Xmind永久会员版本
    Xmind软件不要多介绍了思维导图最好用的软件PJ后可以直接使用高级版本功能如图使用方式下载我们提供的版本和.dll即可如图点击Xmind安装默认C盘不可以自定义位置安装完成后进入patch文件夹如上图打开安装的位置/可以在桌面快捷键右击查看属性-打开安装位置我......
  • OOP面向对象第三阶段学习总结
    OOP面向对象第三阶段学习总结目录 · 前言 · 设计与分析 · 踩坑心得 · 改进建议 · 总结 一、前言不知不觉OOP学习就已经来到了尾声,也即将要步入大二,回头望来,总总令人感慨。第三阶段的学习主要包括,一些set和map的用法。更加抽象点的提升呢,就是对自身对于......
  • Hadoop中HDFS集群启停命令
    一键启停脚本#一键启动hdfs集群start-dfs.sh#一键关闭hdfs集群stop-dfs.sh单进程启停$HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停用法:hadoop-daemon.sh(start|status|stop)(namenode|secondarynamenode|datanode) $HADOOP_HOME/bin......
  • TVM 源码阅读PASS — VectorizeLoop
    本文地址:https://www.cnblogs.com/wanger-sjtu/p/17501119.htmlVectorizeLoop这个PASS就是对标记为ForKind::kVectorized的For循环做向量化处理,并对For循环中的语句涉及到的变量,替换为Ramp,以便于在Codegen的过程中生成相关的向量化运算的指令。VectorizeLoop这个PASS的入口函数......
  • TIER 2: Oopsie
    TIER2:OopsieWeb渗透此次靶机结合前面知识,非常简单:nmap扫描,发现22和80端口开放服务80的HTTP服务之后使用继续Web渗透:使用Wappalyzer查看网站使用的技术栈查看当前页面源码,重点观察其中的链接如果没有进一步线索,进行目录爆破,寻找隐藏目录寻找到目标站......
  • Apache Hadoop
    ApacheHadoop是一个开源的分布式计算框架,用于处理和存储大规模数据集。它提供了分布式存储和计算能力,可以在集群中运行,并具有高容错性和高扩展性。Hadoop的核心组件包括:HadoopDistributedFileSystem(HDFS):这是Hadoop的分布式文件系统,用于存储和管理大规模数据集。它将数据分散......
  • Android App运行核心,Handler,Looper,Message
    目标在手机屏幕上显示指定的区域两种方法在已存在的图片上,绘制矩形,查看图片在全屏透明悬浮窗上直接画矩形已有图片绘制矩形读取图片letimgFilepath=files.path("./chess.png");letimg=images.read(imgFilepath);设置绘制区域letrect={left:52,top:20,rig......