سه شنبه ۰۱ تیر ۱۴۰۰

Tuesday, June 22, 2021 GMT +4:30

» آموزش برنامه نویسی وب با PHP

php

در طی مسیر فراگیری دانش و توسعه مهارتهای برنامه نویسی وب پس از آموختن کلیاتی از CSS, HTML و JavaScript دیر یا زود اسمی از یک زبان برنامه نویسی سمت سرور مانند PHP به گوشمان خواهد خورد، ساختار وب به گونه ای است که از دو بخش سمت کاربر (مرورگر) و سمت سرور (جایی که صفحه وب یا برنامه تحت وب در آن قرار دارد) تشکیل شده و لذا صرف آشنایی با آنچه تا کنون آموخته ایم نمی تواند برای انجام فعالیت های حرفه ای و طراحی سیستم های پیشرفته کافی باشد و لزوما باید یک زبان برنامه نویسی سمت سرور مانند PHP را فرا بگیریم، با PHP می توانیم به صورت پویا آنچه را که کاربر باید در صفحه مرورگر خود ببیند مدیریت کنیم، به طور مثال اگر فرم اولیه ورود به سایت با HTML و CSS طراحی شده باشد، پس از ارسال نام کاربری و کلمه عبور به سرور، این PHP است که وظیفه تطبیق اطلاعات با پایگاه داده و صدور اجازه یا عدم اجازه دسترسی به پنل مدیریت را بر عهده دارد، با PHP می توانیم تقریبا هر خواسته ای که از سرور داشته باشیم را عملی و صفحات وب داینامیک و برنامه های تحت وب حرفه ای طراحی کنیم.

تعریف PHP به زبان ساده


اگر بخواهیم PHP را به زبان ساده تعریف کنیم می توانیم آن را زبان برنامه نویسی اسکریپتی چند منظوره بنامیم که به طور خاص برای وب توسعه یافته و جهت نوشتن برنامه های تحت وب کاربرد تخصصی دارد، این تعریف ترجمه ساده از عبارتی است که در سایت php.net درج شده است:
PHP is a popular general-purpose scripting language that is especially suited to web development.
این زبان در سال 1994 میلادی توسط Rasmus Lerdorf با هدف نمایش آنلاین اطلاعات و رزومه شخصی به زبان C نوشته شد که به همین دلیل در ابتدا آن را Personal Home Page نامیدند که PHP مخففی از سرواژه های این عبارت است، بعدها با پیشرفت PHP عبارت توضیحی HyperText Preprocessor (پیش پردازنده ابرمتن) جایگزین عبارت فوق شد، منظور از پیش پردازنده ابرمتن این است که PHP ابتدا کدها و دستورات را با مفسر خود پردازش کرده و سپس خروجی را به مرورگر کاربر ارسال می کند.
نکته: منظور از اسکریپتی بودن PHP این است که کدهای آن در مفسر سرور پردازش شده و مانند برنامه های رایج در قالب یک بسته نرم افزاری کامپایل نمی شوند.

چرا PHP بیاموزیم و با PHP برنامه نویسی کنیم؟


اغلب علاقمندان به فراگیری دانش برنامه نویسی وب پس از اینکه از مرحله زبان های سمت کاربر عبور می کنند در دو یا بعضا چندراهی انتخاب یک زبان برنامه نویسی سمت سرور به شک و تردید دچار می شوند، محدودیت های زمانی، انرژی و حوصله ای که برای فراگیری یک زبان برنامه نویسی صرف می شود این انتخاب را بیش از پیش حساستر کرده و حتی آینده حرفه ای ما را رقم می زند، اگر در وب عباراتی مانند "PHP یا ASP کدام بهتر است؟!" را جستجو کنید، ملاحظه می کنید که اغلب بین برنامه نویسان در این خصوص که کدام زبان مناسب تر است بحث های طولانی و بعضا متعصبانه رخ داده و هر کسی با دید خود به این قضیه نگاه می کند، اما واقعیت این است که هیچ زبانی کامل و بی نقص نیست و ما هم قصد نداریم PHP را با زبان های دیگر مقایسه کنیم چرا که هیچ محدودیتی از این نظر که بتوانیم از چند زبان برنامه نویسی استفاده کنیم وجود ندارد و در واقع مرزی برایمان به عنوان برنامه نویس نباید ترسیم کنیم، PHP را می آموزیم چون متخصص در امر وب است و تمام نیازهایمان را به خوبی پوشش می دهد، چون ساده و در عین حال قدرتمند، سریع و امن است، رایگان، کم دردسر و در دسترس است، کدنویسی با PHP اغلب به درک بهتر ساختار و پیچیدگی های وب کمک می کند، PHP از شیوه های برنامه نویسی معمولی و شی گرا به خوبی پشتیبانی می کند، برای کار با پایگاه داده اکستنشن های قوی و تخصصی دارد، PHP متن باز (Open-source) است و آنگونه که توسعه محصولات شرکت های بزرگ به پدیدآورنده محدود می شود وابسته به شرکت خاصی نیست، اغلب برنامه های رایگان و پرکاربرد مدیریت محتوای وب (CMS) به زبان PHP نوشته شده اند مانند وردپرس، جوملا، دروپال و...، PHP توسط گروهی حرفه ای از برنامه نویسان وب پشتیبانی می شود، وجود سایت مرجع php.net و جامعه وسیعی از کاربران در سطح وب خود نویدبخش رشد شتابان PHP و رفع نواقص احتمالی نسبت به زبان های مشابه و آینده روشن است، لذا می توان PHP را یکی از مناسبترین گزینه ها برای برنامه نویسی سمت سرور به شمار آورد.

فراگیری PHP، آسان و شیرین!


شاید در نگاه اول آموختن PHP کاری پیچیده به نظر برسد اما اصولا برای یادگیری زبان های برنامه نویسی کافیست ایده های ذهنی مان را خط به خط روی کاغذ بنویسیم و سپس با توجه به دستورالعمل و شیوه نگارش (Syntax) هر زبانی به دنبال راه حل تبدیل و فهماندن ایده به سیستم شویم (تبدیل زبان انسان به زبان ماشین)، این روند در مورد PHP نیز صادق است و خوشبختانه می توان این زبان را جزء آسانترین و شیرین ترین زبان های برنامه نویسی قلمداد کرد که در عین قدرتمندی از سادگی و روانی خاص خود برخوردار است، یادآور می شویم PHP یک زبان برنامه نویسی است و قاعدتا مباحث آن به هم مرتبط و حالت سلسله مراتبی خواهند داشت، لذا اکیدا توصیه می کنیم آموزش ها را گام به گام، آهسته و پیوسته و با تمرین کافی فرا بگیرید تا شیرینی کدنویسی با این زبان را به بهترین نحو تجربه کنید.

برای کدنویسی PHP از چه برنامه ای استفاده کنیم؟


اکنون که با کلیات برنامه نویسی با PHP آشنا شدیم نوبت به ورود عملی به این مسیر است، در اولین گام این سوال مطرح می شود که برای کدنویسی PHP از چه برنامه ای باید استفاده کنیم؟ در پاسخ می توان چند برنامه قوی و کاربردی مختلف را پیشنهاد داد از جمله برنامه قدرتمند و مناسب PhpStorm (توصیه می کنیم برای شروع از این برنامه استفاده کنید)، برنامه شرکت ادوبی با نام Adobe Dreamweaver، برنامه رایگان و متن باز NetBeans IDE - PHP Development با محیط کدنویسی قوی و پشتیبانی مناسب، در کنار این برنامه ها استفاده از ویرایشگرهای به ظاهر ساده مانند ++Notepad برای کار با فایل های PHP ضروری خواهد بود، خوشبختانه تمام موارد نامبرده با یک جستجوی کوتاه در وب در دسترس می باشند.

اجرای کدهای PHP در سیستم عامل


از آنجایی که PHP یک زبان سمت سرور (Server-side) است برای اجرای آن در سیستم خود نیاز به برنامه هایی تحت عنوان سرور مجازی (Localhost) داریم که اغلب به صورت رایگان در دسترس هستند، برای نمونه یکی از بهترین ها در آدرس زیر قابل دریافت است:
wampserver.com
همچنین:
appservnetwork.com
و همچنین:
apachefriends.org
پس از نصب هر یک از برنامه های WampServer، AppServ یا XAMPP اکنون شما قادر به اجرای فایل های PHP بر روی سیستم خودتان خواهید بود (توصیه می کنیم یکی از نسخه های برنامه WampServer را متناسب با سیستم خود انتخاب کرده و نصب نمائید)، پس از نصب و اجرای برنامه به آیکن مربوطه که معمولا در نوار وظیفه سیستم عامل مشخص است دقت نمائید، به طور مثال برنامه WampServer در حالت عادی آیکنی سبزرنگ را نمایش می دهد و این یعنی سرور مجازی شما فعال و آماده به کار است، اکنون برنامه ویرایشگر فایل های PHP خود (به طور مثال PhpStorm) را اجرا و فایلی با نام example.php (فایل فرضی و نام دلخواه) در فولدر www محل نصب سرور مجازی ذخیره نمائید، به فرض اگر برنامه WampServer را در درایو C در فولدر Wamp قرار داده باشید، ریشه سرور مجازی شما به صورت نمونه زیر خواهد بود:
C:\Wamp\www
فایل example.php را درون این فولدر قرار دهید، بهتر است این فایل با نمونه کدهای ساده HTML کدنویسی شده باشد تا در هنگام گرفتن خروجی نتیجه مشخص شود، در نهایت مرورگرتان را اجرا کرده و عبارت http://localhost/example.php را در قسمت نوار آدرس نوشته، دکمه Enter را در صفحه کلید بزنید تا فایل از فولدر www فراخوانی شود، اگر همه چیز صحیح باشد صفحه وب شما در مرورگر نمایش داده خواهد شد درست مانند اینکه یک سایت آنلاین بر روی سرور واقعی برپا کرده باشید (در سرور آنلاین نیز معمولا ریشه سایت فولدر public_html یا www است).

چند مثال ساده با PHP


فلسفه پیدایش PHP (سال 1994 میلادی توسط Rasmus Lerdorf) ایجاد صفحات داینامیک و استفاده از آن در وب بوده (هرچند PHP را می توان به صورت General-purpose استفاده کرد) لذا می توان دستورات این زبان را در کنار کدهای ساده HTML درج و اجرا کرد (در اصطلاح PHP را HTML-embedded می گویند) این قابلیت یکی از نقاط قوت PHP محسوب شده و یادگیری آن را ساده تر می کند، برای شروع و آشنایی بیشتر کدها و مثال هایی ساده از این زبان را مرور می کنیم:
<?php
echo "اولین کد PHP من!";
?>
توضیح:
- کدهای PHP با تگ علامت سوال ، php شروع و با علامت سوال بسته می شوند (شیوه استاندارد).
- دستور echo مقادیر را به خروجی ارسال و در مرورگر چاپ می کند.
حال به کد زیر توجه کنید:
<?php
$text = "اولین کد PHP من!";
echo $text;
?>
پیش نمایش
توضیح:
- در کد بالا عبارت اولین کد PHP من! به جای اینکه مستقیما به echo داده شود، ابتدا به یک متغیر (در آینده در این رابطه مفصل خواهیم گفت) نسبت داده شده و سپس مقادیر متغیر با دستور echo به خروجی داده می شود (علامت $ در PHP نشان دهنده متغیر است).
حال به مثال زیر توجه کنید:
<?php
$num1 = 20;
$num2 = 50;
$total = $num1 + $num2;
echo $total;
?>
پیش نمایش
توضیح:
- کد بالا مقدار متغیر total را به خروجی خواهد داد و متغیر total برابر است با حاصل جمع دو متغیر num1 و num2 که اعدادی به دلخواه به آنها داده ایم.
- ملاحظه می کنید که PHP قدرت محاسبه منطقی دارد و می توان با آن از ترکیب چند مقدار یک مقدار جدید به دست آورد، این مثال ها اولیه و ساده هستند اما ما را با دنیای جدیدی آشنا می کنند که همان داشتن تفکر و هوش منطقی است و رفته رفته ذهنمان را برای نوشتن برنامه های سیستماتیک، طراحی الگوریتم ها و ساختارهای پیچیده تر وب آماده می کنند.
مثالی دیگر:
<?php
$name = 'Webgoo';
if ($name == 'Webgoo'){
    $hi = 'سلام وبگو!';
}
else{
    $hi = 'سلام، لطفا در سایت عضو شوید!';
}
echo $hi;
?>
پیش نمایش
توضیح:
- if (اگر) و else (در غیر اینصورت) برای ایجاد شرط منطقی به کار می روند و علامت == نشان دهنده برابری دو طرف آن است، اینها ابزارهایی است که در دنیای برنامه نویسی به کارمان می آیند و می توانیم به کمک آنها زبان انسان را به زبان ماشین تبدیل کنیم، در تفسیر کد بالا ابتدا متغیر name را با مقادیر از پیش تعریف شده Webgoo مقدار دهی کرده ایم (می تواند هر چیز دیگری باشد)، سپس با شرط if بررسی کرده ایم که اگر متغیر name برابر با مقدار Webgoo باشد، دستور echo داخل شرط if که بین دو علامت {} مشخص است اجرا شود، در غیر اینصورت قسمت else اجرا خواهد شد.
تقریبا هر آنچه که از وب بخواهید با PHP دستیافتنی است، در ادامه مطالب بخش آموزش های مقدماتی PHP در این باره بیشتر خواهیم گفت.
دسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» توابع (Functions) در PHP
» عملگرها (Operators) در PHP
» دستورات شرطی (Conditional Statements) در PHP
» توابع کار با آرایه در PHP - بخش دوم
» حلقه for، foreach و while در PHP
commentنظرات (۱۵۸ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: mahdi
۲۳:۱۶ ۱۴۰۰/۰۲/۲۵
استاد یه تغییراتی توش دادم دقیقا شد همونی که میخواستم
preg_match_all(\'/@if\(((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*)\)/\', $str, $match);
پرانتزی که دور کل گذاشته بودید رو بردم رو تطابق دوم ولی در کل متوجهش نشدم
من استاد چون خودم به خودم یاد میدم یه سری چیزا جامیمونه آموزش دیگران هم که دیگه اصلا هیچی یه چیزی سمبل میکنن فقط، فردا باید بشینم اینو عبارتو کشفش کنم
فقط استاد عزیز الان یه سرچ کردم و به یه چیزایی رسیدم میشه اینا رو یه توضیح بدید خیلی ممنون میشم
?:
?=
?!
?<=
?<!
فکر میکنم اینا رو بفهمم فهمیدن اون عبارت هم ساده میشه
خیلی ممنون استاد عزیز
در ضمن استاد اگه آیکن های شبکه های اجتماعیتونو بزارید تو چشم مثلا بالای صفحه بنظرم خیلی بهتر میشه
چون فقط عاشقای واقعی تا اون پایین میرن :)
پاسخ: 
این کاراکترها برای گروه سازی پیشرفته کاربرد دارند:
?:
یک Non-Capturing گروه می سازد یعنی گروه در نتیجه برگردانده نمی شود و فقط در تطبیق نقش دارد، به فرض:
(test)(?:txt)
برای متن
testtxt1234test
فقط عبارت test اول را به عنوان گروه 1 برمی گرداند.
?=
عبارت دستوری Positive Lookahead یا نگاه مثبت به جلو، وجود یک گروه بلافاصله بعد از گروه اصلی را بررسی می کند اما در نتیجه دخیل نمی شود، به فرض:
(test)(?=txt)
برای متن
testtxt1234test
فقط عبارت test اول را به عنوان گروه 1 برمی گرداند.
?!
عبارت دستوری Negative Lookahead یا نگاه منفی به جلو، برعکس حالت بالا عدم وجود گروه بعد از گروه اصلی را بررسی می کند اما در نتیجه دخیل نمی شود، به فرض:
(test)(?!txt)
برای متن
testtxt1234test
فقط عبارت test دوم را به عنوان گروه 1 برمی گرداند چون بعد از آن txt نیامده.
?<=
حالت معکوس Positive Lookahead است و Positive Lookbehind یا نگاه مثبت به پشت سر گفته می شود.
?<!
حالت معکوس Negative Lookahead است و Negative Lookbehind یا نگاه منفی به پشت سر نامیده می شود.
در مورد آیکن های شبکه های اجتماعی ممنون از راهنمایی های صمیمانه، احتمالا این کار به زودی انجام می شود منتها در کل بیشتر تمرکز روی تولید محتوای حتی الامکان مفید است که انصافا کار سختی است و مرد کهن میطلبد:) محتوای خوب (به شرط ایجاد) مخاطب خاص خودش را دارد اصراری بر جذب دنبال کننده به هر قیمتی نداریم، ما همچنان کار خودمان را به تناوب با سعی بر بهتر شدن و رفع ایرادات انجام میدهیم، یک زمانی سایت وبگو هم اوایل به همین شکل بود و این روال برایمان آشناست.
نویسنده: mahdi
۰۹:۵۵ ۱۴۰۰/۰۲/۲۶
سلام خیلی ممنون استاد عزیز واقعا کمک بزرگی کردید شما یکی از کاراتون اینه که زمان هدیه میدید مثلا اگر شما اینو حل نمیکردید تا دو سه روز درگیرش بودم
خسته نباشی مرد کهن :)
موفق باشی استاد عزیز
پاسخ: 
محبت دارید، در حد خودمان اطلاعاتی داریم و اگر مقدور باشد کمکی می کنیم تا استادی راه درازی در پیش است :)
نویسنده: mahdi
۱۲:۲۶ ۱۴۰۰/۰۲/۲۶
سلام استاد عزیز این سوال آخره
s*@if\((.*?)\): 

@if\(((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*)\)
این دوتا از لحاظ سرعت هیچ فرقی با هم ندارن یعنی طول عبارت در سرعت نقشی داره؟ در کل preg_match از لحاظ سرعت خوبه؟ استاد عزیز پروژمو ول کردم میخوام یکی دو روز برم تو نخ این مساله چون احساس ضعف دارم بهش و کلی آموزشای دیگه هم میخواستم یاد بگیرم ولی دیگه گفتم بسه دیگه هر چی نوشتم برم وارد پروژه عملی شم اونجا همشونو تست کنم
الان بعد از این عبارات منظم دوباره برمیگردم روی همون پروژه و فکرم میکنم استاد خوب دارم پیش میرم و این مسیر بهتر از یادگیری لاراول شد چون خیلی چیزا یاد گرفتم و کلا یه اعتماد به نفس کاذبی دارم الان :) چون سر جمع کمتر از سه ماه برای php وقت گذاشتم ولی شبانه روزی و فکر میکنم یک ماه دیگه وقت بزارم کلا دیگه بسشه ، خیلیا میگفتن php سخته و این حرفا ولی من که دارم یادش میگیرم میبینم واقعا جاوا اسکریپت خیلی پیچیده تر با دنگ و فنگ تر بود یا شایدم چون اولین زبانی بود که یاد میگرفتم اینطور بنظرم میاد
خیلی ممنون استاد عزیز سلامت و موفق باشی
پاسخ: 
در مورد سرعت تست نکرده ایم اما قاعدتا هرچه گروه بیشتری تعریف کنیم تطبیق بیشتری مورد نیاز است و احتمالا زمان بیشتری می برد اما در عمل این تفاوت خیلی خیلی ناچیز است و برنامه را با چالش خاصی مواجه نمی کند، صرف استفاده از توابع preg امر عادی در برنامه نویسی PHP است منتها اینکه چطور با حداقل دستورات به بهینه ترین نتیجه دست پیدا کنیم باید در تمام توابع و دستورات لحاظ شود و مختص preg نیست، تمرکز روی یک مبحث مهم تا تسلط روش خوبی است، در مورد لاراول یا فریم ورک ممکن است سلایق و توصیه افراد متفاوت باشد همین که خودتان از راهی که طی کردید راضی هستید نشانه خوبی است، درک PHP نسبت به خیلی از زبان ها ساده تر و راه حل ها عموما سریعتر دستیافتنی است و همچنان یکی از گزینه های اصلی مناسب برای وب محسوب می شود، جاوا اسکریپت رویداد محور است و درک سیکل اجرای کدهای آن نیاز به نوع نگاه متفاوتی دارد.
نویسنده: mahdi
۱۸:۱۳ ۱۴۰۰/۰۳/۰۱
سلام استاد عزیز وقت بخیر، استاد من از این متد imagecopymerge برای واترمارک استفاده کردم وقتی مثلا یه لوگو رو میخوام بچسبونم رو یه عکس دیگه و اون لوگو بکگراندش ترنس پرنت هست ، بک گراندش رنگ میگیره ، چطوری میشه این رنگو از بین ببرم ؟
از این که استفاده میکنم imagecopy همه چی درسته ولی خب نمیشه لوگو رو ترنسپرنت کنم
خیلی ممنون استاد عزیز موفق باشی
پاسخ: 
برای درج واترمارک شفاف و ترکیب دو تصویر از imagecopy استفاده کنید، این نمونه کد هم تصویر را نمایش و هم تصویر را در دایرکتوری ذخیره می کند:
<?php
$watermark = imagecreatefrompng('watermark.png');
$photo = imagecreatefromjpeg('photo.jpg');
$margin_side = 15;
$margin_bottom = 15;
$photo_width = imagesx($photo);
$photo_height = imagesy($photo);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$destination_x = ($photo_width - $watermark_width - $margin_side);
$destination_y = ($photo_height - $watermark_height - $margin_bottom);
imagecopy($photo, $watermark, $destination_x, $destination_y, 0, 0, $watermark_width, $watermark_height);

/*
//ارسال خروجی
header('Content-type: image/jpeg');
imagejpeg($photo);

//ذخیره فایل جدید
imagejpeg($photo, 'new.jpg');
*/
imagejpeg($photo, 'new.jpg');
imagedestroy($photo);
?>
نویسنده: mahdi
۲۱:۳۲ ۱۴۰۰/۰۳/۰۱
سلام استاد این واترمارک رو شفاف میکنه، میخوام عکسی که مثلا یه لوگو رو بچسبونم روی یه عکس دیگه، لوگو بفرض یه عکس نوشته دوربر هستش مثلا نوشته webgoo و هیچ پس زمینه ای هم نداره میخوام خود این webgoo هم شفاف بشه با imagecopy شفاف نمیشه با imagecopymerge هم رنگ بک گراند میگیره یعنی دیگه webgoo خالی نیست ، دارای یک بکگراند میشه ولی کلا شفاف میشه میخوام این بک گراندو نگیره
راهی هست استاد عزیز ؟
شاید بد توضیح دادم برای عکس ، مثلا دکمه ارسال همین فرم نظرات بک گراندش آبیه ، فرض کنید اون آبی نباشه و کلمه ارسال خودش یه عکس باشه
پاسخ: 
با یک تصویر png با پس زمینه شفاف روش imagecopy را تست کردیم و به صورت شفاف روی یک تصویر jpg در سمت راست پائین نمایش داده شد؟! عبارت watermark هم دقیقا به همین معنی است، ایرادی در تصویر png نیست؟ در فتوشاپ به صورت دستی این کار را انجام دهید شاید مشکلی در کانال آلفا (Alpha Channel) لوگو وجود دارد، اگر ترجیحا با اسکرین شات مشکل را توضیح دهید به درک و حل مسئله کمک می کند.
نویسنده: mahdi
۱۳:۲۴ ۱۴۰۰/۰۳/۰۳
سلام استاد عزیز ، بله استاد اونطوری قرار میگیره وقتی تصویر از قبل مثلا با فتوشاپ شفاف شده باشه ، ولی اگر بخوایم یک عکس که دایره هست و شفاف نیست وقتی بیفته رو عکس ، پشتش یعنی عکس اصلی دیده نمیشه ، بخوایم این دایره رو بعنوان واترمارک قرار بدین چطور باید با php شفاف بشه که پشتش دیده بشه؟ تنها راهش این بود imagecopymerge که میشد آرگومان آخر اوپاسیتی داد ولی در این صورت عکس دایره ای به مربعی تبدیل میشد یعنی دایره ای که گوشه نداشت ، براش گوشه ایجاد میشد ولی شفاف میشد ،
استاد این کد پایین از لحاظ بهینه بودن و سرعت ایرادی نداره ؟
هر کدی مینویسم فقط از بهینه نبودنش میترسم ، این برا همون آپلودر هستش که وقتی فقط یه عکس انتخاب میشه الس اجرا میشه و در حالت معمولی هم ایف اجرا میشه
if(is_array($data["file"]['name'])){
$file = $data["file"];
}else{
foreach($data["file"] as $key => $value)
$file[$key] = [$value];
}
راستی استاد سوالای تلگرامو فقط من درست جواب میدما جایزه نداره؟ :))
خیلی ممنون استاد موفق باشی
پاسخ: 
این حالت مد نظرتان را تست نکرده ایم چون معمولا همان روش png نیازهای مربوط به درج لوگو روی تصاویر را پوشش می دهد و آماده سازی فایل لوگو هم در فتوشاپ ساده تر و حرفه ای تر است، اگر واقعا شکل مد نظرتان لازم است روی راه حلش تمرکز کنیم؟
در مورد بهینه بودن کد اگر اطلاعات خام به صورت آرایه ارسال شده قاعدتا باید با توابع مربوطه بررسی شود و این امر غیرمتداولی نیست، اما اینکه در حلقه چه فعل و انفعالاتی انجام می شود بحث دیگری است، در کل برای اینکه مطمئن شویم کدی بهینه است باید دید آیا الگوریتم کوتاهتر (در بالانس با خوانایی کدها) برای اجرای فرآیند مد نظر وجود دارد؟ آیا روش سریعتر برای اجرای فرآیندها وجود دارد؟ اختلاف سرعت در مقابل خوانایی کدها واقعا ارزشش را دارد؟ اجرای کل برنامه چقدر وابسته به اجرای فرایند این قسمت از کدها است؟ و مواردی از این قبیل.
در تلگرام هم همچنان با 5 یار اوشن همراه هستیم، اوضاع مالی مساعد شد جایزه هم داریم فقط زمانش مشخص نیست :)
نویسنده: mahdi
۱۸:۳۹ ۱۴۰۰/۰۳/۰۳
سلام نه استاد عزیز نیازی نیست چون خودمم فکر میکنم لوگو رو باید از قبل مثلا با فتوشاپ آماده داشت و فقط میخواستم این امکانم به فریمورکم اضافه کنم، الان هم آپلود فایل با امنیت کامل داره هم جداگونه آپلود عکس داره با قابلیت ریسایز و واترمارک کردن تصویر
راجع به جایزه شوخی کردم استاد جدیش نگیرید
استاد عزیز شما در پنلتون از ادیتوری که خودتون نوشتید استفاده میکنید یا کلا از چه ادیتوری استفاده میکنید؟
من رفتم دنبالش دیدم با execcommand میشه راحت نوشتش و نوشتمش ولی بعد فهمیدم خیلی مرورگرا کار نمیکنه و منسوخ شده
فیلم یازده و دوازده یار اوشنم دیدم واقعا قشنگ بود اون صحنه که مارمولک از لای لیزرا رد میشدو خیلی دوست داشتم
خیلی ممنون استاد عزیز موفق باشی
پاسخ: 
بسیار خوب، در سیستم فعلی از نسخه های قدیمی TinyMCE اما در سیستم جدید از ویرایشگر خودمان که مبتنی بر BBCode نوشته شده استفاده می کنیم، برای نوشتن ویرایشگر خیلی زمان صرف می شود و مباحث مورد نیاز در سطح پیشرفته جاوا اسکریپت هستند و گاها خیلی از راه حل ها باید ابتکاری باشند و هیچ سرنخی در وب پیدا نمی کنید، البته این ویرایشگر را هم با هدف شخصی و هم ارائه نسخه رایگان عمومی نوشته ایم و با تکمیل کار در سایت در دسترس خواهد بود.
پیشنهاد می کنیم ویرایشگرهای (WYSIWYG) رایگان را امتحان کنید، اگر هم واقعا نیاز به نوشتن ادیتور شخصی دارید احتمالا خیلی وقتتان را می گیرد.
نویسنده: mahdi
۱۱:۲۶ ۱۴۰۰/۰۳/۰۶
سلام استاد ckeditor بهتره یا TinyMCE؟
من اینو ckeditor دیدم که راست چین چپ چین نداشت بعد استاد عزیز من یه چیزی رو متوجه شدم میخوام ببینم درست میگم برای هر پروژه اکثر موارد پنل ادمین تکراری هستش و فقط مواردی که مخصوص به هر پروژه هست متفاوته منظورم اینه که یه پنل ادمین بنویسیم در همه پروژه ها میشه ازش استفاده کرد و موارد بیشتری به نسبت هر پروژه بهش اضافه میشه؟
مثلا همه وبسایت ها یه تشابهات پایه مثل وبلاگ و ... دارن با هم بعد میره تو تخصص هر وب سایت مثلا سایت آگهی ، فروشگاهی ، ... جداگونه یه مواردی باید اضافه کنیم ؟
خیلی ممنون استاد عزیز
پاسخ: 
ادیتورها را خیلی وقت پیش تست کرده بودیم در کل TinyMCE برای زبان فارسی کاربردی تر بود البته در مقایسه جدید ممکن است شرایط فرق کرده باشد، در مجموع حجم فایل ها و امکان سفارشی سازی امکانات را هم باید لحاظ کرد، در مورد پنل مدیریت بله دقیقا همین طور است، وردپرس و جوملا و... هم بر همین مبنا نوشته شده اند و ماژول محور هستند، البته برای یکسری موارد باید کامپوننت طراحی شود، در کل حالتی که گفتید درست است.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





7 × 9
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form علیرضا
در:
مفید و کاربردی مرسی
۱۴۰۰/۰۳/۳۱

form محمود
در:
سلام مهندس وقت بخیر دوباره به کمک شما نیاز پیدا کردم ، چگونه می توان استایل صوت به یک متن داد. به...
۱۴۰۰/۰۳/۳۰

form پرتو
در:
سلام استاد خسته نباشید قالبم درست شد خیلی ممنون یه خواهش دیگه هم ازتون داشتم اینکه یه بوردر برای تک به تک پست ها جداگانه...
۱۴۰۰/۰۳/۲۴

form بهنیا
در:
سلام خسته نباشید ببخشید چطوری میتونم برای خود وبسایتم یه لینک بسازم؟ کد خاصی داره؟
۱۴۰۰/۰۳/۲۴

form Raha
در:
سلام وقت بخیر چه جوری می تونم از دو تا function باهم استفاده کنم. مثلا میخوام توی مسیج باکس دوتا عدد دلخواه بدم...
۱۴۰۰/۰۳/۲۴

form رها
در:
سلام ممنون میشم اگه راهنماییم کنید من میخوام تو جاوا اسکریپت توی مسیج باکس بصورت اختیاری عدد بدم و جمع و تفریق انجام بشه. ...
۱۴۰۰/۰۳/۲۴

form محمد
در:
با عرض سلام و احترام مجدد پیرو کامنت قبلی که لطف کرده و توجه فرمودید آدرس سایت این هست: از توجه و راهنمایی‌های همیشگی...
۱۴۰۰/۰۳/۲۳

form محمد
در:
سلام وقت بخیر با سپاس از تیم محترم وبگو یک سوال داشتم از خدمتتون در عکسی که در آدرس با...
۱۴۰۰/۰۳/۲۲

form پرتو
در:
با سلام استاد من براتون ایمیل فرستادم لطفا ایمیل خود را چک کنید با تشکر
۱۴۰۰/۰۳/۲۱

form پرتو
در:
سلام خوبید خسته نباشید من یه کد قالبی دارم که میشه براتون بفرستم و شما تغییرش بدین من قالبم رو می خاستم اگه...
۱۴۰۰/۰۳/۲۰

form سید ارمیا حسینی
در:
سلام ببخشید عالی بود اما اگه می خواستم مثلا چیزی رو ایجاد کنم که مثلا کاربر بعد از ورود به صحفه 5 ثانیه بعد وارد...
۱۴۰۰/۰۳/۲۰

form الی
در:
سلام وقت بخیر من میخوام یه سایت طراحی کنم و در قسمت هدر یه گیف بذارم ولی هر کار می کنم گیف نمایش داده...
۱۴۰۰/۰۳/۱۸

form علیرضا حسینی
در:
دمتون گرم خسته نباشید خیلی عالی بود
۱۴۰۰/۰۳/۱۸

form حامدترابی
در:
سلام چند وقته که وبلاگ شهیدحسن ترابی گودرزی باز نمیشه ولی با vpn باز میشه. میشه راهنماییم کنید. ممنون میشم
۱۴۰۰/۰۳/۱۶

form mahdi
در:
سلام استاد این تابع در لوکال هم ایمیل ارسال میکنه هم فایل ضمیمه ، البته زمپ رو یه سری تغییرات باید داد و حساب ایمیل...
۱۴۰۰/۰۳/۱۲

form mahdi
در:
سلام وقت بخیر ، استاد عزیز اگر ما با تابع mail یه تابعی بنویسیم که در لوکال قابلیت ارسال هر نوع ایمیلی رو داشته باشه...
۱۴۰۰/۰۳/۱۲

form masood
در:
سلام وقتتون بخیر ببخشید من یک سوالی دارم اگر بخوایم تنظیماتی که برای id و class در نظر داریم رو تو یه...
۱۴۰۰/۰۳/۱۱

form mahdi
در:
استاد وقتشو دارید امشب ببینیدش مثلا در حد نیم ساعت که وقتتونم گرفته نشه؟
۱۴۰۰/۰۳/۱۰

form mahdi
در:
سلام استاد وقت بخیر،استاد عزیز من یه چارت با جاوااسکریپت نوشتم که سه تا نمودار میلیه ای و خطی و نقطه ای رو در بر...
۱۴۰۰/۰۳/۱۰

form پرتو
در:
وای من نمی تونم توی زمینه طراحی قالب های دیگ فعالیت کنم چون خیلی سختن فک نکنم بتونم اگر جایی می شناسید که قالب های...
۱۴۰۰/۰۳/۰۹

form پرتو
در:
سلام خسته نباشید شرمنده مزاحم شدم دوباره، می خاستم بپرسم می ارزه کسی وبلاگ در مورد قالب سازی بزنه یا اینکه نه نمی ارزه آخه...
۱۴۰۰/۰۳/۰۹

form یاس
در:
سلام میخواستم بدونم چجوری باید فایل متنی HTML دارای هایپرلینک را باز کند و محتوای آنرا بخواند و سپس هایپرلینک های آن را شناسایی کند...
۱۴۰۰/۰۳/۰۸

form sattar
در:
سلام، اون قسمتی که اعتبار سنجی ورود حروف فارسی هست مشکل داره یعنی کاربر رو اجبار به وارد کردن حروف فارسی میکنیم اما اگر مثلا...
۱۴۰۰/۰۳/۰۸

form mahdi
در:
سلام استاد ckeditor بهتره یا TinyMCE؟ من اینو ckeditor دیدم که راست چین چپ چین نداشت بعد استاد عزیز من یه چیزی رو...
۱۴۰۰/۰۳/۰۶

form پرتو
در:
ممنونم از شما که کدش رو دادید فقط یه سوال داشتم و اونم اینکه این کد رو در کدوم قسمت قالب قرار بدم و ایا...
۱۴۰۰/۰۳/۰۴

form mahdi
در:
سلام نه استاد عزیز نیازی نیست چون خودمم فکر میکنم لوگو رو باید از قبل مثلا با فتوشاپ آماده داشت و فقط میخواستم این امکانم...
۱۴۰۰/۰۳/۰۳

form پرتو
در:
سلام خواستم تشکر کنم از کدی که قبلا بهم داده بودید درست شد قالبم واقعا ممنونم ازتون یه چیز دیگه می خاستم بگم اینکه یه...
۱۴۰۰/۰۳/۰۳

form دانیال
در:
باسلام خیلی ممنون بابت مطالب عالیه سایتتون این مطلب هم مثل بقیه مطالب عالی بود
۱۴۰۰/۰۳/۰۳

form mahdi
در:
سلام استاد عزیز ، بله استاد اونطوری قرار میگیره وقتی تصویر از قبل مثلا با فتوشاپ شفاف شده باشه ، ولی اگر بخوایم یک عکس...
۱۴۰۰/۰۳/۰۳
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.