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>
效果图:
相关推荐
在"JavaOOP_第5章上机练习.zip"这个压缩包中,我们可以推测它包含了第五章关于Java OOP的实践练习内容。通常,OOP主要包含四个基本原则:封装、继承、多态和抽象。下面将详细讲解这些概念。 **封装** 是OOP的基础,...
在"JavaOOP_第1章上机练习.zip"这个压缩包中,我们可以预见到它包含了关于Java OOP的初步学习材料,特别是针对初学者的上机实践练习。 在Java OOP中,有四个核心概念:封装、继承、多态和抽象。这些概念是理解Java ...
在"JAVA OOP 第一章作业"中,我们可以预期学生将接触到一系列基础但重要的面向对象编程概念。 1. 类与对象 类是OOP的基础,它是一个模板或者蓝图,定义了一组属性(数据成员)和行为(方法)。对象是类的实例,它们...
在本压缩包“JavaOOP_第2章上机练习.zip”中,主要涉及的是Java面向对象编程(Object-Oriented Programming,简称OOP)的相关知识。Java OOP是Java编程语言的核心特性,它允许我们将复杂的程序设计分解为一系列相互...
在这个名为"JavaOOP_第6章上机练习.zip"的压缩包中,我们可以预见到包含的是关于Java OOP的第六章练习题目,可能涵盖了类、对象、继承、接口、抽象类、访问修饰符、构造器、方法重写、多态性等相关主题。 1. 类与...
第五章可能探讨了异常处理(Exception Handling),这是Java程序中必不可少的一部分。Java通过try-catch-finally语句块来捕获和处理运行时可能出现的错误,确保程序的健壮性。此外,还有自定义异常和异常链的概念。 ...
"JavaOOP_第9章上机练习.zip"文件包含了田超凡原创的第九章上机练习,旨在强化学习者对Java OOP的理解和实战能力。 首先,我们来回顾一下Java OOP的基础知识点: 1. **类与对象**:在Java中,一切皆为对象。类是...
在本节中,我们将深入探讨Java面向对象编程(OOP)的关键概念,这些概念在"JAVA OOP 第五章作业"中可能涉及。面向对象编程是Java编程的核心,它允许我们设计复杂的软件系统,通过模拟现实世界中的实体来解决问题。 ...
第九章可能讲解了多态性,这是OOP的第三个主要特性。多态性使得不同对象可以对同一消息作出不同的响应,提供了高度的灵活性。在Java中,多态性通过方法重写(Override)和接口实现来体现。你可能在解答中看到如何...
Java面向对象编程(Java OOP)是Java编程的核心概念,它允许我们以真实世界中的实体——如对象——的方式来思考和构建软件。在这个“s2 JavaOOP上机作业全部代码”压缩包中,包含了学生在学习Java OOP时可能遇到的...
在Java OOP(面向对象编程)中,异常处理是设计健壮程序的重要组成部分。本章主要讲解Java中的异常处理机制,包括异常的分类、抛出、捕获以及自定义异常。 异常在Java中被表示为`Exception`类及其子类的实例。这些...
在本资源"C#OOP上机练习-Chapter8田超凡.zip"中,我们主要探讨的是C#面向对象编程(Object-Oriented Programming, OOP)的实践应用。这一章节可能涵盖了类、对象、封装、继承、多态等核心概念。下面我们将详细解析...
"ACCP5.0 S2"可能是一个计算机编程课程或培训计划的一部分,其中S2可能代表课程的第二阶段,而"Java OOP上机贯穿"则意味着学员将通过实际编程项目来实践和巩固所学知识。 源代码中包含的上机贯穿案例可能是多个小...
5. `Collection`和`Iterable`:`Collection`是所有集合的父接口,包含了`List`、`Set`等子接口。`Iterable`接口则是所有可迭代对象的父接口,提供`iterator()`方法,用于遍历集合元素。 6. 泛型:在Java集合框架中...
最后,"PHP5面向对象(第五章 PHP5中的异常处理).pdf"将讲解错误处理和异常处理机制。在PHP5中,异常处理是一种更优雅的错误处理方式,它允许程序在遇到问题时抛出异常,然后由上层代码捕获并处理,防止程序崩溃,...
本章上机练习将深入探讨这些概念,旨在提升编程能力,增强代码的可读性和可维护性。 1. **类与对象**: - 类是Java中的蓝图,定义了具有相同属性和行为的对象的模板。在Chapter8中,我们可能会创建各种类,比如...
在北大青鸟S2 Java面向对象编程(OOP)的第四章作业中,我们主要探讨的是Java编程中关于面向对象的一些核心概念和技术。这个作业旨在通过模拟长江和黄河决堤的场景来锻炼学员们对类、对象、继承、封装、多态等OOP...
第5章 变量的更多内容 第6章 函数 第7章 调试和错误处理 第8章 面向对象编程简介 第9章 定义类 第10章 定义类成员 第11章 集合、比较和转换 第12章 泛型 第13章 其他OOP技术 第14章 C#3.0语言的改进 第2部分 Windows...
本章上机练习将深入探讨这些关键概念。 1. **封装**:封装是OOP的基础,它隐藏了对象的内部细节,只对外提供公共接口进行交互。在Java中,我们通过访问修饰符(如public、private、protected)来控制成员变量和方法...