جلوگیری از محاسبه رشته متنی در PHP

جلوگیری از محاسبه رشته متنی در PHP

در PHP، وقتی مقدار عددی درون رشته (string) باشد — مثل "۱۰" یا "۵ apples" — و در یک عمل ریاضی استفاده شود، PHP به‌صورت پیش‌فرض آن را به عدد تبدیل (type juggling) می‌کند. مثلاً:

$a = "10";
$b = 5;
echo $a + $b; // خروجی: ۱۵

🔹 این رفتار خودکار گاهی باعث بروز خطا یا نتیجه غیرمنتظره می‌شود.
برای جلوگیری از محاسبه خودکار رشته‌های عددی در عملیات ریاضی، چند روش وجود دارد:


✅ روش ۱: استفاده از declare(strict_types=1);

اگر در بالای فایل بنویسی:

declare(strict_types=1);

در این صورت، اگر تابعی عدد بخواهد ولی رشته بدهی، خطای TypeError می‌گیری.
اما توجه کن: این فقط در تابع‌هایی که نوع ورودی‌شان مشخص شده کار می‌کند، نه در تمام عملیات ریاضی ساده.

مثلاً:

declare(strict_types=1);

function add(int $a, int $b): int {
    return $a + $b;
}

echo add("10", 5); // خطا می‌دهد


✅ روش ۲: بررسی نوع داده با is_numeric() یا is_int()

قبل از انجام عمل ریاضی، نوع متغیر را بررسی کن:

$a = "10a";

if (is_numeric($a)) {
    echo $a + 5;
} else {
    echo "خطا: مقدار عددی نیست!";
}

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


✅ روش ۳: تبدیل صریح (type casting) و بررسی نتیجه

اگر بخواهی مطمئن شوی فقط در صورت درست بودن تبدیل انجام شود:

$a = "10a";
if ((string)(int)$a === $a) {
    echo $a + 5;
} else {
    echo "خطا: مقدار عددی معتبر نیست.";
}


✅ روش ۴: استفاده از توابع اعتبارسنجی فیلترها

تابع filter_var() نیز می‌تواند برای بررسی دقیق‌تر استفاده شود:

$a = "10a";

if (filter_var($a, FILTER_VALIDATE_INT) !== false) {
    echo $a + 5;
} else {
    echo "خطا: فقط عدد صحیح مجاز است!";
}


🔒 خلاصه کاربردی:

هدفدستور مناسب
جلوگیری از محاسبه رشته‌ها در تابع‌هاdeclare(strict_types=1)
بررسی قبل از محاسبهis_numeric() یا filter_var()
کنترل دستی نوعتبدیل صریح و مقایسه

آشنایی با متغیرها در PHP

آشنایی با متغیرها در PHP

– variables متغیرها خانه هایی از حافظه هستند که ما به آنها اسم میدهیم و برای آنها مقدار تعیین میکنیم

– مقدار متغیر همانطور که از نامش مشخص هست در طول برنامه می تواند تغییر کند

## نحوه ساختن متغیر

– در زبان PHP برای تعریف متغیر از علامت دلار `$` استفاده می کنیم

– همشیه قبل از نام متغیر بدون فاصله باید دلار باشد

“`php

$x = 5;

$y = “Ali”;

“`

**به مثال بالا دقت کنید برای مقدار دهی به متغیر ها از علامت انتساب `=` استفاده شده است**

– برای مقدار دادن متنی باید از کوتیشن `”` در ابتدا و انتهای متن استفاده شود

## نامگذاری متغیرها

– متغیرها میتوانند نام های خیلی کوتاه مثل x , y  داشته باشند یا بهتر این است بنا به استفاده متغیر نام آن توضیح دهنده استفاده آن باشد مثلا برای متغیر سن افراد از نام متغیر `age$` استفاده شود

### قواعد نام گذاری

– نام متغیر می تواند با حروف کوچک یا بزرگ شروع شود

– در نام متغیر تنها کاراکتری که میتواند وجود داشته باشد آندرلاین `_` است مثل `my_class_nember$`

– نام متغیر میتواند با آندرلاین `_` شروع شود ولی ما به طور معمول این کار را نمی کنیم. چون متغیرهایی از قبل تعریف شده در زبان PHP وجود دارند که نمی خواهیم متغیر ما با آنها اشتباه گرفته شود. مثال `GET_$`

– نام متغیر میتواند دارای عدد باشد ولی نباید با عدد شروع شود به مثال زیر دقت کنید

“`php

$name1 = “ali” ;

$name2 = “hasan” ;

echo $name1 . ” ” . $name2 ;

$adad1 = 12 ;

$adad2 = 46 ;

echo $adad1 . ” ” . $adad2 ;

$25name = “tom” ; // این نام متغیر اشتباه است چرا؟

“`

**<mark>نکته: نام همه متغیرها به حروف کوچک و بزرگ حساس است!</mark>**

– به مثال زیر نگاه کنید؛ فقط عبارت اول مقدار متغیر `color$` را نمایش می‌دهد! دلیل این امر این است که `color$` و `COLOR$` و `coLOR$` به عنوان سه متغیر متفاوت در نظر گرفته می‌شوند

“`php

$color = “red”;

echo “My car is ” . $color . “<br>”;

echo “My house is ” . $COLOR . “<br>”;

echo “My boat is ” . $coLOR . “<br>”;

“`

## خروچی گرفتن از متغیرها

– با استفاده از دستور `echo` میتوان مقدار متغیر را در خروجی نمایش داد

– در کنار عبارت های متنی می توان مقدار متغیر را نمایش داد به شرطی که از دابل کوتیشن استفاده شود

“`php

$class_number = 304 ;

// این خط برای نمایش مقدار متغیر همراه با متن است

echo “من در کلاس شماره $class_number درس میخوانم” ;

echo “<br><br>”;  // فقط برای ایجاد خط جدید

// خط زیر در خروجی درست نمایش داده نمی شود

// چون از سینگل کوتیشن استفاده شده

echo ‘من در کلاس شماره $class_number درس میخوانم’ ;

“`

– میتوان از نقطه `.` هم برای نمایش مقدار چند متغیر در کنار هم در یک دستور `echo` استفاده کرد

“`php

$name = “محمدرضا شجریان” ;

$year_of_death = 1399 ;

echo ” استاد موسیقی ” . $name . ” خواننده بزرگ سبک سنتی در سال  ” . $year_of_death . ” از دنیا رفت ” ;

“`

– با استفاده از دستور `echo` می توان حاصل محاسبات مقدار متغیر ها را در خروجی نمایش داد

“`php

$x = 5;

$y = 4;

echo $x + $y;

“`

## خاصیت Loosely Typed Language

– در مثال های بالا دقت کنید که ما نوع مقدار متغیر را مشخص نکردیم. زبان PHP خودش با هوشمندی نوع آن را تشخصی میدهد، اما در بسیاری از زبان ها لازم هست حتما نوع مقدار مشخص شود

– این امکان وجود دارد که در طول برنامه نوع یک متغیر هم تغییر کند

“`php

$x = 5;      // $x is an integer

$y = “John”; // $y is a string

echo $x;

echo $y;

“`

– مقدار دهی چندتایی همزمان: شما میتوانید در تعریف چند متغیر همزمان همه آنها را یک مقدار بدهد

“`php

$x = $y = $z = “Fruit”;

“`

**درباره دامنه متغیرها Variables Scope مطالبی هست بخاطر راحتی کار برای دانش آموزان اینجا مطرح نمیشود در درس های آینده توابع ارائه خواهد شد**

دستور زبان PHP

دستور زبان PHP

https://github.com/secad135/php1404/blob/main/01_basics/01_syntax.rtl.md
#جزوه دستور زبان PHP

– یک اسکریپت PHP روی سرور اجرا می‌شود و نتیجه HTML ساده به مرورگر ارسال می‌شود
– یک اسکریپت PHP می‌تواند در هر جایی از سند قرار گیرد.
– یک اسکریپت PHP با php?> شروع می‌شود و با <? پایان می‌یابد

PHP

<?php
// کدهای PHP
?>

– اگر در یک اسکریپت هیچ کد دیگری (html, css, javascript) نباشد میتوان تگ پایانی <? را نگذاشت
– پسوند پیش فرض فایل های این زبان php. است
– یک فایل پی اچ پی معمولا شامل تگ های HTML و مقداری کد اسکریپت PHP است
– در زیر، مثالی از یک فایل PHP ساده داریم که دارای یک اسکریپت PHP است که از تابع داخلی echo برای نمایش متن "Hello World!" در یک صفحه وب استفاده می‌کند

PHP

<!DOCTYPE html>
<html>
<body>

<h1>My first PHP page</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

نکته: دستورات PHP با علامت سمی کالن ; به پایان می رسند
– نکته
نکته: کدهای html در فایل PHP نوشته شده

## حساسیت به کوچک یا بزرگ بودن حروف در PHP

– کلمات کلیدی دستورات مثل echo میتوانند با حروف کوچک یا بزرگ نوشته شوند و همچنین کلاس ها و توابع و توابع تعریف شده توسط کاربر به کوچک یا بزرگ بودن حروف حساس نیستند
– اما برای خوانایی کدها بهتر است با حروف کوچک تایپ کنیم
– در مثال زیر هر سه دستور echo برابر و مجاز هستند

PHP

<!DOCTYPE html>
<html>
<body>

<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?>

</body>
</html>

## توضیحات

– یک توضیح در کدها در برنامه خروجی اجرا نمی شود. هدف آن خوانده شدن توسط کسی است که کدها را می بیند
– اهداف نوشتن توضیحات
  – دیگران کدهای شما را درک کنند
  – برنامه نویس برای خودش در آینده یادآوری قرار دهد چکار کرده است
  – بخشی از کد را برای آزمایش یا نیاز دیگری در خروجی بی اثر کنیم

– به دو روش می توان توضیحات نوشت

### توضیحات یک خطی

– توضیحات یک خطی در ابتدای خط از دو علامت اسلش // استفاده می کنیم

PHP

<?php
// یک توضیح یک خطی
// echo "Hello world" ;
// دستور بالا در خروجی اجرا نمی شود چرا؟
?>

### توضیحات چند خطی

– توضیحات چند خطی با */ شروع و با /* تمام می شوند
– هر متنی بین این دو علامت نادیده گرفته می شوند

PHP

/*
The next statement will
print a welcome message
*/
echo "Welcome Home!";

– به این شکل می توان یک قطعه کد را در وسط یک خط دستور تبدیل به توضیحات کرد

PHP

$x = 5 /* + 15 */ + 5;
echo $x;

کنجکاوی: گیت‌هاب GitHub و ریپازیتوری Repository چیست؟

گیت‌هاب (GitHub) چیست؟

گیت‌هاب یک پلتفرم آنلاین است که به برنامه‌نویس‌ها و تیم‌های توسعه کمک می‌کند تا کدهای خود را ذخیره، مدیریت و با دیگران به اشتراک بگذارند. این سرویس بر پایه‌ی Git (یک سیستم کنترل نسخه) ساخته شده و امکان همکاری همزمان چند نفر روی یک پروژه، پیگیری تغییرات، و مدیریت نسخه‌های مختلف کد را فراهم می‌کند.


ریپازیتوری (Repository) چیست؟

ریپازیتوری یا به اختصار “ریپو” یک فضای ذخیره‌سازی برای کدها، فایل‌ها و مستندات یک پروژه است.
هر ریپازیتوری معمولاً شامل موارد زیر است:

  • کدهای پروژه
  • تاریخچه تغییرات (Commit ها)
  • شاخه‌ها (Branches) برای توسعه موازی
  • مستندات و فایل‌های راهنما (مانند README.md)

به زبان ساده:

  • GitHub مثل یک شبکه اجتماعی برای برنامه‌نویس‌هاست.
  • Repository مثل یک پوشه‌ی پروژه است که همه کدها و تغییرات در آن نگهداری می‌شوند.

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

این ریپازیتوری شامل کدهای آموزشی درس PHP و MySQL است که در طول کلاس ارائه شده‌اند.
تمام نمونه‌کدهایی که مدرس در جلسات مختلف نوشته، در اینجا قرار داده شده‌اند تا دانشجویان بتوانند آن‌ها را مرور و استفاده کنند.

همچنین کدهایی که دانشجویان در طول کلاس نوشته‌اند، در پوشه‌ای با نام class/ در همین ریپازیتوری ذخیره شده است.
بنابراین علاوه بر دسترسی به نمونه‌های مدرس، می‌توانید نمونه‌کارهای خود و همکلاسی‌هایتان را نیز مشاهده کنید.

منبع: دانلود کتاب PDF آموزش و پرورش PHP , MySQL

کتاب مرجع برای تدریس برنامه نویسی php, MySQL

سر فصل های این کتاب برای تدریس بنده مورد استفاده قرار می گیرد و یکی از منابع آموزشی بنده است.

کنجکاوی: تفاوت های زبان های اسکریپت و برنامه نویسی

کنجکاوی: تفاوت های زبان های اسکریپت و برنامه نویسی

۱. تعریف کلی
🟢 زبان برنامه‌نویسی (Programming Language):
به هر زبانی گفته می‌شود که بتوان با آن منطق، الگوریتم و برنامه‌های کاربردی نوشت. مثال: C، Java، Python.
🟢زبان اسکریپتی (Scripting Language):
نوعی زبان برنامه‌نویسی است که معمولاً روی یک نرم‌افزار یا محیط دیگر اجرا می‌شود و بیشتر برای خودکارسازی کارها و اجرای دستورات نوشته می‌شود. مثال: PHP، JavaScript، Python (وقتی به شکل اسکریپت استفاده شود).

۲. نحوه اجرا
🟢زبان‌های برنامه‌نویسی کلاسیک (مثل C یا Java) معمولاً Compile می‌شوند (کد به زبان ماشین تبدیل و سپس اجرا می‌شود).

🟢زبان‌های اسکریپتی (مثل PHP یا JavaScript) معمولاً Interpret می‌شوند (کد خط‌به‌خط توسط مفسر اجرا می‌شود).

۳. سطح کاری
🟢زبان‌های برنامه‌نویسی می‌توانند نرم‌افزارهای سیستمی یا مستقل بسازند (مثلاً یک سیستم عامل کوچک یا برنامه دسکتاپ).

🟢زبان‌های اسکریپتی بیشتر روی نرم‌افزار موجود اجرا می‌شوند (مثلاً PHP روی وب‌سرور Apache یا Nginx اجرا می‌شود، JavaScript داخل مرورگر).

۴. مثال ساده
🟢اگر بخواهی یک نرم‌افزار حسابداری دسکتاپی بسازی: احتمالاً از C# یا Java استفاده می‌کنی.

🟢اگر بخواهی یک فرم آنلاین حسابداری روی وب درست کنی: از PHP یا JavaScript کمک می‌گیری.

۵. درباره PHP
🟢پی اچ پیPHP یک زبان اسکریپتی است چون:
خودش به‌صورت مستقل اجرا نمی‌شود، بلکه نیاز به وب‌سرور (مثل Apache یا Nginx) و مفسر PHP دارد.
کدهایش برای ایجاد صفحات پویا (Dynamic Pages) روی وب‌سرور تفسیر و سپس نتیجه (معمولاً HTML) به مرورگر ارسال می‌شود.

:key: پس نتیجه:
تمام زبان‌های اسکریپتی، در اصل نوعی زبان برنامه‌نویسی هستند.
اما به آن‌ها “اسکریپتی” می‌گوییم چون معمولاً برای کارهای سبک‌تر، خودکارسازی و اجرای روی یک محیط خاص (وب‌سرور یا مرورگر) استفاده می‌شوند.

مقدمه: آشنایی با مطالب مقدماتی وب

مقدمه: آشنایی با مطالب مقدماتی وب

* وب‌سرور (Web Server) چیست؟
وب‌سرور یک نرم‌افزار (مثل Apache یا Nginx) است که روی سرور نصب می‌شود و وظیفه دارد درخواست‌های مرورگر کاربران را دریافت کرده و پاسخ مناسب (صفحه وب) برگرداند. در واقع پلی است بین کاربر و فایل‌های وب‌سایت.

* چرا ما به شبیه‌ساز سرور مثل زمپ XAMPP نیاز داریم؟
چون برای اجرای زبان‌هایی مثل PHP لازم است فایل‌ها روی سرور پردازش شوند. وقتی اینترنت یا سرور واقعی نداریم، می‌توانیم با نرم‌افزاری مثل XAMPP یک سرور محلی (localhost) روی کامپیوتر خودمان بسازیم و فایل‌های PHP را اجرا کنیم.

* نرم‌افزار زمپ XAMPP چه بخش‌هایی دارد؟
آپاچیApache: وب‌سرور برای اجرای صفحات.
مای اس کیوال MySQL (یا MariaDB): دیتابیس برای ذخیره اطلاعات.
پی اچ پیPHP: زبان برنامه‌نویسی سمت سرور.
پی اچ پی مای ادمینphpMyAdmin: محیط گرافیکی برای مدیریت پایگاه داده‌ها.

* محیط کدنویسی VS Code چیست؟
وی اس کدVisual Studio Code (VS Code) یک ویرایشگر کد رایگان و قدرتمند است که از زبان‌های مختلف پشتیبانی می‌کند. امکاناتی مثل رنگ‌بندی کدها، تکمیل خودکار، خطایابی و نصب افزونه‌ها دارد و برای یادگیری PHP و توسعه وب بسیار مناسب است.

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

* تفاوت PHP با HTML و JavaScript چیست؟
اچ تی ام الHTML: فقط ساختار و محتوای صفحه را مشخص می‌کند.
سی اس اس CSS: ظاهر و زیبایی صفحه را طراحی می‌کند.
جاوا اسکریپت JavaScript: تعامل و پویایی سمت کاربر (مرورگر) را مدیریت می‌کند.
پی اچ پی PHP: پردازش داده‌ها و ارتباط با پایگاه داده در سمت سرور را انجام می‌دهد.

* مای اس کیو الMySQL چیست و چه نقشی در کنار PHP دارد؟
یک سیستم مدیریت پایگاه داده است. PHP داده‌ها را دریافت می‌کند و برای ذخیره‌سازی یا خواندن آن‌ها از MySQL استفاده می‌کند. مثلاً وقتی کاربر در یک سایت ثبت‌نام می‌کند، اطلاعاتش در MySQL ذخیره می‌شود.

* چرا PHP یکی از زبان‌های محبوب برنامه‌نویسی وب است؟
چون یادگیری‌اش ساده است، روی اکثر سرورها پشتیبانی می‌شود، رایگان و متن‌باز (Open Source) است و جامعه کاربری بزرگی دارد که منابع آموزشی و افزونه‌های زیادی تولید می‌کنند.

* پی اچ پیPHP چه قابلیت‌های مهمی دارد؟
امکان اتصال و کار با پایگاه داده‌ها (مثل MySQL).
پشتیبانی از کار با فرم‌ها (گرفتن اطلاعات از کاربر).
امکان تولید صفحات پویا (Dynamic Pages) بر اساس نیاز کاربر.
پشتیبانی از کتابخانه‌ها و فریم‌ورک‌های متنوع (مثل Laravel).

* آیا در فایل‌های PHP می‌توان کد HTML هم نوشت؟
بله فایل‌های PHP معمولاً با پسوند .php ذخیره می‌شوند و می‌توانند شامل هر دو نوع کد باشند:
کد HTML: برای نمایش ساختار و محتوای صفحه.
کد PHP: برای پردازش داده‌ها و ایجاد تغییرات پویا در همان صفحه.
مرورگر فقط خروجی نهایی (HTML تولیدشده توسط PHP) را می‌بیند، نه خود کدهای PHP.