לא מזמן למדתי מחלקות והיום התחלתי להשתמש בהם.
בניתי מחלקת טמפלייטים והרשמה ואני רוצה לדעת האם אני עובד נכון או שלא.
הנה הקודים של המערכת:
reg.php:
PHP קוד:
<?php
include 'classes.php';
$tpl=new tpl('html.tpl');
$tpl->timer_start();
$reg=new register();
if(isset($_POST['submit'])){
if($reg->check($_POST['username'],$_POST['password'],$_POST['repassword'],$_POST['email'])){
if($reg->insert()){
$content .= 'נרשמת בהצלחה לאתר.';
}
}
else{
$content .= $reg->get_error();
$content .= $reg->form();
}
}
else{
$content .= $reg->form();
}
$tpl->set('title','הרשמה');
$tpl->set('body',$content);
$tpl->timer_done();
echo $tpl->end();
?>
classes.php:
PHP קוד:
<?php
class tpl{
var $tpl_file = 'html.tpl';
var $tags = array();
var $start= '';
function tpl($tp_file=true){
if($tpl_file){$this->tpl_file=$tpl_file;}
}
function timer_start(){
$this->start = microtime(true);
}
function timer_done(){
$time_end = microtime(true);
$time = $time_end - $this->start;
$this->tags['porgress']='זמן טעינת העמוד '.substr($time,0,10);
}
function set($tag,$content){
$this->tags[$tag]=$content;
}
function end(){
$tpl=file_get_contents($this->tpl_file);
foreach($this->tags as $tag => $content){
$tpl=str_replace('{'.$tag.'}',$content,$tpl);
}
return $tpl;
}
}
class register{
var $id='';
var $username='';
var $password='';
var $repassword='';
var $email='';
function form(){
if(isset($_POST['submit'])){
$username = htmlspecialchars($_POST['username']);
$email = htmlspecialchars($_POST['email']);
}
else{
$username = '';
$email = '';
}
$code ='<form method="post">
<table>
<tr><td>שם משתמש:</td><td><input type="text" name="username" value="'.$username.'" /></td></tr>
<tr><td>סיסמא:</td><td><input type="password" name="password" /></td></tr>
<tr><td>אימות סיסמא:</td><td><input type="password" name="repassword" /></td></tr>
<tr><td>אימייל:</td><td><input type="text" name="email" value="'.$email.'" /></td></tr>
<tr><td><input type="submit" name="submit" value="הרשם" /></td><td><input type="reset" value="אפס" /></td></tr>
</table>
</form>';
return $code;
}
function check($username,$password,$repassword,$email){
$this->username=htmlspecialchars($username);
$this->password=htmlspecialchars($password);
$this->repassword=htmlspecialchars($repassword);
$this->email=htmlspecialchars($email);
if($this->username == '')return false;
elseif($this->password == '')return false;
elseif($this->repassword == '')return false;
elseif($this->email == '')return false;
elseif($this->password != $this->repassword)return false;
elseif(!preg_match('/[a-zA-Z0-9]+@[a-zA-Z0-9+.]+[a-zA-Z0-9]/',$this->email))return false;
elseif(strlen($this->username) < 3 || strlen($this->password) < 3)return false;
elseif(strlen($this->username) > 30 || strlen($this->password) > 30)return false;
else return true;
}
function get_error(){
if($this->username == '')return 'לא מילאת את כל שדות ההרשמה.';
elseif($this->password == '')return 'לא מילאת את כל שדות ההרשמה';
elseif($this->repassword == '')return 'לא מילאת את כל שדות ההרשמה';
elseif($this->email == '')return 'לא מילאת את כל שדות ההרשמה';
elseif($this->password != $this->repassword)return 'הסיסמאות שהזנת אינם תואמות.';
elseif(!preg_match('/[a-zA-Z0-9]+@[a-zA-Z0-9+.]+[a-zA-Z0-9]/',$this->email))return 'האימייל שהזנת אינו תקין.';
elseif(strlen($this->username) < 3 || strlen($this->password) < 3)return 'התוכן שהכנסת בשדות קצר מדי.';
elseif(strlen($this->username) > 30 || strlen($this->password) > 30)return 'התוכן שהכנסת בשדות ארוך מדי.';
}
function insert(){
mysql_query("insert into `members` (`username`,`password`,`email`)
values ('".mysql_real_escape_string($this->username)."','".md5($this->password)."','".mysql_real_escape_string($this->email)."')")
or die('Error');
return true;
}
}
?>
html.tpl:
PHP קוד:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="he" xmlns="http://www.w3.org/1999/xhtml" xml:lang="he">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1255" />
<link rel="stylesheet" href="css.css" type="text/css" media="screen"/>
<title>{title}</title>
<style>
body{direction:rtl;font-family:Arial;font-size:10pt;}
</style>
</head>
<body>
{body}<br />
{porgress}
</body>
</html>
יש לציין שזו הפעם הראשונה שעבדתי עם מחלקות ולכן אני רוצה לשנות דברים לא נכונים כבר מעכשיו לפני שאני יתרגל אליהם.
בנוסף בהרשמה חסרים עוד כמה דברים לדוגמא בדיקה אם המשתמש קיים וכו'... אז נא לא להתייחס
אשמח לעזרה מצדכם