چهارشنبه ۰۸ بهمن ۱۴۰۴

Wednesday, January 28, 2026 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 مطالب بیشتر:
حلقه for، foreach و while در PHP
توابع کار با آرایه در PHP - بخش اول
توابع کار با آرایه در PHP - بخش دوم
توابع (Functions) در PHP
تعریف و استفاده از متغیر (Variable) در PHP
دیدگاه
more ۱۹۴ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
امیرحسین
۱۳:۰۳ ۱۳۹۶/۰۵/۱۰
سلام استاد بابت جوابتون ممنون مفید بود برام تشکر
یه سوال دیگه داشتم اینکه
ob_start
وسطای برنامه هم میتونه بیاد؟ یا حتما باید اولین خط بزاریمش؟ یعنی حتما قبلش نباید خروجی ارسال بشه یا براش مهم نیست؟
اگه براش مهم نباشه که خیلی خوبه اما اگه حتما لازم باشه اولین خط اجرا بشه آنوقت من نیاز دارم که اولین خط نزارمش میخوام چند تا خروجی بفرستم و سپس بافر کنم چند تا تابع رو راه حلش چیه در صورت اجبار به گذاشتن خط اول؟
هدف استفاده از توابعی مانند ob_start معمولا نگهداری هر گونه خروجی قبل از ارسال آن به مرورگر است، به فرض برای کارکرد بی دردسر مواردی مانند تنظیم کوکی یا سربرگ های HTTP و جلوگیری از خطاهایی مانند:
Warning: Cannot modify header information - headers already sent...
لذا در حالت عادی باید این تابع در جایی قرار گیرد که هنوز هیچ خروجی ارسال نشده است (تا حد امکان در بالاترین سطح)، البته می توانید این تابع را پس از ارسال خروجی نیز استفاده کنید اما کارکرد اصلی خود را از دست می دهد و از جایی Buffering می شود که تابع قرار گرفته باشد.
بهترین حالت این است که کدهای بخش HTML تا حد امکان از دستورات PHP جدا باشند، چیزی شبیه سیستم قالب وبلاگ، این موضوع نیاز به آموزش جداگانه و فراگیری نوشتن موتور قالب دارد اما می توانید برای شروع این نمونه را ملاحظه کنید:
http://www.broculos.net/2008/03/how-to-make-simple-html-template-engine.html

https://stackoverflow.com/questions/5540828/how-to-make-a-php-template-engine
امیرحسین
۲۰:۴۶ ۱۳۹۶/۰۵/۰۸
سلام استاد عزیز وقت بخیر
بابت تمام راهنمایی هایی که به بنده کردین ممنون تشکر
سوالی دیگه ای داشتم اینه که چطور میتونم با پی اچ پی یه فایل درحال اپلود مثلا با حجم 500 مگ را درصدشو به کاربر نشون بدم به طوری که هر لحظه اعلام کنه چند درصد فایل رفته و به طور دقیق اعلام کنه مثلا هم که اپلود میکنه از 0 درصد تا 100 درصد نشون بده به کاربر و اگر 100 درصد رسید فایل اپلود میشه بعضی جاها دیدم این اعلام درصد لودینگش الکیه و دقیق نشون نمیده میدونم که باید مسیر اپلود شده یه فایل که همان tmp هستش رو حجمشو بدست بیارم و با حجم اصلی فایل مقایسه کنم که ببینم چند درصدش رفته بنده ریاضیمم خوب هست ولی نمیدونم کجا این محاسبات را انجام بدم ممنون میشم راهنمایی کنید لطف میکنید با تشکر
ایجاد این قابلیت یکی از مشکل سازترین ها در وب است با این حال چند راه حل برای آن وجود دارد:
استفاده از session.upload_progress در PHP نسخه 5.4 و مابعد:
https://www.sitepoint.com/tracking-upload-progress-with-php-and-javascript/
استفاده از PHP در کنار جاوا اسکریپت یا jQuery:
http://phppot.com/jquery/jquery-progress-bar-for-php-ajax-file-upload/

http://talkerscode.com/webtricks/file-upload-progress-bar-using-jquery-and-php.php
نکته: این قابلیت معمولا در لوکال قابل تست نیست و باید حتما به صورت آنلاین فایل را در سرور آپلود کنید.
امیرحسین
۲۱:۲۸ ۱۳۹۶/۰۴/۲۲
سلام
در مورد سوال قبلیم چطور میتوانم آیپی های سرور تلگرام را بررسی کنم و برای آن کد بنویسم قسمت user-agent رو که میتونم انجامش بدم ولی قسمت ip و کار کردن با ip ها کلا مشکله برام اصلا چطور امکان داره ایپی یک فرد با ایپی سرور تلگرام ربط داشته باشه و بشه بررسی روی اون ایپی انجام داد که فهمید از طرف ربات تلگرام وارد سایت شده...
لطفا بگین چطور میتونم در این مورد کار کنم و آموزش های خودمو تقویت کنم و از کجا شروع کنم مثلا میخوام ببینم کاربرو ایپیشو چک کنم ببینم پرداختی که انجام میده مربوط به فعالیت تلگرامی بوده یا خیر از طریق ایپی چکش کرد...
همان طور که قبلا گفتیم بررسی خاصی در خصوص IP های تلگرام صورت نداده ایم، شرکت های بزرگ معمولا از IP های اختصاصی خود استفاده می کنند که محدوده (Range) آنها محدود است، لطفا در خصوص جزئیات بحث IP در وب جستجو کنید، برای چک کردن IP می توانید از کد PHP زیر استفاده کنید:
<?php
function getClientIP() {
$ip = null;
if(isset($_SERVER['HTTP_CLIENT_IP']))
$ip = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ip = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ip = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ip = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = 'UNKNOWN';
return $ip;
}
echo getClientIP();
?>
در این روش باید محدوده IP های تلگرام را داشته باشید، زمانی که برنامه تلگرام واسط بین کاربر و سرور شما باشد، IP تلگرامی به عنوان IP کاربر عمل می کند، به فرض زمانی که کاربر از طریق ربات دستوری می دهد، تلگرام این دستور را به سرور شما ارسال می کند، در کل برای درک بهتر این موارد باید اطلاعات برنامه نویسی PHP خود را از اصول پایه و مقدمات افزایش دهید.
امیرحسین
۲۱:۲۳ ۱۳۹۶/۰۴/۲۲
سلام بابت پاسخ های قبلی تشکر میکنم و ممنون بابت همه چی.
یه سوال دیگه هم داشتم...
میخوام داده های خودمو به صورت جیسون به یه سایت یا صفحه ای ارسال کنم با تابع curl چطور ممکن است... یا راه حل دیگه ای دارد؟ ایا به صورت اژاکس امکان پذیره یا خیر کدوم راه بهتره و نمونه کدشو بنویسید ممنون میشم
لطفا از طرح سوالات غیر مرتبط با موضوع این مطلب خودداری کنید، در صورتی که مطلب مرتبطی برای سوال وجود نداشت از طریق ایمیل (موجود در بخش تماس) موضوع را مطرح نمائید!
در خصوص سوالات مطرح شده به منابع زیر مراجعه کنید:
https://lornajane.net/posts/2011/posting-json-data-with-php-curl

https://stackoverflow.com/questions/24468459/sending-a-json-to-server-and-retrieving-a-json-in-return-without-jquery
امیرحسین
۱۲:۳۸ ۱۳۹۶/۰۴/۲۱
با عرض پوزش میشه لطفا نمونه کدی بدین با این مضمون:
میخوام بررسی کنم کاربر از طریق مرورگر تلگرام بوده یا خیر و ایپی شو که فرمودین بررسی کنم ( - بررسی اطلاعات IP که به سرور درخواست ارسال می کند.)
اگه ببینم مشکلی نداشت و برنامه کاربرو شناسایی نکرد که از طریق تلگرامه بفرستمش به صفحه پرداخت در غیر اینصورت بگم لینکو از ربات تلگرام کپی کنه بعد تو ادرس مرورگر تایپ کنه وارد بشه در هر صورت میخوام چک کنم کاربرو که مورد خاصی برای شک کردن مدیر سایت pay.ir که میگه فعالیت تلگرامی ممنوعه وجود نداشته باشه...
متاسفانه در این خصوص بررسی خاصی صورت نگرفته، IP های سرور تلگرام و اطلاعات اختصاصی که در قسمت User-Agent ممکن است ارسال شود باید مشخص باشند تا بتوان برای آن کد نوشت، این موارد را در اختیار نداریم.
امیرحسین
۱۲:۱۴ ۱۳۹۶/۰۴/۲۱
اطلاعاتی که فرمودین در یوزر ایجنت در وبکیت تلگرام ذخیره میشه رو من با چی میتونم بدست بیارم
<?php
echo $_SERVER["HTTP_USER_AGENT"];
?>
این کد رو نوشتم فقط اطلاعات مرورگر رو میده.
بررسی اطلاعات User-Agent با چه دستوری میتوانم این فرمایش شما رو بررسی کنم یا چه تابعی؟
منظور از اطلاعات واسط کاربری همان مرورگر است، کد شما صحیح است و اگر اطلاعاتی از تلگرام در واسط کاربری وجود داشته باشد در همین قسمت قابل دریافت و تجزیه است، دقت کنید برای تست باید صفحه از مرورگر داخلی خود تلگرام فراخوانی شود.
امیرحسین
۰۸:۲۸ ۱۳۹۶/۰۴/۲۱
بله بسیار درست است تشکر بازم...
سوال دیگه ای داشتم شاید مربوط به اینجا نباشه ولی در کل اگه صلاح دونستین توجه کردین جواب بدین...
من در سایت pay.ir که یک سایت درگاه پرداخت واسط هستش ثبت نام کردم و مبلغ 18 هزار تومن از یه کارتم به کارت دیگر خودم برای تست پرداختی انجام دادم و چند ساعت بعدش در پنل مدیریت سایت هشدار فرستاده که هرگونه پرداخت های تلگرامی ممنوع میباشد و پیگرد قانونی دارد بنده هم تیکت زدم پشتیبانی گفتم جریان از چه قرار است ولی اون گفت شما یه تراکنش با فلان شماره داشتین که ایپی تلگرام خورده است نمیدونم منظورش چی هست و چطور میشود که ایپی تلگرام میخوره اما رباتم در یک هاستی قرار داشته که تلگرام مدام جیسون ارسال میکرده به هاست بنده و در همون هاست نیز تراکنش انجام داده بودم... حالا اگه لطف کنید شما توضیح بدین که چطور میفهمن ایپی تلگرام میخوره و از چه روشی و اگر هاست ربات رو با هاست تراکنش عوض کنم یعنی جدا باشه بازم میفهمن که تراکنش مربوط به فعالیت های رباتی هست ولی اگه هاست تراکنش در لوکال هاست xampp باشه چی؟ ممنون اگر پاسخ بدین ولی اگه منبع خوبی هم به زبان فارسی سراغ دارین که اطلاعاتمو در این زمینه بالا ببرم تقدیم کنید با تشکر.
لطفا سوالاتی که موضوع مرتبطی برای آنها در سایت وجود ندارد را از طریق ایمیل (موجود در بخش تماس) مطرح کنید، در مورد سوال مطرح شده احتمالا تراکنش از بستری مرتبط با تلگرام (از طریق مرورگر تلگرام یا از طریق ارجاع از ربات تلگرام) صورت گرفته در غیر اینصورت راهی برای شناسایی وجود ندارد، به طور مثال اگر در مرورگر مستقیما آدرس صفحه تراکنش را وارد کنید هیچ روشی برای تشخیص مرتبط بودن پرداخت به تلگرام وجود ندارد! در مجموع دو روش برای شناسایی وجود دارد:
- بررسی اطلاعات IP که به سرور درخواست ارسال می کند.
- بررسی اطلاعات User-Agent یا همان واسط کاربری که می تواند مرورگر، برنامه تلگرام و... باشد، اگر صفحه در برنامه تلگرام فراخوانی شده باشد، می توان متوجه شد که تراکنش مرتبط با این برنامه است.
امیرحسین
۰۷:۴۸ ۱۳۹۶/۰۴/۲۰
سلام استاد عزیز.
تشکر بابت جواب های خوب شما.
یه سوال در مورد ایده طراحی بات تلگرام من داشتم که به نظر شما چه باتی بسازیم که بیشترین درآمدی ازش داشته باشیم و تا حالا وجود نداشته بنده هرچی فکر میکنم میبینم از قبل وجود داره به نظر شما در چه موردی مردم پول بیشتری بابت استفاده از بات به سازنده بات تقدیم میکنند؟
پاسخ کوتاهی برای این سوال قابل ارائه نیست، بیشتر یک بحث بازاریابی است تا فنی، فقط می توانیم به طور کلی راهنمایی کنیم، ربات یک امکان بر بستر تلگرام است که قابلیت های خوب و محدودیت های خاص خود را دارد، پس باید در چارچوب این امکانات و محدودیت ها فکر کنیم، ایده چیزی نیست که در یک پاسخ بتوان در مورد آن صحبت کرد، باید روزها و شاید هفته ها با داشتن درک درستی از فضای کسب و کار وب و شبکه های اجتماعی در خصوص چند و چون کار فکر و بحث کرد، گاهی نیز ایده ها تصادفی به ذهن می رسند و بسته به محیط و شرایط اطرافمان خوب یا بد تعریف می شوند، باید ببینید در چه شرایطی قرار دارید، بحث صرف زمان و اینکه فعالیت حرفه ای در وب و شبکه های اجتماعی به عنوان شغل شما است یا یک درآمد جانبی و در اوقات فراغت محسوب می شود در اینکه بر روی چه نوع فعالیت هایی متمرکز شوید موثر است، اینکه بازار هدف شما حضوری و در نزدیکی شما است یا اینکه به اصطلاح مجازی است و گستره وسیعتری دارد خود تعیین کننده است، به طور مثال در فضای انتخابات برخی از برنامه نویسان با توجه به ارتباطات فردی یا داشتن یک گروه قوی یا شرکت معتبر به طراحی ربات برای کاندیداها می پردازند و از این راه کسب درآمد می کنند که یک پروژه کوتاه مدت اما با بازدهی خوب است! پروژه بلند مدت می تواند به فرض ربات مدیر گروه باشد که بر اساس نیاز مدیر، گروه را کنترل کند و... در مجموع و به تجربه سعی نکنید تمام تمرکزتان را روی فعالیت هایی مانند ربات محدود کنید، چون این موارد در هر حال جانبی هستند و خود وابسته به تلگرام و تلگرام تنها یک اپلیکشین کاربردی است و ممکن است زمانی به سرنوشت برنامه های مشابه دچار شود، اما می توانید به عنوان یک مهارت در کنار سایر خدماتتان (مانند خدمات برنامه نویسی و طراحی اپلیکیشن، مدیریت سایت، کانال و...) روی آن تمرکز کرده و در همین چارچوب انتظار داشته باشید.
امیرحسین
۰۰:۳۸ ۱۳۹۶/۰۴/۱۷
سلام استاد عزیز.
من میخوام با پی اچ پی یه تابع ای بهم معرفی کنید که حروف فارسی رو اینکد کنه (برای اینکه بخوام کد شده تو دیتابیس بریزم چون کاراکتر هایی مثل گل و ... داره) بعد بتونم دیکد شده شو از دیتابیس بازیابی کنم تقریبا یه کدی مثل این
<?php
$str = 'سلام';
$str = base64_encode($str);
$str = base64_decode($str);
echo $str;
?>
اما به حروف فارسی ولی این انگلیسی رو پشتیبانی میکنه
تابع base64_encode مشکلی با حروف فارسی ندارد و نمونه کد مثال هم بدون مشکل مقادیر دیکد شده را به فارسی چاپ می کند؟! دقت کنید که برای تست کد باید متاتگ زیر در قسمت تگ head وجود داشته باشد:
<meta charset="utf-8">
امیرحسین
۱۶:۲۰ ۱۳۹۶/۰۴/۱۵
در ضمن کد کپچاتون خرابه وقتی بخوای کپچا رو رفرش کنی خطا هایی در پایین صفحه ظاهر میشه و کپچای جدید نمایش داده نمیشه...
تشکر از اطلاع رسانی، مشکل بر طرف گردید.
امیرحسین
۱۶:۱۸ ۱۳۹۶/۰۴/۱۵
سلام استاد عزیز تشکر بابت سوال قبلیم.
یه سوال دیگه داشتم اینکه من یه کدی نوشتم واسه ربات تلگرام که هر وقت یه جدول اپدیت شد میخوام همان لحظه از اطلاعات اپدیت شده استفاده کنم اما من هر بار اپدیت شدن دوباره مجبورم یه دستور سلکت تکراری دوباره بنویسم و اینکارو چند بار تکرار کردم چند بار سلکت میشه که برنامه یکم کند میشه لطفا این کد رو تصحیح کنید و روند اجرای برنامه رو سریع تر اگر بشه خیلی خوب میشه از روش قبلی خودم که بخوام کدهای سلکت رو تو متغیر بریزم بعد با یه کوئری اجرا کنم اون روش اینجا جواب نمیده چاره کار چیه.
$result = $conn->query("SELECT * FROM tbl_register WHERE admin_id = '$user_id'");
if($result->num_rows){
$conn->query("UPDATE tbl_register SET last_pm = '$text' WHERE admin_id = '$user_id'");
$result = $conn->query("SELECT * FROM tbl_register WHERE admin_id = '$user_id'");
$row = $result->fetch_assoc();
if($row['status_panel'] == 1){
$telegram->sendMessage($user_id,'ok ok');
$conn->query("UPDATE tbl_register SET status_panel = '0' WHERE admin_id = '$user_id'");
$result = $conn->query("SELECT * FROM tbl_register WHERE admin_id = '$user_id'");
$row = $result->fetch_assoc();
}
if($row['status_panel'] == 0){
switch($row['last_pm']){
case 'نمیخوام ربات لینک های گروهم رو پاک کنه':
$conn->query("UPDATE tbl_register SET status_panel = '1' WHERE admin_id = '$user_id'");
$result = $conn->query("SELECT * FROM tbl_register WHERE admin_id = '$user_id'");
اگر عملکرد برنامه شما بر اساس ترتیب شرط های در نظر گرفته شده باشد نمی توانیم پرس و جوها را در یک یا چند مورد خلاصه کنیم، برای بهبود این سورس کد موارد دیگری است که باید رعایت کنید، به طور مثال آنجا که فقط شمارش ملاک است (مانند دستور SELECT اول، از علامت * استفاده نکنید چون تمام ردیفهای اطلاعاتی انتخاب می شوند، از تابع COUNT در MySQL یا از یک ستون به فرض ID که از نوع INT باشد جهت شمارش استفاده کنید، همچنین در مواردی که نتیجه محدود به یک یا چند مورد است بهتر است با LIMIT دامنه پرس و جو را محدود کنید، مثال:
SELECT id FROM tbl_register WHERE admin_id = '$user_id' LIMIT 1
امیرحسین
۰۴:۳۹ ۱۳۹۶/۰۴/۱۲
سلام استاد عزیز
راجع به سوال قبلیم بگم
نه کاملا متوجه منظورم نشدید من میخوام داخل یک متود یک متود دیگه قرار بدم مثلا
$t->getTable("register")->pass;
وصل میشه به جدول رجیستر و فیلد پس رو برمیگردونه که بتونم اکو کنم
$t->getTable("register")->pass;
یا حتی بتونه اونو تغییر بده
$t->getTable("register")->pass = '2323';
چطوری میتونم از یه متد -> یک پیکان دیگری درست کنم به صورت حرفه ای
شی گرائی از اصول خاص خود پیروی می کند، متدها باید به صورت جداگانه در کلاس تعریف شوند، سپس می توانید به صورت نمونه زیر آنها را فراخوانی کنید:
class getStringNum {
private $str;
private $num;

public function __construct() {
$this->str = "";
$this->num = 0;
}

public function addA() {
$this->str .= "A";
$this->num = $this->num + 50;
return $this;
}

public function addB() {
$this->str .= "B";
$this->num = $this->num + 20;
return $this;
}

public function getStr() {
return $this->str;
}

public function getNum($user_num) {
$this->num = $this->num + $user_num;
return $this->num;
}
}
$a = new getStringNum();
echo $a->addA()->addB()->getStr();
echo $a->addA()->addB()->getNum(-50);
امیرحسین
۰۰:۱۹ ۱۳۹۶/۰۴/۱۱
سلام استاد عزیز امیدوارم حالتون خوب باشه ی سوال در مورد شی گرایی داشتم که امیدوارم کمکم کنید من یه کلاس دارم و چند تا متود تعریف کردم این کدها مربوط به ربات تلگرام هستش ولی سوالم به ربات تلگرام ربطی نداره مربوط به شی گرایی در php هستش
<?php

class Telegram {
private $url_obj;

public function sendMessage($user_id, $text, $menu = false) {
$url = API . $this->token . '/sendMessage';
$postfields = array(
'chat_id' => $user_id,
'text' => $text
);
if($menu == true) {
$url = ['url' => $url, 'postfields' => $postfields];
} else {
$url = $this->executeCurl($url, $postfields);
}

$this->url_obj = $url;
}

public function sendMenu($options) {
$url = $this->url_obj['url'];
$postfields = $this->url_obj['postfields'];
$postfields['reply_markup'] = $this->makeMenu($options);
$url = $this->executeCurl($url, $postfields);
return $url;
}

private function makeMenu($options) {
$keyboard = array(
'keyboard' => $options,
'resize_keyboard' => true,//درحالت فعال دکمه ها کوچیک و استاندارد هستند
'one_time_keyboard' => true,//وقتی رو ی دکمه کلیک کرد خود ب خود بسته میشن در حالت فعال
'selective' => true
);
$keyboard = json_encode($keyboard);
return $keyboard;
}

private function executeCurl($url, $post_fields) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, array(
'Content-Type:multipart/form-data'
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$output = curl_exec($ch);
return $output;
}
}

$telegram = new Telegram();
$telegram->sendMessage($chat_id, $response, true);
$telegram->sendMenu($options);
?>
خب متود های اول و دوم مهم هست و متود سوم و چهارم برای درک بیشتر شما از کد هایم میباشد
بعد من متود هامو این مدلی فراخوانی میکنم
$method = $telegram->sendMessage($chat_id,$response,true);
$telegram->sendMenu($method,$options);
اما میخوام بجای اینکه متود "سند منو" یه ورودی به نام متود بگیره میخوام سند منو رو زیر مجموعه ی سند مسیج بزارم یعنی این مدلی تعریف کنم و متود سند منو بجای اینکه دوتا ورودی داشته باشه یدونه ورودی داشته باشه و به صورت زیر تعریف کنم
$method = $telegram->sendMessage($chat_id,$response,true);
$method->sendMenu($options);
حالا شما کدهای کلاس شی من رو ویرایش کنید تا مشکل حل شود ممنون میشم خیلی دنبال این بودم یه عمر تشکر از سایت خوبتون
اگر درست متوجه منظورتان شده باشیم حذف موارد آنطور که مد نظر شما است در شی گرائی شدنی نیست! یکی از شیوه های صحیح در ویرایش کد بالا اعمال شده (کد تست نشده!).
امیرحسین
۲۰:۳۶ ۱۳۹۶/۰۲/۲۵
سلام
من در دستورات htaccess در معماری سه لایه ام وی سی
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
یه همچین دستوراتی نوشتم اما این دستور را نیز اضافه کردم
RewriteRule ^admin/(.+) $1
که جمعا شد
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^admin/(.+) $1
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
اینجا من گفتم اگر در بخش پنل مدیریت مدیر خواست به بخش مدیریت پست ها دسترسی داشته باشه یه همچین دستوری وارد کنه
/admin/post/edit/10 
مثلا میخواد پست 10 رو ویرایش کنه ولی در اصل صفحه اصلیش اینجا هست
post/edit/10
من میخوام قبل هرچیزی admin اضافه بشه که فرضا مدیر فرض کنه همه ی قسمت مدیریت پنل زیر بخشه admin هستش ولی در عمل اینگونه نیس ولی کد های من اینه
RewriteRule ^admin/(.+) $1
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
من اینو نوشتم گفتم اول با ادمین شروع بشه بعد هرچی که کاربر زد مثلا کاربر میزنه
admin/post/delete/10
بفرستتش به
post/delete/10
بعد در رول بعدی گفتم این دستورات به عنوان پارامتر به صفحه ایندکس ارسال بشه ولی درست کار نمیکنه اون بخش پارامتر فرستادن درست کار میکنه ولی رول اول مشکل داره لطفا با آموزش واضح توضیح بدین ممنون میشم
درک دقیق مشکل نیاز به تست دارد، به هر حال شاید باید نشان L به دستورتان اضافه کنید:
RewriteRule ^admin/(.+) $1 [L]
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
mh
۱۶:۳۲ ۱۳۹۵/۱۰/۲۶
سلام
در نرم افزار dreamweaver cc چجوری میشه کدی که با زبان php نوشته ایم را run کرد
برای این کار بهتر است یک برنامه سرور مجازی (مانند WampServer) در سیستم خود نصب کرده و فایل ها را از طریق localhost فراخوانی نمائید.
راهنمایی: پس از نصب برنامه، فایل های PHP را به دایرکتوری www انتقال دهید و از طریق آدرس مرورگر، با درج عبارت http://localhost و سپس مسیر فایل مورد نظر، آنها را فراخوانی کنید.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
9 × 3
20 × 20
=