صفحه اصلی | خروجی RSS | ارتباط با من

امروز :
چهارشنبه ۳۰ مرداد ۱۳۸۷



ُStrategy Pattern or Input Validator

تاریخ يكشنبه ۱۳ مرداد ۱۳۸۷


php-learningبی شک یکی از مشکلات برنامه نویسان Valid کردن اطلاعات ورودی هست . معمولا هم ما با استفاده از IF ... ELSE کار خودمونو راه می ندازیم. اما بهتره از Strategy Pattern استفاده بشه . بی شک به شما خیلی بیشتر کمک می کنه . برنامه هم خانایی بیشتری پیدا می کنه .
بهتره بریم سر اصل مطلب .

validator.php
  1. <?php
  2. /**
  3. *  کلاس اصلی
  4. */
  5. class Validator {
  6.     /**
  7.     * Private
  8.     * $errorMsg نگهداری خطا ها در صورت وجود
  9.     */
  10.     var $errorMsg;
  11.     //! A constructor.
  12.     /**
  13.     * ساخت یک شی validator جدید
  14.     */
  15.     function Validator () {
  16.         $this->errorMsg=array();
  17.         $this->validate();
  18.     }
  19.     /**
  20.     * @return void
  21.     */
  22.     function validate() {
  23.        
  24.     }
  25.     /**
  26.     * اضافه کردن خطا به آرایه
  27.     * @return void
  28.     */
  29.     function setError ($msg) {
  30.         $this->errorMsg[]=$msg;
  31.     }
  32.     /**
  33.     * بازگشت درست و غلط
  34.     * @return boolean
  35.     */
  36.     function isValid () {
  37.         if ( isset ($this->errorMsg) ) {
  38.             return false;
  39.         } else {
  40.             return true;
  41.         }
  42.     }
  43.     /**
  44.     *  بدست آوردن خطا ها
  45.     * @return string
  46.     */
  47.     function getError () {
  48.         return array_pop($this->errorMsg);
  49.     }
  50. }
  51. /**
  52. *valid کردن username
  53. */
  54. class ValidateUser extends Validator {
  55.     /**
  56.     * $user متغیر مورد نیاز
  57.     */
  58.     var $user;
  59.     /**
  60.     * اخت یک شی validatoruser جدید
  61.     * @param $user the string to validate
  62.     */
  63.     function ValidateUser ($user) {
  64.         $this->user=$user;
  65.         Validator::Validator();
  66.     }
  67.     /**
  68.     * Validates کردن username
  69.     * @return void
  70.     */
  71.     function validate() {
  72.         if (!preg_match('/^[a-zA-Z0-9_]+$/',$this->user )) {
  73.             $this->setError('Username contains invalid characters');
  74.         }
  75.         if (strlen($this->user) < 6 ) {
  76.             $this->setError('Username is too short');
  77.         }
  78.         if (strlen($this->user) > 20 ) {
  79.             $this->setError('Username is too long');
  80.         }
  81.     }
  82. }
  83. /**
  84. *  Validate کردن  password
  85. */
  86. class ValidatePassword extends Validator {
  87.     /**
  88.     * $pass متغیر مورد نیاز
  89.     */
  90.     var $pass;
  91.     /**
  92.     * $conf متغیر تکرار کلمه عبور
  93.     */
  94.     var $conf;
  95.     /**
  96.     * ساخت ValidatePassword شی جدید
  97.     * @param $pass the string to validate
  98.     * @param $conf to compare with $pass for confirmation
  99.     */
  100.     function ValidatePassword ($pass,$conf) {
  101.         $this->pass=$pass;
  102.         $this->conf=$conf;
  103.         Validator::Validator();
  104.     }
  105.     /**
  106.     * Validates کردن  password
  107.     * @return void
  108.     */
  109.     function validate() {
  110.         if ($this->pass!=$this->conf) {
  111.             $this->setError('Passwords do not match');
  112.         }
  113.         if (!preg_match('/^[a-zA-Z0-9_]+$/',$this->pass )) {
  114.             $this->setError('Password contains invalid characters');
  115.         }
  116.         if (strlen($this->pass) < 6 ) {
  117.             $this->setError('Password is too short');
  118.         }
  119.         if (strlen($this->pass) > 20 ) {
  120.             $this->setError('Password is too long');
  121.         }
  122.     }
  123. }
  124. /**
  125. *  Validates کردن email address
  126. */
  127. class ValidateEmail extends Validator {
  128.     /**
  129.     * $email متغیر مورد نیاز
  130.     */
  131.     var $email;
  132.     /**
  133.     * جدید ValidateEmail ساخت شی
  134.     * @param $email the string to validate
  135.     */
  136.     function ValidateEmail ($email){
  137.         $this->email=$email;
  138.         Validator::Validator();
  139.     }
  140.     /**
  141.     * Validates کردن email address
  142.     * @return void
  143.     */
  144.     function validate() {
  145.         $pattern=
  146.     "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
  147.         if(!preg_match($pattern,$this->email)){
  148.             $this->setError('Invalid email address');
  149.         }
  150.         if (strlen($this->email)>100){
  151.             $this->setError('Address is too long');
  152.         }
  153.     }
  154. }
  155. ?>

 این هم مثال

index.php
  1. <?php
  2. if ( $_POST['register'] ) {
  3.     require_once('lib/Validator.php');
  4.     $v['u']=new ValidateUser($_POST['user']);
  5.     $v['p']=new ValidatePassword($_POST['pass'],$_POST['conf']);
  6.     $v['e']=new ValidateEmail($_POST['email']);
  7.     foreach($v as $validator) {
  8.         if (!$validator->isValid()) {
  9.             while ($error=$validator->getError()) {
  10.                 $errorMsg.="<li>".$error."</li>\n";
  11.             }
  12.         }
  13.     }
  14.     if (isset($errorMsg)) {
  15.         print ("<p>There were errors:<ul>\n".$errorMsg."</ul>");
  16.     } else {
  17.         print ('<h2>Form Valid!</h2>');
  18.     }
  19. } else {
  20. ?>
  1. <h2>Create New Account</h2>
  2. <form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method="post">
  3. <p>Username: <input type="text" name="user"></p>
  4. <p>Password: <input type="password" name="pass"></p>
  5. <p>Confirm: <input type="password" name="conf"></p>
  6. <p>Email: <input type="text" name="email"></p>
  7. <p><input type="submit" name="register" value=" Register "></p>
  8. </form>

 
  1. <?php
  2. }
  3. ?>

 

 امید وارم مورد توجه شما دوستان عزیز قرار بگیره .

دانلود آموزش

 

نویسنده hidensoft > موضوع آموزش PHP > لینک ثابت > نظرات : 0

مبارزه مستقیم با header already sent by

تاریخ جمعه ۱۱ مرداد ۱۳۸۷


php-learningیکی از بزرگترین مشکلات برنامه نویسان مبتدی خطایHeader AlReady Sent By File است .

به نظر من بهترین راه برای فرار از این خطا استفاده از ob_start است . پیشنهاد می کنم حتما از این تابع در برنامه های خودتون استفاده کنید . بابت دیر به دیر به روز شدن وبلاگ هم عذر می خام . بی نهایت سرم شلوغه . اصلا وقت نمی کنم بیام بالا . موفق و پیروز باشید.

نویسنده hidensoft > موضوع آموزش PHP > لینک ثابت > نظرات : 0

عذر خواهی

تاریخ سه شنبه ۲۱ خرداد ۱۳۸۷



dayli-writingمتا سفانه قسمت تماس با من کار نمی کنه !

عذر خواهی بنده رو بپذیرید.



نویسنده hidensoft > موضوع مطالب روزانه > لینک ثابت > نظرات : 13

webbyawards

تاریخ چهارشنبه ۰۸ خرداد ۱۳۸۷


dayli-writingwebbyawwards.com هر سالبهترین سایت هارو انتخاب می کنه ، البته از نظر طراحی

یکی از نکات قابل توجه در این سایت اینه که بیشتر به ظرافت کار اهمیت داده میشه تا نمای ظاهری

به نظر من برای الگو گرفتن در طراحی سایت می تونید با مراجعه به این سایت نمونه کار های بسیار خوبی رو ببینید.


نویسنده hidensoft > موضوع مطالب روزانه > لینک ثابت > نظرات : 0

سوتی در روزنامه همشهری

تاریخ چهارشنبه ۲۵ ارديبهشت ۱۳۸۷



dayli-writingبعد از سوتی های زنجیره ای در اخبار شبکه 2 و 1 حالا نوبت به روزنامه همشهری رسیده تا با یک سوتی جالب هم یه سری رو بخندونه هم یه توهینی به مهندسین کامپیوتر کرده باشه .

 



برای نمایش کامل عکس روی عکس کلیک کنید.

 

نویسنده hidensoft > موضوع مطالب روزانه > لینک ثابت > نظرات : 0

نگاهی تازه به JQuery

تاریخ سه شنبه ۲۴ ارديبهشت ۱۳۸۷


NewsjQuery Virtual Tour یک اسکریپت جاوا اسکریپت است که بر  روی فریم ورک JQuery نوشته شده و به شما قدرت ایجاد یک فضای 3 بعدی را می دهد . البته این اسکریپت فقط گردش به سمت چپ و راست انجام می دهد .

یکی از نکات جالب این اسکریپت سرعت بالای آن در گردش به دو سمت می باشد . 

 


حرکت جالبی بود که گروه طراحی صفحات وب open studio ، با امید اینکه هر روز اسکریپت های کم حجم تر و پیشرفته تر ساخته بشه .

نویسنده hidensoft > موضوع اخبار > لینک ثابت > نظرات : 1

تغییر دکوراسیون !

تاریخ جمعه ۲۰ ارديبهشت ۱۳۸۷


dayli-writingبنا به دلایل مالی دیگه قادر به ادامه در زمینه Web APP نیستم . در شهر جدیدی که در حال اقامت هستم دیگه خبری از مشتری برای وبلاگ ویا وبسایت نیست .

من هم تسمیم گرفتم برم سراغ یه زبان که اونجا نیاز داشته باشند.

واسه اینم بین دلفی و وی بی ، وی بیس رو انتخاب کردم .

نمی دونم دوباره سراغ وی بی میام یا نه ! امید ولارم بتونم دوباره برگردم

 

خدا حافظ وب ، سلام ویندوز !



 

نویسنده hidensoft > موضوع مطالب روزانه > لینک ثابت > نظرات : 4

Ajax Gallery

تاریخ پنجشنبه ۲۹ فروردين ۱۳۸۷


ajax-scriptAjax Gallery یک استکریپت گالری است که توسط سیستم آژاکس کار می کند . این اسکریپت عکس ها را توسط سیستم آژاکس لود می کند و دارای یک نوار Scroll می باشد که شما می توانید با حرکت دادن این نوار عکس مورد نظرتان را انتخاب کنید  ، این اسکریپت یک سیستم اسلاید هم دارد که خیلی زیبا کار می کند.



برای دانلود گالری اینجا و برای کسب اطلاعات بیشتر اینجا را کلیک کنید.

نویسنده hidensoft > موضوع Ajax Script > لینک ثابت > نظرات : 3

آموزش ساخت لوگین

تاریخ سه شنبه ۲۷ فروردين ۱۳۸۷


php-learningامروز می خوام آموزش ساختن یک لوگین ساده با PHP و session رو بدم. چون قراره یک آموزش ساده باشه ، فقط از دوفایل استفاده می کنیم :

1- login.php

2- admin.php

login.php همون فایلی هست که ما با اون لوگین می کنیم و admin.php فایلی هست که باید فقط کسی که لوگین کرده بهش دسترسی داشته باشه.

پس یک فایل با نام login.php ایجاد می کنیم. توجه داشته باشید برای اینکه بتونیم از سشن استفاده کنیم باید در اولین خط بعد از تگ PHP از session_start  استفاده کنیم :

login.php
  1. <?php
  2. if ($_POST['username'] == mysql_real_escape_string ('myusername') and $_POST['password']==mysql_real_escape_string ('mypassword'))
  3. {
  4.    $_SESSION['login'] = 'admin';
  5.    header('location: admin.php');
  6. }
  7. ?>

 

 

سپس کد HTML برای لوگین رو می نویسیم :

 

login.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  3.   <title>Login</title>
  4.   <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  5. </head>
  6. <form action="login.php" method="post">
  7.   <input type="text" name='username'>
  8.   <input type="password" name='password'>
  9.   <input type="submit" value="ورود">
  10. </form>
  11. </body>
  12. </html>

 

 

در ابتدای فایل admin.php هم این کد رو برای اینکه بفهمیم کسی لوگین کرده یا نه میگذاریم :

 

admin.php
  1. <?php
  2. if (!isset($_SESSION['login']) and !$_SESSION['login']=='admin')
  3. {
  4.   header('location: login.php');
  5. }
  6. ?>
  7. Hello , Your Logged in !

 

توی فایل login.php نگاه می کنیم که آیا username & password وارد شده مطابق با اون چیزی که ما می خوایم هست یا نه ! اگه بود در آرایه سشن مقداری رو قرار می دیم ، در فایل admin.php بررسی می کنیم که آیا اون مقدار در سشن وجود داره یا نه ، اگه وجود نداشت کاربر رو به فایل login.php ارجاع می دیم. فکر نمی کنم زیاد سخت باشه ! اگه مشکلی وجود داشت ، بپرسید.

می تونید این فایل رو هم دانلود کنید ، همین اسکریپتی هست که اینجا نوشتم.

امید وارم مورد قبول واقع شده باشه .

نویسنده hidensoft > موضوع آموزش PHP > لینک ثابت > نظرات : 1

XAJAX V.0.5 beta 4 Released

تاریخ يكشنبه ۲۵ فروردين ۱۳۸۷


Newsxajax یک پروژه باز متن  است که به شما کمک می کند بدون استفاده از جاوا اسکریپت از Ajax استفاده کنید . با توجه به پیشرفت این پروژه به نظر من کم کم به یک پروژه شناخته شده تبدیل می شه ، یکی از نقاط قوط این پروژه Community قوی است. این پروژه بصورت کامل OOP است و این باعث شده که استفاده از آن آسان شود. در حال حاضر جدید ترین نسخه این پروژه V.0.5 beta 4 است.

xajax

برای دانلود این پروژه به اینجا ، برای کسب اطلاعات بیشتر به اینجا مراجعه کنید.

اگه تونستم حتما یه آموزش ازش میگذارم.

نویسنده hidensoft > موضوع اخبار > لینک ثابت > نظرات : 0

(1) (2) صفحه بعد