1.class.Dispatcher.php
<?php session_start(); require_once('class.Handler_Event.php'); header("Content-type:text/html; charset=utf-8"); class Dispatcher{ private $handle; function __construct($event_handle){ $this->handle=$event_handle; } function handle_the_event(){ $name="handler_$this->handle"; if(class_exists("$name")){ $handler_obj=new $name($this->handle); $response=$handler_obj->secure_handler(); return $response; }else{ echo "I can't handle this!"; } } } ?> <html> <head><title>Secure,Event Driven Record Viewer!</title></head> <body> <form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post"> <input type="submit" name="event" value="View"> <input type="submit" name="event" value="Edit"> </form> </body> </html> <?php function handle(){ $event=$_POST['event']; $do=new Dispatcher($event); $do->handle_the_event(); } $_SESSION['name']="Wangzy"; if(isset($_POST['event'])) handle(); ?>
2.class.Handler_Event.php
<?php //Event parent abstract class Event_Handler{ function dbconn(){ $link_id=mysql_connect("localhost","root","root"); mysql_select_db("mytest",$link_id); mysql_query("set names utf8",$link_id); return $link_id; } abstract function handled_event(); abstract function secure_handler(); } //View Event class Handler_View extends Event_Handler{ private $handle; function __construct($event_handle){ $this->handle=$event_handle; } function handled_event(){ echo "The event, $this->handle, is now handled.<br> It is ,I promise!<br><br> Your records are as follows:<br><br>"; $id=parent::dbconn(); $result=mysql_query("select * from table01",$id); while($row=mysql_fetch_array($result)){ echo "Numbers:".$row['number']."\tName:".$row['name']."<br>"; } } function secure_handler(){ if($_SESSION['name']=="Wangzy"){ $this->handled_event(); }else{ echo "Sorry {$_SESSION['name']} you are not authorized!"; } } } //Edit Event class Handler_Edit extends Event_Handler{ private $handle; function __construct($event_handle){ $this->handle=$event_handle; } function handled_event(){ echo "This is event $this->handle, which is now handled -no kidding!<br>"; } function secure_handler(){ $this->handled_event(); } }