اخبار

ویژه 07 Oct
Remove the Public from URL in Laravel
Remove the Public from URL in Laravel

Laravel is a very popular framework in PHP. But it comes with the public path in URL and this is one of the most common problems in the latest Laravel 5.* community. While set project on the local environment you face this problem. So, you need to resolve this problem before deploying your project on the server. Most of the time remove public from URL in Laravel problem can resolve by setting Document Root. But you can resolve by setting .htaccess file.

So what is the problem? It is not good when you have the public in your URL. So to remove this there are some methods and settings in configuration.

Methods to Remove public from URL

Using .htaccess file

Since you are already ready with Laravel project. Now, you can easily remove the public from URL in Laravel application. Follow the below steps to remove public from URL.

Rename Server.php to index.php

Firstly, you can rename server.php file to index.php file. You can find it in the root folder of your project.

Copy .htaccess file

Copy .htaccess file from public folder to root folder. Since this is the best option if you are working on the shared hosting. Change .htaccess files to below code or you can replace it.

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

<IfModule mod_rewrite.c>

    <IfModule mod_negotiation.c>

        Options -MultiViews -Indexes

    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)/$ /$1 [L,R=301]

    RewriteCond %{REQUEST_URI} !(.css|.js|.png|.jpg|.gif|robots.txt)$ [NC]

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^ index.php [L]

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_URI} !^/public/

    RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]

    RewriteRule ^.env$ - [R=404,L,NC]

</IfModule>

 

However, this above .htaccess rule will resolve the issue regarding assets. Also, .env file access is also shown 404 error on browser. In other words, you don’t need to manually change any code for this condition. This rules will automatically handle those conditions.

Changes in Assets Path

So, you can see the public is removed from the URL. But due to this, there is one more problem occur in the applications. All the link and script assets will get 404 error. While getting those files you get “Not Found” error. So, to resolve this error you can simply prepend public in your assets URL. Therefore, you can resolve the “Not Found” error.

In this way, you can remove the public from URL using .htaccess rules. But make sure anyways you don’t give any unnecessary access to your application. If you find so then you can make changes in your .htaccess file.

Using Document Root

When you use a dedicated or private server for the web development then relatively simple to remove the public from URL. Now, you have access to the root. So, you can change any file on your server. But make sure you have ideas about what you are doing.

Open Virtual Host file of your server. and add the public to your Document Root.

1

2

3

4

5

6

7

8

<VirtualHost *:80>

    ServerAdmin info@example.com

    ServerName <a class="vglnk" href="http://example.com"  rel="nofollow"> <span>example</span><span>.</span><span>com</span></a>

    ServerAlias <a class="vglnk" href="http://www.example.com"  rel="nofollow"> <span>www</span><span>.</span><span>example</span><span>.</span><span>com</span></a>

    DocumentRoot {yoursourcedirectory}/public ErrorLog

    ${APACHE_LOG_DIR}/error.log CustomLog

    ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 

In the above code, you will see the highlighted line. Well so, you can Simply add public in that line. Save the change in Virtual Host file and check your URL on the browser. However, you can restart your apache to reset the service. In this way, you can remove the public from the URL using the Document Root path.

Hence, you can use this method to remove the public from the URL in the Laravel application. In other words, you can use the .htaccess method on shared servers and Document Root method on a dedicated server. I hope this will help this post in your deployment. In short, comment below if you have any query regarding removal of public from URL.

بیشتر بخوانید
ویژه 21 Jul
مقایسه ای جامع و منصفانه بین CodeIgniter و Laravel
مقایسه ای جامع و منصفانه بین CodeIgniter و Laravel

CodeIgniter و Laravel دو فریم‌ورک بسیار محبوب و ساده PHP با جامعه کاربری بزرگ و آموزش‌های زیاد هستند. در این مطلب قصد داریم یکی از این دو فریم‌ورک محبوب را بیاموزیم.

در این مطلب قصد داریم مقایسه‌ای جامع و شامل از این دو فریم‌ورک ارائه دهیم تا شما راحت تر بتوانید فریم‌ورک مناسب خود را بشناسید.

CodeIgniter و Laravel را بیشتر بشناسید

CodeIgniter یک فریم‌ورکِ PHP، قوی و قدرتمند است که برای برنامه‌نویسانی ساخته شده که برای توسعه و طراحی برنامه‌های تحت وب، بدنبال ابزاری ساده، با ساختاری مناسب هستند. CodeIgniter برای سال‌های متمادی، انتخاب ارجح توسعه‌دهندگان بوده است.

یکی از اهداف طراحی این فریم‌ورک سادگی یادگیری برای برنامه نویسان تازه کار است و نسبت به دیگر فریم‌ورک‌ها توسعه‌ی پروژه‌ها را سریع‌تر انجام می‌دهد. همچنین این فریم‌ورک مجموعه‌ی غنی‌ای از کتابخانه‌ها (libraries) را در کنار رابط کاربری و ساختار منطقی (برای دسترسی به کتابخانه‌ها) ارائه می‌دهد.

مقایسه سه فریم‌ورک Laravel و Symfony و Yii

همچنین Laravel نیز یک فریم‌ورکِ PHP است که برای اولین بار در سال 2011 در دسترس کاربران قرار گرفت. پس از آن این فریم‌ورک به محبوبیت زیادی دست پیدا کرد و در تعداد زیادی از برنامه‌های تحت وب استفاده شد. Laravel با آخرین نسخه‌ی PHP طراحی شده و کامپوننت‌های زیادی مثل پشتیبانی از احراز هویت و تست واحد، دارد.

هر دو فریم‌ورک ویژگی‌های منحصر به‌فردی دارند و برای برنامه‌نویس‌های برنامه‌های تحت وب، انعطاف‌پذیر هستند. هنگام انتخاب یکی از فریم‌ورک‌ها برای توسعه‌ی وب‌سایت، باید تفاوت‌های اصلی و کلیدی این فریم‌ورک‌ها را در نظر بگیرید.

مطلب جامع آشنایی با فریم‌ورک ها

ویژگی‌های مثبت و نقاط قوت CodeIgniter

مورد اعتماد یک جامعه‌ی بزرگ است

CodeIgniter برای سال‌های متمادی، انتخاب ارجح توسعه دهندگان بوده است. جامعه‌ی بزرگی از فریم‌ورکِ CodeIgniter برای توسعه‌ی برنامه‌های تحت وب، از سطوح کوچک گرفته تا سطوح بزرگ، استفاده می‌کنند.

فریم‌ورکِ CodeIgniter مورد اعتماد کاربرانش است و شهرتش را حفظ کرده است. بخاطر جامعه‌ی بزرگِ این فریم‌ورک، گرفتن کمک و پشتیبانیِ آنلاین بسیار ساده است.

مستندات (Documentation)

در این مورد، CodeIgniter در میان دیگر فریم‌ورک‌ها، در صدر قرار دارد. سورس‌کدِ CodeIgniter بسیار واضح است و بخوبی سازمان‌یافته است. بعنوان یک توسعه‌دهنده، درک آن برای‌تان سخت نخواهد بود. ساختار این مستندات برای یادگیری ساده است و ویژگی‌ و قابلیت‌های سفارشی (custom) نیز به آن اضافه شده است.

ساده، روشن، سریع

CodeIgniter فریم‌ورکی است که استفاده از آن بسیار سریع است. افرادی که آشنایی کمی با PHP دارند می‌توانند فریم‌ورک‌های CodeIgniter را راه‌اندازی کنند و با استفاده از آن توسعه‌ی نرم افزار خود را شروع کنند.

حتی اگر با معماریِ MVC آشنایی کمی داشته باشید یا اصلاً هیچ‌گونه آشنایی با آن نداشته باشید این فریم‌ورک برایتان ساده خواهد بود.

این فریم‌ورکِ در حالت پایه پایه فقط به تعدادی کتابخانه (library) نیاز دارد. کتابخانه‌های اضافی نیز در صورت نیاز، قابل بارگذاری هستند، ولی سیستم‌ پایه بسیار ساده است.

CodIgniter بخاطر سرعتش معروف است. وب‌سایتِ CodeIgniter با این جمله به خود می‌بالد:

ما شما را برای یافتن فریم‌ورکی که نسبت به CodeIgniter کارایی بهتری داشته باشد، به چالش می‌کشیم.

امنیت بالا، تست شده توسطِ میلیون‌ها کاربر

CodeIgniter در طول چندین سال، توسط میلیون‌ها کاربر تست شده. با وجود تعداد زیادِ افرادی که از این فریم‌ورک استفاده می‌کنند، این فریم‌ورک باید امنیتی قابل اعتماد داشته باشد. در زمینه‌ی امنیت، فریم‌ورکِ  CodeIgniter بسیار موفق بوده است.

قابلیت‌ها و کامپوننت‌های تعبیه شده داخلی

CodeIgniter تعدادی قابلیت‌های استاندارد تعبیه شده داخلی دارد. در ادامه تعدادی از رایج‌ترین و پرکاربردترین قابلیت‌ها آورده شده است:

  • موتورِ قالب یا Templating: فریم‌ورک CodeIgniter یک تجزیه کننده‌ی template ساده دارد که  استفاده از آن آسان است. برای کار با CodeIgniter نیازی به نصب یک موتور Templating جداگانه نیست. 
  • ذخیره‌سازی خروجی در حافظه‌ی نهان (Output Caching): فریم‌ورک CodeIgniter ذخیره سازی در حافظه‌ی نهان را هم ارائه می‌دهد. صفحه‌های وب ذخیره می‌شوند بنابراین زمان بارگذاری کاهش می‌یابد. این قابلیت، بهره‌وری و عملکرد را افزایش می‌دهد. 
  • پشتیبانی از Query Builder Database: فریم‌ورک CodeIgniter یک کلاسِ query builder تعبیه شده‌ی داخلی دارد. این کلاس این امکان را میدهد تا اطلاعات در دیتابیس با حداقل کدِ اسکریپت، بازیابی، اضافه (inserted) و به‌روزرسانی شوند. بخاطر رابط کاربری ساده‌ی آن، برای اجرای عملیات database query، گاهی فقط نیاز به نوشتن 3-2 خط کد داریم.
  • کش پایگاه داده: CodeIgniter کوئری‌های دیتابیس را بصورت فایل‌های متنی ذخیره می‌کند و این کار باعث کاهش بارِ پایگاه داده می‌شود. 
  • کلاسِ Unit Testing: فریم‌ورک CodeIgniter آپشنی برای مدیرت تست واحد با استفاده از کدش ارائه می‌دهد و یک کلاسِ Unit Test نیز ارائه میدهد که کاملاً ساده است و از یک تابعِ evaluation (ارزیابی) و دو تابعِ result (نتایج) تشکیل شده است.
  • رمزگذاری داده‌ها: CodeIgniter دو راه برای رمزگذاری داده‌ها ارائه میدهد و از اکستنشنِ Mcrypt PHP که برای اجرای کلاسِ Encrypt لازم است نیز پشتیبانی می‌کند.

ویژگی‌های مثبت و نقاط قوت Laravel

محبوبیت

Laravel هنوز هم یک فریم‌ورک جدید است ولی در مدت زمان کوتاهی در بازار سورس‌باز‌ها به محبوبیت قابل توجهی دست یافته است. همچنین Laravel بخاطر قابلیت‌های منحصر به فردش در نظرسنجیِ Sitepoint جایزه‌ی "بهترین فریم‌ورکِ PHP سال 2015" را برنده شده است.

پشتیبانی از جدیدترین نسخه‌ی PHP

Laravel برای آخرین ورژنِ PHP ساخته شده است. Laravel اغلب آپدیت می‌شود و از توابع جدیدِ PHP استفاده می‌کند. برای استفاده از آخرین ورژن فریم‌ورکِ Laravel باید از سرورهای بروز شده استفاده کنید.

آموزش کامل فریم‌ورک لاراول

جابجایی پایگاه داده

تا قبل از رونمایی از فریم‌ورکِ Laravel، حفظ کنترلِ ورژنِ پایگاه داده راحت نبود. Laravel جابجایی پایگاه داده میان ماشین‌های طراحی و توسعه‌ی مختلف را راحت کرده است. می‌توان با استفاده از Laravel، ورژن‌های مختلف را برای شمایِ (schema) پایگاه داده نگه داشت. هر جابه‌جایی یک timestamp دارد که زمان رخ دادن آن را پیگیری می‌کند.

پشتیبانی از MicroFramework

این مورد یک ویژگی منحصر به فرد است که توسط جامعه‌ی Laravel معرفی شد. یکی از معروف‌ترین Micoframeworkهای معرفی شده توسط Laravel، Lumen است. Lumen برای ساختن Laravel-based، سرویس‌های micro و APIهایِ خیلی سریع، بهترین راه حل است. Lumen اغلب زمانی که تراکنش‌ داده‌ای زیادی وجود داشته باشد، استفاده می‌شود.

قابلیت‌ها و کامپوننت‌‌های تعبیه شده‌ی داخلی

  • پکیج‌ها: هر کسی دوست‌ دارد هنگام طراحی و توسعه‌ی برنامه‌های وب، توابعِ جدیدی اضافه کند، این کار با Laravel بسیار ساده شده است. Laravel از پکیج‌هایی پشتیبانی می‌کند که به کاربران کمک می‌کنند تا توابع جدید اضافه کنند.
  • Helperها: Laravel با فراهم کردن امکان استفاده‌ از توابعِ Helper، انعطاف‌پذیری خوبی برای توسعه‌دهندگان فراهم آورده کرده است. Laravel تعدادی توابعِ help دارد. کاربران هر زمان که بخواهند می‌توانند در برنامه‌های وب‌شان، آزادانه به helperها دسترسی داشته باشند.
  • صدور مجوز (Authorization): به غیر از اهرز هویت، Laravel مکانیسم‌هایی برای سازمان‌دهی منطق صدور مجوز نیز ارائه می‌دهد. Laravel تعدادی متد ارائه میدهد و با سازمان‌دهی منطق، به صدور مجوز کمک می‌کند.
  • هش کردن (Hashing): فریم‌ورک Laravel با یکپارچه‌سازی تکنیک‌ها، یک مکانیسم هش کردن (hashing) فراهم کرده است. Laravel برای اهداف ریجستر و احراز هویت، بصورت خودکار از bcrypt استفاده می‌کند.

چگونه از بین Laravel و CodeIgniter یکی را انتخاب کنیم؟

بلاخره بین Laravel و CodeIgniter کدام را انتخاب کردید؟ مثل همیشه باید گفت انتخاب فریم‌ورک مناسب بستگی زیادی به نیازمندی‌های پروژه شما دارد.

به نظر می‌رسد Laravel برای پروژه‌های بزرگ و حساس که قرار است کارهای بزرگی انجام دهند و به کاربران زیادی خدمات دهند مناسب تر است.

CodeIgniter نیز پروژه‌های قوی ولی در سطح کوچک را به خوبی و سرعت توسعه می‌دهد.

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

بیشتر بخوانید
ویژه 08 Jul
اندروید وب سرور
اندروید وب سرور

اندروید وب سرور

شما می‌توانید با مطالعه این آموزش کوتاه، گوشی تلفن همراه هوشمند خود را به یک وب سرور تبدیل کنید.

اگر می‌خواهید گوشی هوشمند خود را به وب سرور (web server) تبدیل کنید، با این آموزش ساده در لیداوب همراه باشید تا به شما نشان دهیم که چگونه با ترفندی ساده، می‌توانید این کار را انجام دهید.

پیش از هر چیز باید به این نکته توجه داشته باشید که این آزمایش فقط روی “Iris web framework” تست و اجرا شده و در “golang” و اندروید ورژن 5.1 نوشته شده است.

android web server | تبدیل گوشی تلفن همراه به web server

مراحل انجام کار

گوشی تلفن همراه خود را روشن کنید و مراحل زیر را انجام دهید.

  1. برنامه Termux را دانلود کرده و روی گوشی خود نصب کنید.
  2. حالا Termux را اجرا کنید
  3. دستوراتی که در زیر نوشته شده را به ترتیب در برنامه اجرا کنید
$ pkg install git

$ pkg install golang

$ export GOPATH=/data/data/com.termux/files/home/go

$ go get -u -v github.com/kataras/iris

$ cd /data/data/com.termux/files/home/go/src/github.com/kataras/iris/_examples/hello-world

$ go run main.go

 حالا مرورگر گوشی تلفن همراه خود را باز کنید و آدرس زیر را در مرورگر وارد کنید:

http://localhost:8080 

به همین سادگی کار تبدیل تلفن همراه به وب سرور به پایان رسید و شما می‌توانید از تلفن خود به عنوان یک وب سرور اندروید استفاده کنید.

خوشحال می‌شویم اگر نظری درباره این پست دارید،یا روش دیگری برای انجام این کار می‌شناسید، در قسمت نظرات با ما در میان بگذارید.

بیشتر بخوانید
ویژه 27 Mar
مدیریت فایل در لاراول
مدیریت فایل در لاراول

کار با فایل منیجر در لاراول

فیس‌بوک  تلگرام 

چگونگی ایجاد یک فایل منیجر در لاراول ‎ در این اموزش با استفاده از پکیج laravelFileManager مدیریت فایل را انجام میدهیم. پکیجی که کار را راحت کرده و نحوه استفاده از کدهای آن به علت داشتن داکیومنت و جامعه پشتیبانی قوی ، آسان شده . در ابتدا برای نصب این پکیج در terminal خود دستور زیر را وارد کنید.


composer require unisharp/laravel-filemanager:~1.8

این دستور باعث میشود که شما بتوانید آخرین نسخه پایدار این پکیج را نصب کنید . بعد از اتمام نصب مراحل زیر را ادامه دهید. به پوشه config/app.php و داخل providers کدهای زیر را اضافه کنید‎:



,UniSharpLaravelFilemanagerLaravelFilemanagerServiceProvider::class
 
, InterventionImageImageServiceProvider::class

و به alias هم کد زیر :


Image' => InterventionImageFacadesImage::class,‎'

 

حالا دستور های زیر را داخل ترمینال (cmd) وارد کنید:

‎php artisan vendor:publish --tag=lfm_config

 php artisan vendor:publish --tag=lfm_public

الان نوبت این است که کش لاراول را پاک کنیم. پس دستور زیر را مینویسیم:


php artisan route:clear
php artisan config:clear

نحوه استفاده از فایل منیجر: دقت کنید که مسیر config/lfm.php باید دسترسی خواندن داشته باشد . اگر پوشه شما دسترسی خواندن و نوشتن نداشت میتوانید از طریق وب سرور(host)این دسترسی ها را مجاز یا باز کنید. خوب قراره ما با storage ها کار کنیم . اولین چیزی که باید انجام دهیم ، این است که یک linkeنمادین ایجاد کنیم.کد زیر را داخل ترمینال وارد کنید :


php artisan storage:link‎

خوب نصب با موفقیت انجام شد . تمام تنظیمات شما داخل config/lfm.php قرار دارد ‎‎ برای اینکه بتوانیم از مدیریت فایل استفاده کنیم ، نیاز به پلاگین هایWYSIWYG داریم . مثل CKEDITOR ‎ اگر با ویرایشگر ckeditor کار کرده باشید ، میبینید که یک قسمت برای آپلود فایل دارد‎.چون باید به یک پردازشگر ( مثل مدیریت فایل ) وصل شود‎ وارد فایل blade شوید:

حالا در blade خود در قسمت head یا بعد از body اسکریپت زیر را قرار دهید :

<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script>
var editor_config = {
// path_absolute : "/",
path_absolute:"{{ url('/') }}/",

selector: "textarea.my-editor",
plugins: [
"advlist autolink lists link image charmap print preview hr anchor pagebreak",
"searchreplace wordcount visualblocks visualchars code fullscreen",
"insertdatetime media nonbreaking save table contextmenu directionality",
"emoticons template paste textcolor colorpicker textpattern"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media",
relative_urls: false,
file_browser_callback : function(field_name, url, type, win) {
var x = window.innerWidth || document.documentElement.clientWidth || document.getElementsByTagName('body')[0].clientWidth;
var y = window.innerHeight|| document.documentElement.clientHeight|| document.getElementsByTagName('body')[0].clientHeight;

var cmsURL = editor_config.path_absolute + 'laravel-filemanager?field_name=' + field_name;
if (type == 'image') {
cmsURL = cmsURL + "&type=Images";
} else {
cmsURL = cmsURL + "&type=Files";
}
tinyMCE.activeEditor.windowManager.open({
file : cmsURL,
title : 'Filemanager',
width : x * 0.8,
height : y * 0.8,
resizable : "yes",
close_previous : "no"
});
} ,

// Add Bootstrap Image Responsive class for inserted images
image_class_list: [
{title: 'None', value: ''},
{title: 'Bootstrap responsive image', value: 'img-responsive'},
]

};

tinymce.init(editor_config);
</script>

حالا میتوانیم توی config/lfm.php تنظیمات مربوط به فایل منیجر را اعمال کنیم مثلا میتوانیم یه دسترسی جدید بسازیم که فقط یک سری از یوزرهای خاص بتوانند ازاین فایل منیجر استفاده کنند یا سایز عکس رو مشخص کنیم و اینکه چه نوع فایلی را میشود آپلود کرد.

// Include to pre-defined routes from package or not. Middlewares
'use_package_routes' => true,

// Middlewares which should be applied to all package routes.
// For laravel 5.1 and before, remove 'web' from the array.
'middlewares' => ['web', 'auth'],
 
// The url to this package. Change it if necessary.
'url_prefix' => 'laravel-filemanager',



 

طراحی سایت-کار با فایل منیجر در لاراول

بیشتر بخوانید
22 Aug
Laravel
Laravel

Lorem ipsum dolor sit amet, persecuti neglegentur ei sit, assum accusata atomorum duo ne, timeam philosophia ex sea. Pri malorum blandit splendide id, est ea autem docendi interesset. Et vivendo lobortis has, te ius summo epicurei atomorum, an usu novum officiis intellegebat. Ne ridens dicunt eos, vel ad atqui mazim oratio. At vix nisl dolore similique, vidit dicat elitr eum te. Id eum mentitum nominavi, velit oporteat referrentur mei ei, et sea legimus suscipit. Quis augue altera mei et.

Image result for ionic

Lorem ipsum dolor sit amet, persecuti neglegentur ei sit, assum accusata atomorum duo ne, timeam philosophia ex sea. Pri malorum blandit splendide id, est ea autem docendi interesset. Et vivendo lobortis has, te ius summo epicurei atomorum, an usu novum officiis intellegebat. Ne ridens dicunt eos, vel ad atqui mazim oratio. At vix nisl dolore similique, vidit dicat elitr eum te. Id eum mentitum nominavi, velit oporteat referrentur mei ei, et sea legimus suscipit. Quis augue altera mei et.
Image result for angularjs

Lorem ipsum dolor sit amet, persecuti neglegentur ei sit, assum accusata atomorum duo ne, timeam philosophia ex sea. Pri malorum blandit splendide id, est ea autem docendi interesset. Et vivendo lobortis has, te ius summo epicurei atomorum, an usu novum officiis intellegebat. Ne ridens dicunt eos, vel ad atqui mazim oratio. At vix nisl dolore similique, vidit dicat elitr eum te. Id eum mentitum nominavi, velit oporteat referrentur mei ei, et sea legimus suscipit. Quis augue altera mei et.

Image result for ngcordova

بیشتر بخوانید