شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3: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) داریم که اغلب به صورت رایگان در دسترس هستند، برای نمونه یکی از بهترین ها در آدرس زیر قابل دریافت است.
apachefriends.org
همچنین:
wampserver.com
و همچنین:
appservnetwork.com
پس از نصب هر یک از برنامه های XAMPP، WampServer یا AppServ اکنون شما قادر به اجرای فایل های PHP بر روی سیستم خودتان خواهید بود (توصیه می کنیم یکی از نسخه های برنامه XAMPP را متناسب با سیستم خود انتخاب کرده و نصب نمائید)، پس از نصب و اجرای برنامه به آیکن مربوطه که معمولا در نوار وظیفه سیستم عامل مشخص است دقت نمائید به طور مثال برنامه XAMPP پنجره کنترلی برای مشاهده وضعیت سرویس های مورد نیاز (Apache، MySQL و...) را در رابط کاربری خود نمایش می دهد یا برنامه WampServer در حالت عادی آیکنی سبزرنگ را نمایش می دهد و این یعنی سرور مجازی شما فعال و آماده به کار است، اکنون برنامه ویرایشگر فایل های PHP خود (به طور مثال PhpStorm) را اجرا و فایلی با نام example.php (فایل فرضی و نام دلخواه) در فولدر htdocs یا www (با توجه به برنامه مورد استفاده) در محل نصب سرور مجازی ذخیره نمائید، به فرض اگر برنامه XAMPP یا WampServer را در درایو C در فولدرXampp یا Wamp قرار داده باشید ریشه سرور مجازی شما به صورت نمونه های زیر خواهد بود:
C:\Xampp\htdocs
C:\Wamp\www
فایل example.php را درون این فولدر قرار دهید، بهتر است این فایل با نمونه کدهای ساده HTML کدنویسی شده باشد تا در هنگام گرفتن خروجی نتیجه مشخص شود، در نهایت مرورگرتان را اجرا کرده و عبارت http://localhost/example.php را در قسمت نوار آدرس نوشته، دکمه Enter را در صفحه کلید بزنید تا فایل از فولدر htdocs یا 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 مطالب بیشتر:
توابع کار با آرایه در PHP - بخش سوم
آرایه (Array) در برنامه نویسی PHP
عملگرها (Operators) در PHP
دستور switch و case در PHP
توابع کار با آرایه در PHP - بخش دوم
دیدگاه
more ۱۹۴ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
روناک قادری
۰۴:۲۵ ۱۴۰۰/۱۲/۲۵
با سلام و خسته نباشید
ببخشید با php میشه کاری کرد که لینک های یک متن حذف بشن؟ مثلا من یه متن از یه سایت بصورت خودکار توی سایتم ذخیره کردم بعد وقتی متن رو باز می کنم می بینم لینکها هستند مجبور هستم دانه به دانه لینک متن ها رو حذف کنم آیا راهی هست که من با php متنی که میخواد ذخیره بشه رو قبل از ذخیره شدن لینک ها رو پاک کنم؟ چون بعضی وقتها چند تا متن با هم کپی می کنم و خیلی وقتم رو می گیره واسه پاک کردن لینک ها
خیلی ممنون می شم راهنمایی کنید
با تشکر از شما و سایت بسیار خوبتان
برای حذف لینک ها از رشته متنی در PHP می توانید از نمونه کد زیر الگوبرداری کنید:
<?php
$str = 'Start Text <a href="http://example.com">Link</a> End Text.';
$str = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $str);
echo $str;
?>
متن مورد نظر شما باید در متغیر str تنظیم و از فیلتر تابع preg_replace با الگوی نمونه عبور داده شود.
امیرحسین
۰۲:۰۰ ۱۴۰۰/۱۰/۱۴
سلام وقت بخیر بنده یه سوال خیلی مهمی داشتم که اگر کمک کنید و راهکاری به من بدید سوالم اینه که من دارم یه ربات بازی مافیا میسازم واسه مشتری ، بعد اینکه افراد وارد بازی شدند ربات نقش ها رو اعلام میکنه و به مافیاها میگه 30 ثانیه فرصت دارید تا انتخاب کنید که کی رو میخواهید بکشید بعد 30 ثانیه باید دستوراتی که من میخوام اجرا شه حالا زمان ها متفاوته واسه یه کار دیگه 45 ثانیه زمان لازمه همینطور الا اخر ولی همه زمان ها زیر 60 ثانیه هستن واسه یه کاری مثلا 15 ثانیه زمان لازمه خب من این زمان ها رو چطوری میتونم پیاده کنم با کرون جاب که فکر نکنم بشه شما راهکار دیگه ای دارید ؟
اگر برنامه به صورت چند کاربره آنلاین (یا در شبکه) است که معمولا هم به این شکل است باید برنامه نویسی سمت کاربر (مرورگر) و سرور را مرتبط با هم پیاده سازی کنیم، در واقع در سمت کاربر نیاز به زبان هایی مانند JavaScript، Ajax یا WebSocket خواهیم داشت و در سمت سرور به زبان هایی مانند PHP و...، پیاده سازی سیستم زمان بندی هم باید بر همین قاعده اجرا شود، یعنی ساعت نمایشی در سمت سیستم کاربر نمایش داده شود اما کنترل های اصلی در سمت سرور باشند، واقعیت قضیه اینکه طراحی این ساختار نیاز به بررسی تمام جوانب و نیازهای برنامه دارد و باید الگوریتم های حساب شده نوشته شود و در حد پاسخ به یک یادداشت نمی توانیم کل ساختار را ترسیم کنیم، اما پایه کار همان ترکیب دو سمت زبان برنامه نویسی و ایجاد ارتباط بین آنها است، در واقع تمام اپلیکیشن های آنلاین از همین مبنا استفاده می کنند.
mahdi
۲۱:۰۵ ۱۴۰۰/۰۸/۱۷
سلام استاد گرامی ،
از اصول اجرای سریع پرس و جوهای MySQL میشه یه مثال بزنید که منظور رو بفهمم ؟
در ضمن ورد پرس رو بررسی کردم دیدم عکس های شاخص رو ریسایز واقعی نمیکنه و منظورش از کراپ تقریبا همون کاریه که با css میکنیم که الان اسمش یادم نیست ، عکس رو ظاهرا در سایزی که میخوایم برش میدیم ولی همون سایز و حجم رو داره ، در کل وردپرس بامزست مثلا با یه خط کد بخش نظرات خودش درست میشه :)) و باقی بخش ها هم همینطور و ما فقط باید استایل نویسی کنیم ، حالا میفهمم چرا یکی اول که خواستم شروع کنم گفت همه چیزو ول کن برو وردپرس
خیلی ممنون استاد عزیز
اصول پیچیده ای ندارد، به صورت خلاصه باید کاری کنیم که حداقل ردیف ها در هر پرس و جو درگیر شوند که برای این منظور می شود از LIMIT، ایندکس گذاری، از مدار خارج کردن ردیف های غیر ضرور با تعیین ردیف های مورد نیاز در WHERE یا مرتبط کردن ستون ها با AND و... نام برد، در مورد تغییر اندازه این حالت وردپرس همیشه کاربردی نیست چون هدف اصلی از تغییر اندازه کاهش حجم و بارگذاری سریع چندین تصویر بندانگشتی در صفحاتی است که تعداد زیادی فایل تصویر بارگذاری می کنند، خوشبختانه وردپرس متدهای زیادی دارد اما حالت های پیش فرض آن اغلب نیاز به سفارشی سازی دارند.
mahdi
۲۱:۴۹ ۱۴۰۰/۰۸/۱۶
سلام استاد گرامی، اینکه در وردپرس اکثر درخواست های پایگاه داده به جدولی به نام posts هست و حتی برای یه سری داده های اضافه باید به جدول postmeta کوئری بزنیم این از نظر پرفرمنس بد نیست؟ و در کل به نظر شما یه پروژه ای که یه شخص خودش بزنه نمیتونه از نظر پرفرمنس خیلی بهتر از وردپرس باشه؟
با سپاس فراوان استاد بزرگ
وردپرس بی نقص نیست و ساختار آن ممکن است در حد عالی بهینه نباشد، متن باز بودن در عین مزایا می تواند در مواردی موجب پیچیده شدن ساختار و کدنویسی شود که شاید در مورد وردپرس هم صادق باشد، اما صرفا ایجاد درخواست به یک جدول خیلی مشکلی ایجاد نمی کند مهم این است درخواست به سرعت پردازش شود و منابع سرور بی دلیل درگیر نباشند، به فرض استفاده از ساختار مناسب پایگاه داده و در نظر گرفتن امکاناتی مانند ایندکس گذاری حیاتی است، اگر اصول اجرای سریع پرس و جوهای MySQL را بشناسیم قطعا ایجاد سیستم بهینه تر از وردپرس کاملا ممکن است.
mahdi
۱۲:۱۵ ۱۴۰۰/۰۸/۱۵
سلام استاد گرامی، خودم دوتا آپلودر نوشتم که یکیش برای هر نوع فایلی هست و یکیش با همین کتابخانه gd که تنها برای عکس ها هست و میشه درش هم ریسایز کرد هم واترمارک پرسشم اینه که اگر دوتا عکس ذخیره کنیم ، یکی کوچک یکی هم معمولی ، این بد نمیشه برای مثلا استفاده زیاد از حجم هاست؟ و اینکه این روش ذخیره دوتا عکس مرسومه؟ شما که خودتو رو راحت کردی کلا بیخیال عکسی :) همچنین استاد قرار شد htaccess رو بررسی کنید ببینیم ایرادش کجاست ولی یادمون رفت ، اگر وقتشو داشتید بگید که من بهتون پیام بدم بیچارم کرده بخدا نمیدونم چکارش کنم
با سپاس فراوان استاد گرامی
ساخت تصاویر بندانگشتی روش مرسومی است، چون اندازه تصاویر معمولا کوچک است حجم زیادی هم ندارند، ما نیازی به ابعاد جداگانه نداشتیم وگرنه همین روش فعلا به نظر بهینه ترین حالت است، گاهی نباید زیاد سخت گرفت :)
در مورد htaccess شاید دوشنبه یا سه شنبه ساعت 6 الی 8، در صورت آنلاین بودن پیام ارسال کنید اگر مقدور بود حتما.
mahdi
۲۰:۳۰ ۱۴۰۰/۰۸/۱۴
سلام استاد گرامی ، استاد این خوبه که با ذخیره کردن هر پست ، همراه با عکس شاخصش یه کپی کوچک شده از همون عکس شاخص هم آپلود کنم و مثلا زمانیکه میخوام یه لیست نمایشی از پست ها داشته باشم اون عکس کوچکه رو نمایش بدم و زمانیکه میریم به صفحه پست اون عکس بزرگه رو ؟
جستجو کردم و دیدم که با کتابخانه gd نمیشه زمان نمایش یه عکس رو کراپ کرد ، میشه ولی باید هدر ارسال کرد و منم میخوام وسط html این کارو کنم که خطا میده راهی هست که دوتا عکس ، یه کوچک یه بزرگ ، آپلود نکنم و همون لحظه نمایش عکس رو کراپ کنمو نمایش بدم ؟ و کلا این کارایی که گفتم نیاز هست ؟
با سپاس فراوان استاد گرامی
به نظر ساخت فایل حین نمایش صفحه روش جالبی نباشد چون بارگذاری اطلاعات معطل برش و ذخیره سازی کامل فایل است، راه بهینه برای مدیریت نمایش تصاویر بندانگشتی (Thumbnail) می تواند آماده سازی از قبل یعنی ذخیره دو ابعاد متفاوت از تصویر (روشی که اشاره کرده اید) باشد، برای این کار هنگام آپلود می توانیم از توابع کتابخانه GD مثل imagecreatefromjpeg استفاده کنیم که با جستجو در وب احتمالا کدهای آماده آن در دسترس باشند.
mahdi
۱۴:۵۰ ۱۴۰۰/۰۸/۱۲
سلام وقت بخیر، استاد عزیز میشه همزمان دو تا ورژن php رو روی زمپ داشت و سریع سوئیچ کرد بینشون ؟ چون وردپرس فارسی رو نصب کردم دیدم با ورژن 8 کار نمیکنه
خیلی ممنون
متاسفانه از XAMPP استفاده نمی کنیم اما طبق گفته های سایت apachefriends.org ظاهرا آخرین نسخه XAMPP از چند نسخه مختلف PHP پشتیبانی می کند، در نسخه های جدید WampServer هم به صورت پیش فرض چند نسخه از PHP نصب و قابل سوئیج است، در تئوری امکان نصب نسخه های مختلف برای برنامه های سرور مجازی جود دارد اما معمولا نصب به صورت دستی خیلی کاربردی و عملی نیست.
mahdi
۱۷:۲۴ ۱۴۰۰/۰۸/۰۶
استاد localhost همون ارور 500 رو میده ولی صفحه های دیگه که برای پروژه من هستن درست کار میکنن و اروری ندارن ، فکر میکنم بخاطر اینه که من به این شکل
http://localhost:8000/
استفاده میکنم و از لوکال هاست وارد آدرسهام نمیشم ، پس استاد من اینو بیخیال میشم وقتی تموم شد خواستید کلشو بررسی کنید این مساله رو هم ببینید مشکلش چیه
خیلی ممنون استاد عزیز
به نظر پورت اتصال تاثیری در این مورد نداشته باشد، به هر صورت سر فرصت بررسی می کنیم.
mahdi
۱۰:۲۵ ۱۴۰۰/۰۸/۰۶
سلام استاد عزیز
همه این کارا رو کردم ولی کلا وقتی در تایتل آدرسبار بصورت دستی نقطه میزارم بعنوان فایل در نظرش میگیره و اصلا میره داخل کنترولر که اون تبدیلاتی که گفتین انجام بشه و این پیغام رو میده
Not Found
The requested resource /post/11/%D9%86%D9%88.%D8%B4%D8%AA%D9%87-%DB%8C%DA%A9 was not found on this server.
کلا میره تو یه صفحه از خود سرور php که منم طراحیش نکردم در ضمن من فهمیدم که فایل htaccess من اصلا اجرا نمیشه ؟ اینو چکارش کنم دیگه :)) بار اولم دربارش یه مطالعه سرسری داشتم که این کدارو گذاشتم داخلش
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
اگر یه منبع خوبم برای یادگیری htaccess میشناسید بگید که برم بخونمش البته فارسی چون کلا این htaccess یجوری من سایتای لاتین رو میخونم انگار به زبان دوران شکسپیر دارن حرف میزنن ، و استاد با یه منبع خوب ، یادگیریش فکر میکنم بیشتر از یه روز طول نکشه درسته؟ یعنی در حد یه مطالعه باشه
اگر در لوکال تست می کنید اول باید ببینیم htaccess فعال است یا خیر، برای این کار در دایرکتوری www یک فایل htaccess بسازید و کاراکترهای نامفهوم در آن درج کنید، آدرس localhost را در مرورگر فراخوانی نمایید، اگر htaccess فعال باشد معمولا خطای 500 Internal Server Error نمایش داده می شود، در مورد کدها و مشکلات نیاز به بررسی با TeamViewer دارد که می توانید هماهنگی کنید، متاسفانه مرجع کاملی سراغ نداریم باید قسمت به قسمت (به خصوص در مورد URL Rewrite) از سراسر وب جستجو کنید، آشنایی با Regular Expression هم ضروری است.
mahdi
۱۷:۵۷ ۱۴۰۰/۰۸/۰۵
استاد من بدون آیدی گذاشتم یعنی فقط عنوان در آدرسبار هست و همون عنوان رو میگیرم و با همون رکورد رو برمیگردونم ، البته برا آیدی هم فقط باید یک پارامتر دیگه اضافه کنم ولی میخوام بدونم بدون آیدی چطور اون ریدایرکت رو انجام بدم ، تو خود عنوان اگر نقطه باشه مهم نیست چون با urlencode درست میشه ولی اگه بصورت دستی یه نقطه در آدرسبار قرار بدیم فکر کنم بعنوان فایل در نظر میگیره و پیام میده همچین چیزی در سرور موجود نیست، حالا کلا بنظرتون از همون آیدی استفاده کنم یا بدون آیدی به این شکلی که گفتم هم راهی هست؟
اون چیزایی که میخواستم رو نوشتم البته یکم دیر شد چون نتونستم کل وقتمو بزارم براش و فقط مونده سمت کاربرش رو بنویسم ولی خب طراحی درست حسابی نمیکنم فقط میخوام یه نمونه اولیه داشته باشم که اجرا شده باشه ، تموم که شد پیام میدم اگر وقت داشتید ببینید و ایراداتشو بگیرید
خیلی ممنون استاد عزیز
در تئوری این شکل آدرس ها را می توانیم با htaccess شناسایی و دوباره نویسی کنیم:
RewriteRule ^(.+)\.$ $1 [R=301,QSA,L]
منتها بدون ID کار سخت می شود و تعداد خطاهای 404 بیشتری خواهیم داشت چون خیلی از ربات ها آدرس های ناقص از سرور درخواست می کنند یا خیلی از افراد آدرس های URL را ناقص کپی می کنند و مواردی از این دست، خیلی از سایت ها آی دی را در انتهای قسمت Title هم اضافه می کنند.
برای بررسی چشم آماده شد پیام ارسال کنید تا بررسی کنیم.
mahdi
۱۲:۰۸ ۱۴۰۰/۰۸/۰۵
سلام استاد عزیز
استاد نقطه رو به چه شکلی از یوآرال پاک کنیم؟ مثلا در همین صفحه وقتی یه نقطه میزاریم وسط این آموزش-برنامه-نویسی-وب خودکار حذف میشه ، این به چه شکلی هست؟ و استاد من از یوآرال انکد استفاده میکنم و بین واژه های فارسی + میزاره ، برای شما چطور دش میزاره؟ و اینکه از قبل هم وقتی یه پست یا یه دسته بندی و هرچیزی که ساخته میشه و قراره مثلا عنوانش در یوآرال نمایش داده بشه ، باید نقطه ها رو ازش پاک سازی کنیم؟
برای ایجاد آدرس های URL مناسب سئو ابتدا باید یک تابع داشته باشیم که آدرس به اصطلاح تمیز یا Clean ایجاد کند، ورودی این تابع همان تیتر مطالب است و تمام کاراکترها برای ورودی مجاز هستند، اما در خروجی باید استاندارد خاص خودمان را داشته باشیم، به فرض کاراکترهای غیر عدد و حروف حذف می شوند، فاصله ها تبدیل به - می شوند و در نهایت حروف فارسی با تابع rawurlencode تبدیل به استاندارد RFC 3986 می شوند، اما در مورد تبدیل و انتقال خودکار، این حالت مربوط به مرحله بررسی آدرس درخواستی کاربر است، در این مرحله آدرس اصلی صفحه از پارامتر ID دریافت می شود اما علاوه بر آی دی بخش Title آدرس هم برای سئو مهم است و باید یکتا باشد، به همین منظور مقدار عنوان ارسال شده و مقدار عنوان موجود در دیتابیس از فیلتر تابع Clean عبور و در نهایت تطبیق داده می شوند، اگر یکسان نباشند کاربر با ریدایرکت 301 به آدرس صحیح منتقل می شود.
mahdi
۰۹:۵۶ ۱۴۰۰/۰۸/۰۴
سلام استاد گرامی روز بخیر
استاد به چه نحوی میشه کد درون کامنت رو تشخیص داد و مثل کاری که شما انجام دادید اون کد رو متمایز کرد و درون یه بلاک جدا گذاشت و در کامنت ها نمایش داد ، اگر کدش رو بزارید استفاده کنیم خیلی ممنون میشم
موفق باشی استاد عزیز
عملا راهی برای تشخیص کد بودن یا نبودن عبارات وجود ندارد، ما برای این کار از BBCode در ادیتور استفاده می کنیم، یعنی یادداشت ها ویرایش و قسمت هایی که کد دارند به صورت نمونه زیر در دیتابیس ذخیره می شوند (فاصله ها برای تبدیل نشدن تگ است):
[ code ]<?php ?>[/ code ]
و در هنگام چاپ خروجی از فیلتر تابع str_replace عبور می کنند تا در نهایت تگ های اختصاصی BBCode به کد HTML تبدیل شوند.
۱۸:۰۶ ۱۴۰۰/۰۷/۱۸
سلام دوباره ما سایتمون چندین بخش داره
مطالب علمی
پزشکی
تفریحی
فروشگاهی
که با کدی که دادم بالا عنوان تمام صفحات به صورت
مشخصات قیمت و خرید خانه
مشخصات قیمت و خرید اخبار پزشکی
مشخصات قیمت و خرید جوک
√ مشخصات قیمت و خرید کفش مردانه آدیداس
و ... در میاد
که این استاندارد نیست یعنی نباید خانه بشه = مشخصات قیمت و خرید خانه یا دیگر مطالب ما فقط میخواهیم یک بخش اونم فروشگاه اینترنتی عنوان تمام مطالبش تغییر کنه مثلآ اگه محصول کفش بود
بشه مشخصات قیمت و خرید کفش این کد کلی هست که تونستم بنویسم عمل نکرد
<?php if( is_category( 'shop' ) ) : ?>
<h1><title><?php wp_title( ); ?></title></h1>
<?php else : ?>
<h1><title>مشخصات قیمت و خرید <?php the_title(); ?></title></h1>
<?php endif; ?>
تعریف اولیه دستورات مد نظر بنده اگر دسته بندی فروشگاه بود اونوقت به عنوان متن مورد نظر اضافه بشه در غیر این صورت دیگر دسته بندی ها، عنوان پیش فرض باقی بماند
با دستوراتی که در پاسخ قبل گفتیم می توانید همین کار را انجام دهید، در فایل header.php در پوشه مربوط به Template های وردپرس (به فرض دایرکتوری wp-content\themes\twentytwentyone) نمونه دستور زیر را درج کنید:
<?php 
if(!is_home() && get_the_category()[0]->cat_name == 'shop') {
echo '<h1><title>مشخصات قیمت و خرید ' . the_title() . '</title></h1>';
} else {
echo the_title();
}
?>
در اینجا کد بررسی می کند اگر صفحه اصلی سایت نبود و دسته بندی پست برابر عبارت shop بود، دستورات بین {} اجرا شوند.
نکته مهم اینکه دایرکتوری قالب و عنوان دسته بندی باید درست باشند، در این نمونه کد قالب پیش فرض twentytwentyone و دسته بندی فرضی shop استفاده شده است، توضیحات مربوط به wp_head را هم در پاسخ قبل مد نظر داشته باشید.
عباس
۰۲:۱۳ ۱۴۰۰/۰۷/۱۸
سلام بله وردپرس هست الان بنده با این کد
<html>
<h1><title>مشخصات قیمت و خرید <?php the_title(); ?></title></h1>
</html>
عنوان تمام مطالب را تغییر دادم در بخش header.php میخوام این کد فقط تو بخش فروشگاهم اعمال بشه نه در کل مطالبم مثلآ الان صفحه اصلی که در حالت عادی باید باشه خانه با کد بالا میشه مشخصات قیمت و خرید خانه افزونه استفاده نمی کنم کلآ
با توجه به مرجع توابع وردپرس می توانیم از نمونه کد زیر برای بررسی عنوان دسته بندی در پست ها استفاده کنیم:
<?php 
if(!is_home() && get_the_category()[0]->cat_name == 'shop') {

} else {

}
?>
البته ممکن است وردپرس به صورت پیش فرض از توابع کلی دیگری مانند wp_head برای ایجاد خروجی سربرگ استفاده کند که در اینصورت باید wp_head را از فایل header.php قالب سایت حذف و آیتم های مد نظر در header صفحه را مورد به مورد (مشابه title) تعریف کنیم.
https://developer.wordpress.org/reference/functions/
عباس
۰۵:۰۸ ۱۴۰۰/۰۷/۱۷
سلام یه سوال من یه کد نوشتم برای تغییر عنوان مطالبی که قبلا ارسال کردم رو سایتم (اضافه کردن متن به ابتدای عنوان تمام پست های یک دسته بندی) در واقع میخوام عنوان مطالب تغییر کنه نه دسته بندی
<html>
if ( is_category( 'shop' ) ) {
echo '<h1><title>مشخصات قیمت و خرید <?php the_title(); ?></title></h1>';
}
else {
echo '<h1><title><?php the_title(); ?></title></h1>';
}
</html>
من میخوام تمام عنوان هایی که در بخش فروشگاهم دارم ابتداش عبارت "" اضافه کردم هیچ افزونه ی هم برای بخش فروشگاه استفاده نمی کنم
از وردپرس استفاده می کنید؟ این کد عمل نمی کند؟ لطفا جزئیات را دقیق مشخص کنید.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
2 × 8
20 × 20
=