Skip to content

Instantly share code, notes, and snippets.

@lablnet
Last active August 29, 2018 02:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lablnet/e3b376de88dc93f3f13f0a8243246450 to your computer and use it in GitHub Desktop.
Save lablnet/e3b376de88dc93f3f13f0a8243246450 to your computer and use it in GitHub Desktop.
Zest
<h1>Before Using Zest Framework</h1><p>
Before using Zest Framework it is important to understand why it is a good idea to use the Zest Framework.</p><p>As for PHP, there are many PHP frameworks available nowadays, so the question is raised as to why we should use ZestFramework.</p><p>The main purpose of Zest framework is to provide a very lightweight framework without any external dependencies except core and autoloader. So in this case Zest Framework is very light in weight the core files size of zest framework is less then one 1MB
</p><div><h1>Key benefits</h1>
Zest is a simple/light weight yet powerful PHP MVC framework for rapid application development that is suited for small to medium and large scale apps and APIs.
<h2>Advance Routing system</h2>
Zest Framework provides advance routing system
<ol>
<li>Flexible regular expression routing</li>
<li>Custom regexes</li>
<li>Router with controllers</li>
<li>Routers using closure</li><li>Rests routes</li>
</ol>
<h2>Router Caching</h2>
Zest Franework provide router caching feature so you should take advantage of Zest's route cache.
Zest router cache file Zest router file located at <i>root/Storage/Cache</i>
Using the route cache will drastically decrease the amount of time it takes to register all of your application's routes. In some cases, your route registration may even be up to 100x faster. To generate a route cache, just need to enable from config file
<b>ROUTER_CACHE =&gt;</b> set to true to enable caching, or false to disable caching. Default value is true.
Zest framework provide an easy creating website using zest
After enable in config file, your cached routes file will be loaded on every request. Remember, if you add any new routes. You don't need to regenerate a fresh route cache, Because Zest framework regenerate a fresh route cache automatically for you affter specific time define in config file.
<b>ROUTE_CACHE_REGENERATE</b> timestamp for cache file, after expire cache file auto refreshed , default value is 3600 - 1Hour.
<h2>Model-View-Controller Based System</h2>
ZestFramework make use of the MVC system to find complex models and helps you to create application easily by using controllers and views. It assists the developer to build core libraries for the system and enables you to integrate your own existing scripts with database.
<h2>Error Handling</h2>
It offers simple user-friendly interfaces that help you to displays all PHP errors in your web application without missing inadequacy.
<h2>Validation</h2>
Zest Framework prodivde validation library to validate form data easily.
<h2>Dependency Injection</h2>
ZestFramework supports dependency injection so you have complete control of your external tools. Use any Container-Interop container.
<h2>Extremely Light Weight</h2>
The core file size of ZestFramework less then 1MB
<h2>Email</h2>
Email Sending Class. Supports Attachments, HTML/Text email, multiple protocols (SMTP, and ail).
<h1>Others benefits</h1>
<ol>
<li>Security Filtering (xss,sql injection and csrf)</li>
<li>Session and Cookies Management</li>
<li>Image Manipulation Library (cropping, resizing, rotating, etc.).</li>
<li>File Manipulation Class</li>
<li>Benchmarking</li>
<li>Error Logging</li>
<li>User Agent Class</li>
<li>Zip Encoding Class</li>
<li>Large library of "helper" functions</li>
<li>It helps web developers to find out the errors in programming codes and fix-up the issues instantly in the web applications.</li>
<li>It provides you user-friendly interface that help developers to create a dynamic, flexible, secure and large web applications effectively in a short span of time.</li>
<li>Web developers can make use of this powerful framework to customize the configuration files easily and it provides hassle-free migration from source to destination service hosting.</li>
<li>The framework helps the programmer to create both front-end and rear-end of a web application effectively and easily in a secured manner. </li>
<li>Programmers can create web applications with additional features and high-end functionalities by using in-built resource and libraries of the ZestFramework. </li>
</ol><h1>Parts of the framework you should use in your application</h1>
<ol>
<li>Router - Routes of your site</li>
<li>Controller- responsible for performing a request action.
</li>
<li>Views- view static files</li>
<li>Input - user input handling</li>
<li>Database - manage database</li>
<li>Auth - Describe below</li>
<li>Logger - Logging is one of the most ubiquitous tasks encountered in PHP. We use logs to track error messages, record important events, and debug problems with the code.
</li>
<li>Dependencies Injection- IOC to load dependent classes automatically</li>
</ol>
<div><br></div><div><br></div><div><br></div><div><h1>SImple use of Zest Framework</h1><div><p style="font-size: 16px;
box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">As Auth Management library bundled with Zest Framework so we create simple auth app</p></div><h2 id="configuration" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
font-size: 24px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Configuration</h2><p style="box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
font-size: 16px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">There is configuration need for using Auth Management library in zest framework open -&nbsp;<code style="box-sizing: border-box;
font-family: Consolas , &quot;Andale Mono WT&quot; , &quot;Andale Mono&quot; , &quot;Lucida Console&quot; , &quot;Lucida Sans Typewriter&quot; , &quot;DejaVu Sans Mono&quot; , &quot;Bitstream Vera Sans Mono&quot; , &quot;Liberation Mono&quot; , &quot;Nimbus Mono L&quot; , Monaco , &quot;Courier New&quot; , Courier , monospace;
font-size: 12px;
white-space: pre-wrap;
max-width: 100%;
background: rgb(255 , 255 , 255);
border: 1px solid rgb(225 , 228 , 229);
padding: 2px 5px;
color: rgb(231 , 76 , 60);
overflow-x: auto;
word-wrap: break-word;">Config/Auth.php</code></p><pre style="box-sizing: border-box;
font-family: monospace , serif;
font-size: 16px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);"><code class="php hljs" style="box-sizing: border-box;
font-family: Consolas , &quot;Andale Mono WT&quot; , &quot;Andale Mono&quot; , &quot;Lucida Console&quot; , &quot;Lucida Sans Typewriter&quot; , &quot;DejaVu Sans Mono&quot; , &quot;Bitstream Vera Sans Mono&quot; , &quot;Liberation Mono&quot; , &quot;Nimbus Mono L&quot; , Monaco , &quot;Courier New&quot; , Courier , monospace;
font-size: 12px;
max-width: 100%;
background: rgb(255 , 255 , 255);
border: 1px solid rgb(225 , 228 , 229);
padding: 12px;
color: rgb(51 , 51 , 51);
overflow-x: auto;
word-wrap: normal;
display: block;
text-size-adjust: none;"><span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Auth database table.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> AUTH_DB_TABLE = <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'users'</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Auth database name.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> AUTH_DB_NAME = <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'zestweb'</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Auth default verification link.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> VERIFICATION_LINK = <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'/account/verify/'</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Auth default verification link.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> RESET_PASSWORD_LINK = <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'/account/reset/password'</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* is send email over smtp.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> IS_SMTP = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">false</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* is user need to verify email.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> IS_VERIFY_EMAIL = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">false</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* sticky password.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> string
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> STICKY_PASSWORD = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">false</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Defaults auth errors msgs.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> array
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> AUTH_ERRORS = [
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'password_confitm'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Password much be matched'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username_not_exist'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Sorry, the username does not exists'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'email_not_exist'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Sorry, the email does not exists'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'password_match'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Password does not matched'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'sticky_password'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Password much be greate then 6 much contain lowercase,uppercase and special character'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account_verify'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'You should verify your account in order to login, another verification is sended to your email addresss'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'already_login'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Account already loggedin'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'need_login'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'You need login to your account in order to update profile'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'token'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Invilid request'</span>,
];
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Defaults auth success msgs.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> array
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> SUCCESS = [
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'signin'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Login successfully'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'signup'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account has been created successfully'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'update'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account has been updated'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'update_password'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your password has been updated'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'verified'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account verified login now to enjoy in our services'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'reset'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Password reset request has been sended to your email'</span>,
];
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Defaults auth email subjects.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> array
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> AUTH_SUBJECTS = [
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'need_verify'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Account verification required'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'verified'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Account verified'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'reset'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Password reset request'</span>,
];
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Defaults auth email bodies.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @var</span> array
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">const</span> AUTH_MAIL_BODIES = [
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'need_verify'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Dear :email your account has been created you need verify your account&lt;br&gt;&lt;a href=":link"&gt;verify my account&lt;/a&gt;&lt;br&gt;Click above link if you unable to open copy paste below link &lt;br&gt;:link'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'reset'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Dear :email We recieve password reset request form your account reset your password now&lt;br&gt;&lt;a href=":link"&gt;reset my password&lt;/a&gt;&lt;br&gt;Click above link if you unable to open copy paste below link &lt;br&gt;:link'</span>,
<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'verified'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Dear :email your account verified login now to enjoy in our services'</span>,
];
</code></pre><p style="box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
font-size: 16px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">Change this configuration according to your requirement.</p><h2 id="default-database-structure" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
font-size: 24px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Default Database Structure</h2><p style="box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
font-size: 16px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">required fields - username - email - password - salts - token - resetToken (for allow reset password)</p><h2 id="lets-create-simple-auth-app-in-zest-framework" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
font-size: 24px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Lets create simple auth app in Zest Framework</h2><h3 id="required-routes" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Required routes</h3><pre style="box-sizing: border-box;
font-family: monospace , serif;
font-size: 16px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);"><code class="php hljs" style="box-sizing: border-box;
font-family: Consolas , &quot;Andale Mono WT&quot; , &quot;Andale Mono&quot; , &quot;Lucida Console&quot; , &quot;Lucida Sans Typewriter&quot; , &quot;DejaVu Sans Mono&quot; , &quot;Bitstream Vera Sans Mono&quot; , &quot;Liberation Mono&quot; , &quot;Nimbus Mono L&quot; , Monaco , &quot;Courier New&quot; , Courier , monospace;
font-size: 12px;
max-width: 100%;
background: rgb(255 , 255 , 255);
border: 1px solid rgb(225 , 228 , 229);
padding: 12px;
color: rgb(51 , 51 , 51);
overflow-x: auto;
word-wrap: normal;
display: block;
text-size-adjust: none;"><span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// Add the routes</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">''</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Home@index"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Account</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/login</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/login'</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@login"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/login/action</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/login/action'</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@loginProcess"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/signup</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/signup'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@signup"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/signup/action</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/signup/action'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@signupProcess"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/logout</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/logout'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@logout"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/@username</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'{username:@([a-zA-Z0-9])+}'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@profileView"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/profile/edit</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/profile/edit'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@profileEdit"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/update/action</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/update/action'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@profileUpdate"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/update/bio/action</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/update/bio/action'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@profileBioUpdate"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/update/password/action</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/update/password/action'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@profilePasswordUpdate"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/reset</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/reset'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@reset"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/reset/action</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/reset/action'</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@resetProcess"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/acount/reset/password/$token</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;get(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/reset/password/{token:[A-Za-z0-9]+}'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@resetPassword"</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//create url: yoursite.com/account/reset/password-password/process</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$router</span>-&gt;post(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/reset/password-password/process'</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Account@resetPasswordProcess"</span>);
</code></pre><h3 id="required-controller" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Required Controller</h3><h4 id="home-controller" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
font-size: 18.4px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Home Controller</h4><pre style="box-sizing: border-box;
font-family: monospace , serif;
font-size: 16px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);"><code class="php hljs" style="box-sizing: border-box;
font-family: Consolas , &quot;Andale Mono WT&quot; , &quot;Andale Mono&quot; , &quot;Lucida Console&quot; , &quot;Lucida Sans Typewriter&quot; , &quot;DejaVu Sans Mono&quot; , &quot;Bitstream Vera Sans Mono&quot; , &quot;Liberation Mono&quot; , &quot;Nimbus Mono L&quot; , Monaco , &quot;Courier New&quot; , Courier , monospace;
font-size: 12px;
max-width: 100%;
background: rgb(255 , 255 , 255);
border: 1px solid rgb(225 , 228 , 229);
padding: 12px;
color: rgb(51 , 51 , 51);
overflow-x: auto;
word-wrap: normal;
display: block;
text-size-adjust: none;">
<span class="hljs-preprocessor" style="box-sizing: border-box;
color: rgb(153 , 153 , 153);
font-weight: bold;">&lt;?php</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">namespace</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">App</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Controllers</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//for using View</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">use</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">View</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">View</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//for using auth management</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">use</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Auth</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Auth</span>;
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">use</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Auth</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">User</span>;
<span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">class</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Home</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">extends</span> \<span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Controller</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Controller</span>
</span>{
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">/**
* Show the index page.
*
*<span class="hljs-phpdoc" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);"> @return</span> void
*/</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">index</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// in Auth user class there is method isLogin to check is user login or not</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isLogin()) {
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// in Auth user class there is method loginUser that return the login user array</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;loginUser();
View::View(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/profile'</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span>[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>]);
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/signup'</span>);
}
}
}
</code></pre><h4 id="account-controller" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
font-size: 18.4px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Account Controller</h4><pre style="box-sizing: border-box;
font-family: monospace , serif;
font-size: 16px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);"><code class="php hljs" style="box-sizing: border-box;
font-family: Consolas , &quot;Andale Mono WT&quot; , &quot;Andale Mono&quot; , &quot;Lucida Console&quot; , &quot;Lucida Sans Typewriter&quot; , &quot;DejaVu Sans Mono&quot; , &quot;Bitstream Vera Sans Mono&quot; , &quot;Liberation Mono&quot; , &quot;Nimbus Mono L&quot; , Monaco , &quot;Courier New&quot; , Courier , monospace;
font-size: 12px;
max-width: 100%;
background: rgb(255 , 255 , 255);
border: 1px solid rgb(225 , 228 , 229);
padding: 12px;
color: rgb(51 , 51 , 51);
overflow-x: auto;
word-wrap: normal;
display: block;
text-size-adjust: none;">
<span class="hljs-preprocessor" style="box-sizing: border-box;
color: rgb(153 , 153 , 153);
font-weight: bold;">&lt;?php</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">namespace</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">App</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Controllers</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//for using View</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">use</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">View</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">View</span>;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//for using auth</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">use</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Auth</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Auth</span>;
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">use</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">Auth</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">User</span>;
<span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">class</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Account</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">extends</span> \<span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Zest</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Controller</span>\<span class="hljs-title" style="box-sizing: border-box;
color: rgb(68 , 85 , 136);
font-weight: bold;">Controller</span>
</span>{
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//check is user is login or not</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">isLogin</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// in Auth user class there is method isLogin to check is user login or not</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isLogin()) {
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//redirect() is builtin function in zest framework for redirect to another page</span>
redirect(site_base_url().<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"account/profile/edit"</span>);
}
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//User login form</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">login</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$this</span>-&gt;isLogin();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Loading the view form</span>
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"account/login"</span>);
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Process the login request/actuin</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">loginProcess</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$this</span>-&gt;isLogin();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Getting the user value</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// using builtin input function</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//escape function clean the input for escaping</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'password'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Call the auth signin method accpet two arguments</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// username and password </span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;signin()-&gt;signin(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//check if there is error</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// if yes, get the error</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//loop throught the error</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//if no error print 1 on screen means true</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'1'</span>;
}
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// Signup form</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">signup</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$this</span>-&gt;isLogin();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Load the signup form</span>
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"account/signup"</span>);
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">signupProcess</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$this</span>-&gt;isLogin();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Getting the user value</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// using builtin input function</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//escape function clean the input for escaping</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$name</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'name'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$email</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'email'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'password'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$confirm</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'confirm'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Signup method accpet the three required arguments</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// $username,$email and password </span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Fourth array argument is optional you can provide many fields in fourth argument if want</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;signup()-&gt;signup(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$email</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span>,[<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'name'</span> =&gt; <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$name</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'passConfirm'</span> =&gt; <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$confirm</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'role'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'normal'</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'ip'</span> =&gt; (<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> \Zest\UserInfo\UserInfo)-&gt;ip()]);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//check if there is error</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// if yes, get the error</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//loop throught the error</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// If no error print successfull message</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account has been created login to enjoy in our services'</span>;
}
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// Logout the users</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">logout</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// Call the logout method in auth class</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;logout();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//redirect the user to login page back</span>
redirect(site_base_url().<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"account/login"</span>);
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">profileEdit</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isLogin()) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;loginUser();
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//profile edit form</span>
View::View(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/profile'</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span>[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>]);
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'errors/404'</span>);
}
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">profileUpdate</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">false</span>;
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$name</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'name'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$email</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'email'</span>));
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//check if username is already exists</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isUsername(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>)) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">true</span>;
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Sorry, {$username} username already exists, try another"</span>;
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//check if email is already exists</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isEmail(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$email</span>)) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">true</span>;
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Sorry, {$email} email already exists, try another"</span>;
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> !== <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">true</span>) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;loginUser()[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>][<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'id'</span>];
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//update the user details</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;update()-&gt;update([<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'name'</span>=&gt;<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$name</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username'</span>=&gt;<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>,<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'email'</span>=&gt;<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$email</span>],<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span>);
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account has been updated successfully'</span>;
}
}
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">profileBioUpdate</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$bio</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'bio'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//get id of login user</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;loginUser()[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>][<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'id'</span>];
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//update bio of user</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;update()-&gt;update([<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'bio'</span>=&gt;<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$bio</span>],<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span>);
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account bio has been updated successfully'</span>;
}
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">profilePasswordUpdate</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'password'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$confirm</span> = escape(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'confirm'</span>));
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//get id of login user</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;loginUser()[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>][<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'id'</span>];
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Update the password</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;update()-&gt;updatePassword(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$confirm</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span>);
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your account password has been updated successfully'</span>;
}
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">profileView</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$this</span>-&gt;route_params[<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username'</span>];
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span> = str_replace(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"@"</span>, <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">''</span>, <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>);
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isUsername(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>)) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;getByWhere(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'username'</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$username</span>);
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//profile view</span>
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'account/profileView'</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span>[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>]);
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'errors/404'</span>);
}
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Reset password form where user enter his email</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">reset</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// Load the reset form</span>
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Create your form that should email and one buttom</span>
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"account/reset"</span>);
}
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//Reset password process</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">resetProcess</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">// reset the password</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;reset()-&gt;reset(input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'email'</span>));
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'Your Password reset request has been recieved check your email'</span>;
}
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">resetPassword</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$token</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$this</span>-&gt;route_params[<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'token'</span>];
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//check if reset token is exists</span>
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;isResetToken(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$token</span>)) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span> = [<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'token'</span> =&gt; <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$token</span>];
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"account/reset_password"</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$args</span>);
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
View::view(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"errors/404"</span>);
}
}
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">public</span> <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">function</span> <span class="hljs-title" style="box-sizing: border-box;
color: rgb(153 , 0 , 0);
font-weight: bold;">resetPasswordProcess</span><span class="hljs-params" style="box-sizing: border-box;">()</span>
</span>{
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span> = input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'password'</span>);
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$confirm</span> = input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'confirm'</span>);
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$token</span> = input(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'token'</span>);
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> User;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//get the user id by resetToken</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$user</span>-&gt;getByWhere(<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'resetToken'</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$token</span>)[<span class="hljs-number" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">0</span>][<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'id'</span>];
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span> = <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">new</span> Auth;
<span class="hljs-comment" style="box-sizing: border-box;
color: rgb(153 , 153 , 136);
font-style: italic;">//update the user password</span>
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;update()-&gt;updatePassword(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$password</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$confirm</span>,<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span>);
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;fail()) {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> = <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;error()-&gt;get();
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$errors</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">if</span> (is_array(<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>)) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">foreach</span> (<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span> <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">as</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>) {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$value</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$error</span>.<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"&lt;br&gt;"</span>;
}
}
} <span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">else</span> {
<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$auth</span>-&gt;update()-&gt;update([<span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'resetToken'</span> =&gt; <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">'NULL'</span>],<span class="hljs-variable" style="box-sizing: border-box;
color: rgb(0 , 128 , 128);">$id</span>);
<span class="hljs-keyword" style="box-sizing: border-box;
font-weight: bold;">echo</span> <span class="hljs-string" style="box-sizing: border-box;
color: rgb(221 , 17 , 68);">"Password update successfully "</span>;
}
}
}
</code></pre><p style="box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
font-size: 16px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">In the account controller we called method form auth management</p><h3 id="view" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">View</h3><p style="box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
font-size: 16px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">Create view yourself or download files form here https://github.com/Lablnet/Zest-Auth-App/tree/master/App/Views and download required css/js or image files form here https://github.com/Lablnet/Zest-Auth-App/tree/master/Public the folder structure should be same.</p><h2 id="source-code" style="box-sizing: border-box;
margin-top: 0px;
font-family: &quot;Roboto Slab&quot; , ff-tisa-web-pro , Georgia , Arial , sans-serif;
font-size: 24px;
color: rgb(64 , 64 , 64);
background-color: rgb(252 , 252 , 252);">Source code</h2><p style="box-sizing: border-box;
line-height: 24px;
margin: 0px 0px 24px;
font-size: 16px;
color: rgb(64 , 64 , 64);
font-family: Lato , proxima-nova , &quot;Helvetica Neue&quot; , Arial , sans-serif;
background-color: rgb(252 , 252 , 252);">The source code of this available in github feel free to download and contribute https://github.com/Lablnet/Zest-Auth-App</p></div>
</div>
<div id="white-board">
<h1>How we are different from others</h1>
<table class="responsive-table">
<thead>
<tr><th></th><th>Zest</th><th>Others</th></tr>
</thead>
<tbody>
<tr><td>Very Light in weight (core filesize less then 1MB)</td><td><i class="material-icons prefix">yes</i></td><td><i class="material-icons prefix" style="color: red !important;">no</i></td></tr>
<tr><td>Without external dependencies (expect core and autoload)</td><td><i class="material-icons prefix">yes</i></td><td><i class="material-icons prefix" style="color: red !important;">no</i></td></tr>
<tr><td>Support Components</td><td><i class="material-icons prefix">yes</i></td><td><i class="material-icons prefix" style="color: red !important;">no</i></td></tr>
</tbody>
</table>
</div>
<h1>Comparison</h1>
<table class="responsive-table"><thead><tr><th></th><th>Zest</th><th>Laravel</th><th>Slim</th><th>codeigniter</th><th>Symfony</th></tr></thead><tbody><tr><th>Router Caching.</th><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td><td>Yes</td></tr> <tr><th>Cache storage.</th><td>File system, Memcache , APC, Opcache</td><td>File System, Database, Memcached, APC, Redis, Xcache, WinCache, Memory (Arrays) </td><td>No</td><td>File, apc, memcached, xcache</td><td>Yes</td><tr><tr><th>Validator.</th><td>Yes</td><td>Yes</td><td>No</td><td>Yes</td><td>Yes</td><tr><th>Dependency injection container.</th><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td><td>Yes</td></tr><tr><th>Template System.</th><td>Zest , PHP custom</td><td>Blade, PHP, Custom</td><td>Twig</td><td>PHP, Simple template parser "{var_name}"</td><td>Twig</td></tr> <tr><th>Testing library.</th><td>No</td><td>PHPUnit</td><td>No</td><td>PHPUnit (In development)</td><td>Yes</td></tr><tr><th>Logging management.</th><td>Yes (psr-3 without interface)</td><td>yes</td><td>Yes</td><td>No</td><td>Yes</td></tr> <tr><th>Auth.</th><td>Yes</td><td>yes</td><td>No</td><td>No</td><td>Yes</td></tr><tr><th>Core file size including depencies.</th><td>691 KB</td><td>7.69 MB++</td><td>636 KB</td><td>1.80 MB</td><td>17.1 MB++</td></tr> <tr><th>MVC.</th><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> <tr><th>PHP7.</th><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> <th>License.</th><td>MIT</td><td>MIT</td><td>MIT</td><td>Apache</td><td>MIT</td> </tbody></table>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment