`

第五章 使用OOP注册会员

 
阅读更多

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>onestopweb@qq.com</email>
</user>

 

效果图:

 

 

 

 

 

 

 

  • 大小: 15.2 KB
分享到:
评论

相关推荐

    JavaOOP_第5章上机练习.zip

    在"JavaOOP_第5章上机练习.zip"这个压缩包中,我们可以推测它包含了第五章关于Java OOP的实践练习内容。通常,OOP主要包含四个基本原则:封装、继承、多态和抽象。下面将详细讲解这些概念。 **封装** 是OOP的基础,...

    JavaOOP_第1章上机练习.zip

    在"JavaOOP_第1章上机练习.zip"这个压缩包中,我们可以预见到它包含了关于Java OOP的初步学习材料,特别是针对初学者的上机实践练习。 在Java OOP中,有四个核心概念:封装、继承、多态和抽象。这些概念是理解Java ...

    JAVA OOP 第一章作业

    在"JAVA OOP 第一章作业"中,我们可以预期学生将接触到一系列基础但重要的面向对象编程概念。 1. 类与对象 类是OOP的基础,它是一个模板或者蓝图,定义了一组属性(数据成员)和行为(方法)。对象是类的实例,它们...

    JavaOOP_第2章上机练习.zip

    在本压缩包“JavaOOP_第2章上机练习.zip”中,主要涉及的是Java面向对象编程(Object-Oriented Programming,简称OOP)的相关知识。Java OOP是Java编程语言的核心特性,它允许我们将复杂的程序设计分解为一系列相互...

    JavaOOP_第6章上机练习.zip

    在这个名为"JavaOOP_第6章上机练习.zip"的压缩包中,我们可以预见到包含的是关于Java OOP的第六章练习题目,可能涵盖了类、对象、继承、接口、抽象类、访问修饰符、构造器、方法重写、多态性等相关主题。 1. 类与...

    JAVAOOP课本一到五章全套练习答案

    第五章可能探讨了异常处理(Exception Handling),这是Java程序中必不可少的一部分。Java通过try-catch-finally语句块来捕获和处理运行时可能出现的错误,确保程序的健壮性。此外,还有自定义异常和异常链的概念。 ...

    JAVA OOP 第五章作业

    在本节中,我们将深入探讨Java面向对象编程(OOP)的关键概念,这些概念在"JAVA OOP 第五章作业"中可能涉及。面向对象编程是Java编程的核心,它允许我们设计复杂的软件系统,通过模拟现实世界中的实体来解决问题。 ...

    JAVAOOP六到十章课后上机答案

    第九章可能讲解了多态性,这是OOP的第三个主要特性。多态性使得不同对象可以对同一消息作出不同的响应,提供了高度的灵活性。在Java中,多态性通过方法重写(Override)和接口实现来体现。你可能在解答中看到如何...

    s2 JavaOOP上机作业全部代码

    Java面向对象编程(Java OOP)是Java编程的核心概念,它允许我们以真实世界中的实体——如对象——的方式来思考和构建软件。在这个“s2 JavaOOP上机作业全部代码”压缩包中,包含了学生在学习Java OOP时可能遇到的...

    JavaOOp05 第五章 异常.pdf|05 第五章 异常.pdf

    在Java OOP(面向对象编程)中,异常处理是设计健壮程序的重要组成部分。本章主要讲解Java中的异常处理机制,包括异常的分类、抛出、捕获以及自定义异常。 异常在Java中被表示为`Exception`类及其子类的实例。这些...

    C#OOP上机练习-Chapter8田超凡.zip

    在本资源"C#OOP上机练习-Chapter8田超凡.zip"中,我们主要探讨的是C#面向对象编程(Object-Oriented Programming, OOP)的实践应用。这一章节可能涵盖了类、对象、封装、继承、多态等核心概念。下面我们将详细解析...

    ACCP5.0S2教程\使用Java实现面向对象编程(Java OOP)\使用Java实现面向对象编程(Java OOP)上机贯穿案例源码

    "ACCP5.0 S2"可能是一个计算机编程课程或培训计划的一部分,其中S2可能代表课程的第二阶段,而"Java OOP上机贯穿"则意味着学员将通过实际编程项目来实践和巩固所学知识。 源代码中包含的上机贯穿案例可能是多个小...

    JAvaOOp06 第六章 集合框架.pdf|06 第六章 集合框架.pdf

    5. `Collection`和`Iterable`:`Collection`是所有集合的父接口,包含了`List`、`Set`等子接口。`Iterable`接口则是所有可迭代对象的父接口,提供`iterator()`方法,用于遍历集合元素。 6. 泛型:在Java集合框架中...

    PHP OOP入门必读

    最后,"PHP5面向对象(第五章 PHP5中的异常处理).pdf"将讲解错误处理和异常处理机制。在PHP5中,异常处理是一种更优雅的错误处理方式,它允许程序在遇到问题时抛出异常,然后由上层代码捕获并处理,防止程序崩溃,...

    JavaOOP_第8章上机练习.zip

    本章上机练习将深入探讨这些概念,旨在提升编程能力,增强代码的可读性和可维护性。 1. **类与对象**: - 类是Java中的蓝图,定义了具有相同属性和行为的对象的模板。在Chapter8中,我们可能会创建各种类,比如...

    北大青鸟s2JavaOOP第四章作业

    在北大青鸟S2 Java面向对象编程(OOP)的第四章作业中,我们主要探讨的是Java编程中关于面向对象的一些核心概念和技术。这个作业旨在通过模拟长江和黄河决堤的场景来锻炼学员们对类、对象、继承、封装、多态等OOP...

    Csharp入门经典(第四版).part5.rar

    第5章 变量的更多内容 第6章 函数 第7章 调试和错误处理 第8章 面向对象编程简介 第9章 定义类 第10章 定义类成员 第11章 集合、比较和转换 第12章 泛型 第13章 其他OOP技术 第14章 C#3.0语言的改进 第2部分 Windows...

    JavaOOP_第4章上机练习.zip

    本章上机练习将深入探讨这些关键概念。 1. **封装**:封装是OOP的基础,它隐藏了对象的内部细节,只对外提供公共接口进行交互。在Java中,我们通过访问修饰符(如public、private、protected)来控制成员变量和方法...

Global site tag (gtag.js) - Google Analytics