روش صحیح برنامه نویسی

X7337X

Member
سلام

روش صحیح برنامه نویسی به چه شکلی هست؟

مثلا برای شرط ها از

PHP:
<?php

if($_POST)
    echo "okay";
else
    echo "nokay";

?>

استفاده بشه بهتره یا

PHP:
<?php

if($_POST)  {
    echo "okay";
} else {
    echo "nokay";
}

?>
???

لطفا دلیلشم توضیح بدید
 

ziXet

مدیر انجمن PHP/MYSQL
سلام

روش صحیح برنامه نویسی به چه شکلی هست؟

مثلا برای شرط ها از

PHP:
<?php

if($_post)
    echo "okay";
else
    echo "nokay";

?>

استفاده بشه بهتره یا

PHP:
<?php

if($_post)  {
    echo "okay";
} else {
    echo "nokay";
}

?>
???

لطفا دلیلشم توضیح بدید
هیچ فرقی نداره!
 

BehrouzPc

پــــادشــاه فــلــــش
هیچ فرقی نداره!
ولی روش دوم توصیه شده برای این که جداسازی بهتر انجام میشه و قابل درک تر هستش
ولی در کل هیچ فرقی نداره در شرطهای یک خطی بهتره روش اول استفاده کرد

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

Allahparast

Member
سلام
اگه برنامه کی داری باهاش کد می نویسی یه ادیتور معروف مثل
php designer
هست
{} اگه رو یکیش کلیک کنی کروشه مربوط به اون رو نشون میده در واقع محدوده یه شرط هست
PHP:
if(1==2){
echo "1==2";
}else{
echo "1==1";
}
تو روش اول محدوده ای نداری پس کارهات قاطی میشه بیشتر برنامه نویسها از روش اول برای شرط های یک خطی استفاده می کنند و کمتر در شرط های تو در تو استفاده میشه
if() else
که تو در یک خط جای بگیره
:rose: موفق باشی
 
آخرین ویرایش:

Y.P.Y

Well-Known Member
سلام،
روش های صحیح:
PHP:
<?php

if($_POST): echo("okay");
else: echo("nokay");
endif;

if($_POST)
{
echo("okay");
}
else
{
echo("nokay");
};

?>
حافظه دچار مشکل نمیشه، ایمن تر هم هست.
...
از Link های پایین امضام هم می تونید استفاده کنید.
موفق باشید.
 

ziXet

مدیر انجمن PHP/MYSQL
سلام،
روش های صحیح:
PHP:
<?php

if($_post): Echo("okay");
else: Echo("nokay");
endif;

if($_post)
{
echo("okay");
}
else
{
echo("nokay");
};

?>
حافظه دچار مشکل نمیشه، ایمن تر هم هست.
...
از link های پایین امضام هم می تونید استفاده کنید.
موفق باشید.
من اصلا اینو قبول ندارم!
ربطی به حافظه نداره!
این برای نوشتن دستورات تک خطی درست شده اگه مشکل داشت این قابلیتو نمیذاشتن!
ربطی به ایمنی هم نداره!!!!
 

Y.P.Y

Well-Known Member
!!
قبول داشته باشید...
ربطی به حافظه نداره!
ربطی به ایمنی هم نداره!!!!
این تماماً حرف من حقیر نیست:
در زبانهای برنامه نویسی استاندارد(به غیر از VB و +A شاید Delphi) وقتی شما دستوری رو می نویسید و اجرا می کنید، حافظه پایان اون دستور رو ; یا همون نقطه ویرگول می دونه و یکی از ریز دلایلی که باعث شد استاندارد معرفی بشن همینه.
عدم رعایتش باعث: کندی در پردازش، آسیب پذیری، سردرگمی در بررسی اولیه صحت دستورات، اشغال فضای حافظه(غیر قابل تخلیه)، بروز خطا(در نرم افزارهای سنگین) و از این قبیل هستش!

...
اگه مشکل داشت این قابلیتو نمیذاشتن!
php رو پروردگار خلق نکرده!!
یک گروه که به C و Unix/Linux مسلط هستن:
mysql_connect مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
@ مشکل سرعت داره، ولی گذاشتن(حلش هم نمی کنن).
Var مشکل امنیتی داره، ولی گذاشتن(بوده و حذف نشده).
Register_Globals مشکل امنیتی داره، ولی گذاشتن.
Class مشکل Clone داره، ولی حل نشده.
HTTP_Referer مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
HTTP_UserAgent مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
Globals مشکل امنیتی و حافظه بوجود میاره، ولی گذاشتن.
Query SQL بدون ` و ; مشکل امنیتی داره، ولی اجرا میشه و گذاشتن.
Include مشکل امنیتی داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
Include_Once مشکل امنیتی و سرعت داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
...
و 1000 تای دیگه...
موفق باشید.
 

X7337X

Member
از همتون ممنون

y.p.y عزیز لطف کردی چیزای زیادی از این پست + پستهای تو امضات یاد گرفتم

یا علی
 

ziXet

مدیر انجمن PHP/MYSQL
!!
قبول داشته باشید...

این تماماً حرف من حقیر نیست:
در زبانهای برنامه نویسی استاندارد(به غیر از vb و +a شاید delphi) وقتی شما دستوری رو می نویسید و اجرا می کنید، حافظه پایان اون دستور رو ; یا همون نقطه ویرگول می دونه و یکی از ریز دلایلی که باعث شد استاندارد معرفی بشن همینه.
عدم رعایتش باعث: کندی در پردازش، آسیب پذیری، سردرگمی در بررسی اولیه صحت دستورات، اشغال فضای حافظه(غیر قابل تخلیه)، بروز خطا(در نرم افزارهای سنگین) و از این قبیل هستش!

...

Php رو پروردگار خلق نکرده!!
یک گروه که به c و unix/linux مسلط هستن:
Mysql_connect مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
@ مشکل سرعت داره، ولی گذاشتن(حلش هم نمی کنن).
Var مشکل امنیتی داره، ولی گذاشتن(بوده و حذف نشده).
Register_globals مشکل امنیتی داره، ولی گذاشتن.
Class مشکل clone داره، ولی حل نشده.
Http_referer مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
Http_useragent مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
Globals مشکل امنیتی و حافظه بوجود میاره، ولی گذاشتن.
Query sql بدون ` و ; مشکل امنیتی داره، ولی اجرا میشه و گذاشتن.
Include مشکل امنیتی داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
Include_once مشکل امنیتی و سرعت داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
...
و 1000 تای دیگه...
موفق باشید.
اگه یه منبع هم برای اینا بگی دیگه کامله!!
 

Y.P.Y

Well-Known Member
عزیز شما برنامه نویسی نمی کنید؟ یا php نمی نویسید؟
 

X7337X

Member
Y.P.Y تمام مسائل امنیتی که تو امضات توضیح دادی خوندم
:rose:
مجبورم کردی از نو برنامه نویسی کنم

ایول نکات ظریف رو گفتی لطفا. حتما ادامه نکات رو ارسال کن نکات و اصول مهم در برنامه نویسی(3#) :rose:



در ضمن به جای اینکه کل کل کنید چرا بقیه تاپیک هارو جواب نمیدین؟

لطفا منو راهنمایی کنید در تاپیک زیر

http://www.forum.majidonline.com/showthread.php?t=115329
 
آخرین ویرایش:

justpersian

Member
php رو پروردگار خلق نکرده!!
یک گروه که به C و Unix/Linux مسلط هستن:
mysql_connect مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
@ مشکل سرعت داره، ولی گذاشتن(حلش هم نمی کنن).
Var مشکل امنیتی داره، ولی گذاشتن(بوده و حذف نشده).
Register_Globals مشکل امنیتی داره، ولی گذاشتن.
Class مشکل Clone داره، ولی حل نشده.
HTTP_Referer مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
HTTP_UserAgent مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
Globals مشکل امنیتی و حافظه بوجود میاره، ولی گذاشتن.
Query SQL بدون ` و ; مشکل امنیتی داره، ولی اجرا میشه و گذاشتن.
Include مشکل امنیتی داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
Include_Once مشکل امنیتی و سرعت داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
...
و 1000 تای دیگه...
موفق باشید.
اینجا یه منبع تایید شده است که روش های صحیح کد نویسی رو گفته : http://www.dagbladet.no/development/phpcodingstandard/#important
اما حرف های شما هم باید منبع داشته باشه !
همین طوری که نمیشه !
شما میگی include مشکل امنیتی داره اما خیلی ها ازش دارن استفاده می کنن و به مشکل امنیتی هم بر نخوردن !
پس منبع لطفا !
موفق باشید :wink:
 

ziXet

مدیر انجمن PHP/MYSQL
عزیز شما برنامه نویسی نمی کنید؟ یا php نمی نویسید؟
چه ربطی داره؟
من میگم منبعت چیه میگی برنامه نویسی نمکینی؟!!
-----------------------------------------
به زودی نرم افزار جدیدم رو میبینی
عجله نکن
 

Y.P.Y

Well-Known Member
در ضمن به جای اینکه کل کل کنید چرا بقیه تاپیک هارو جواب نمیدین؟
دوست عزیز کل کل نمی کنیم :rose: گفتگو می کنیم و تردید هارو از بین می بریم...
...
در مورد منبع/اثبات:
بیشتر مطالب تجربه حقیر هستش برای همین با مثال اثبات می کنم، بقیه رو هم منبع معرفی می کنم...
...
عدم رعایت ... باعث کندی در پردازش، آسیب پذیری، سردرگمی در بررسی اولیه صحت دستورات، اشغال فضای حافظه(غیر قابل تخلیه)، بروز خطا(در نرم افزارهای سنگین) و از این قبیل هستش!
منابع: خودم، Microsoft, PEAR, کتابهای فناوری اطلاعات، کتابهای برنامه نویسی(C - JavaScript - PHP - CPP ...)، کتابهای الکترونیکی اصول برنامه نویسی، مقالات برلند، Tip/Trick های برنامه نویسی و...
خودتون هم می تونید با یک Debuger/Monitoring قوی متجوجه این موضوع بشید.
...
@ مشکل سرعت داره، ولی گذاشتن(حلش هم نمی کنن).
Register_Globals مشکل امنیتی داره، ولی گذاشتن.
HTTP_Referer مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
HTTP_UserAgent مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
Globals مشکل امنیتی و حافظه بوجود میاره، ولی گذاشتن.
Query SQL بدون ` و ; مشکل امنیتی داره، ولی اجرا میشه و گذاشتن.
Include مشکل امنیتی داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
Include_Once مشکل امنیتی و سرعت داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
...
و 1000 تای دیگه...
همه اینها رو اثبات نمی کنم، اینجا انجمن Hacking نیست، ولی چند تاشو براتون باز می کنم:
@ مشکل سرعت داره، ولی گذاشتن(حلش هم نمی کنن).
PHP:
$_Int_V1= 398472389463864378543853458398472389463864378543853458398472389463864378543853458398472389463864378543853458398472389463864378543853458;
$_Str_V1= ' \@/ \# $ < @ <\# $  @/ # $ < \@ #/ $  @ # $\  @ #/ $  @ # $  ,@ #\ $  /@ # $  @ \# $  /@ # $>  @ # $ , @ /# $  @ # $ </ @ # $  @ # $  @> #/ $  @\ # $ ';
$_Str_V1.= htmlspecialchars(stripcslashes(trim(strtoupper(str_word_count(strip_tags(strtolower(str_repeat(htmlentities($_Str_V1 . $_Int_V1), 9999)))))))) . htmlspecialchars(stripcslashes(trim(strtoupper(str_word_count(strip_tags(strtolower(str_repeat(htmlentities($_Str_V1 . $_Int_V1), 9999))))))));
###################################################################
$_Int_V1= 398472389463864378543853458398472389463864378543853458398472389463864378543853458398472389463864378543853458398472389463864378543853458;
$_Str_V1= ' \@/ \# $ < @ <\# $  @/ # $ < \@ #/ $  @ # $\  @ #/ $  @ # $  ,@ #\ $  /@ # $  @ \# $  /@ # $>  @ # $ , @ /# $  @ # $ </ @ # $  @ # $  @> #/ $  @\ # $ ';
$_Str_V1.= @htmlspecialchars(@stripcslashes(@trim(@strtoupper(@str_word_count(@strip_tags(@strtolower(@str_repeat(@htmlentities($_Str_V1 . $_Int_V1), 9999)))))))) . @htmlspecialchars(@stripcslashes(@trim(@strtoupper(@str_word_count(@strip_tags(@strtolower(@str_repeat(@htmlentities($_Str_V1 . $_Int_V1), 9999))))))));
یک Timer قبل و بعد از هر کدوم قرار بدید و زمان Compile/پردازش رو مقایسه کنید.
این فقط در مورد 10 تا تابع هستش، در صفحه ای که حد اقل 100 تا تابع باشه چی؟!
Register_Globals مشکل امنیتی داره، ولی گذاشتن.
فکر نمی کنم نیازی به اثبات داشته باشه.
HTTP_Referer مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
http://forum.majidonline.com/showthread.php?t=114312l
HTTP_UserAgent مشکل امنیتی داره، ولی گذاشتن(حلش هم نمی کنن).
http://forum.majidonline.com/showthread.php?t=114312l
Globals مشکل امنیتی و حافظه بوجود میاره، ولی گذاشتن.
Global مهمترین دلایلش:
امنیت: سراسری تعریف کردن متغیر(از هر جایی فراخانی میشه)
حافظه: Scope تعریف کردن متغیر.
بنظرم متغیر رو در کاینات/سطل زباله تعریف می کنه!
Query SQL بدون ` و ; مشکل امنیتی داره، ولی اجرا میشه و گذاشتن.
مهمترین دلیلش SQL injection(concatenation) هستش و Abort شدن در هنگام Debug!!
Include مشکل امنیتی داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
در سیستم/سرور Log میشه! نبودش هم که...
Include_Once مشکل امنیتی و سرعت داره(به هیچ وجه نباید استفاده بشه)، ولی گذاشتن.
در سیستم/سرور Log میشه! سرعت Load رو هم خیلی پایین میاره! نبودش هم که...
به قول خارجیا once is very expensive_.
و بقیه هم که...
...
شما میگی include مشکل امنیتی داره اما خیلی ها ازش دارن استفاده می کنن و به مشکل امنیتی هم بر نخوردن !
شما یک وبسایت، یک نرم افزار و... به من معرفی کنید که بطور 100% استاندارد باشه؟؟!! هم Client-side هم Server-side؟؟!!
از هر 50 تا نرم افزار، فقط 1 شون 100% استاندارد هستش!!
نمونمش همین MajidOnline؟! VBulletin...
...
عزیز بنظرم شما در PHP تازه کار هستید، یا کلاً در برنامه نویس تازه کار هستید(مثل خود من)... در غیر این صورت باید همه اینهارو تجربه می کردید و خودتون بهش می رسیدید...
تشکر.
موفق باشید.
 
آخرین ویرایش:

justpersian

Member
من نه در php و نه در برنامه نویسی تازه کارم !
در ضمن من تو کل سایت هایی که درست کردم به هیچ وجه به مشکلاتی که میگی بر نخوردم شما تجربه کردی میگی اینطوریه ولی من تجربه نکردم و تو هیچ کدوم از منابع تایید شده ای (چه داخلی چه خارجی) اینا رو ندیده بودم و واسه اولین باره که می بینم ! البته اینم بگم که من کل چیزهایی رو که میگید رو نقض نمی کنم و چندتاشون رو قبول دارم !
خودم هم همیشه از require و require_once استفاده می کنم ولی جایی ندیدم که بگن include مشکل امنیتی داره !
 

X7337X

Member
درسته دیگه include مشکل امنیتی نداره

include و require هر کدوم برای ضمیمه کردن فایل استفاده میشه

اگه توی include فایل پیدا نشه یک Warning میده ولی اگه توی require فایل پیدا نشه Fatal error صادر میشه (واسه کسی که بخواد error هارو درست کنترول کنه)

وقتی once هم اضافه بشه فقط یک بار اضافه میشه (البته همه استاد هستین گفتم که دیگه ادامه ندین)

ببینید مبحث در مورد چی بود به کجا رسید
لطفا دیگه ادامه ندین

از همتون ممنون من به جوابم رسیدم :rose:
یا علی
 

Allahparast

Member
دوست عزیز ایکس 733 دوستان کل کل نمی کنن بحث هست اگه به این می گی کل کل برو مدارس علمیه ببین چه خبره :دی
سلام به وای پی وای و شاه کی عزیز میشه یکم بحث رو باز کنید جالب شده شرط های می تونن امنیت رو حاصل کنن ولی نمیشه گفت این دو مدل به امنیت مربوط میشه اگه میشه اثبات کنید
ولی بخش مشکلات رو تاحدی قبول دارم
منبع ها ت رو کامل اگه میشه بگو چون من سه تا کتاب پی اچ پی دارم مهرداد توانا جعفر نژاد قمی و سرابی میانجی زیاد در مورد مشکلات چیزی نگفتن ممنون میشم
تو توسعه هم تاحالا من این چیزها رو نه دیدم و نه شنیدم

ممنون
 
آخرین ویرایش:

Y.P.Y

Well-Known Member
سلام،
justpersian:
هیچ کدوم از منابع تایید شده ای(چه داخلی چه خارجی) اینا رو ندیده بودم...
Allahparast:
تو توسعه هم تاحالا من این چیزها رو نه دیدم و نه شنیدم...
طبیعیه عزیز... تو هیچ جا همچین چیزایی نمیگن! هیچ برنامه نویسی...!
چه کسی حاضره تجارب چندین سالشو(خودمو نمیگم) در چند مقاله در اختیاره بقیه قرار بده؟
به این وبسایتها نگاه کنید:
Shabgard, Simorgh, HIS, Ashyaneh, talkphp.com, Zend, php-security.org, phpdeveloper.org, securephpwiki.com, phpfreaks.com, phpbuilder.com, phpsec.org, handyphp.com
در کدوم از اینها مقالات واقاً کاربردی دیدید؟ 10 صفحه سیاه میکنن از مهندسی امنیت نرم افزار!
چند تا Tip/Trick کاربردی گفتن؟ یکی، دو تا، 5 تا، 10 تا، 50 تا...؟ در چه حدی؟ مبتدی؟ متوسط؟ حرفه ای؟
...
در مورد مطالب، واقاً 90% اعضا(در اکثر انجمن ها) کشش ندارن(طبیعیه)... یک نگاهی به سوالاتی که پرسیده میشه بندازید یا به جوابهایی که داده میشه... متوجه میشید.
کاربر فعال/دایمی: اون تگ htmlentites مشکل داره و Bypass میشه...! این مطالب هکینگ هستش...! فکر کردی کی هستی اینارو میگی. PHP قابلیت برنامه نویسی سوکت/Network رو نداره(ولی ASP داره)...! چند دفعه گفتم مطالب گذشته رو بالا نیارید! دوست گرامی به مبحث ادامه ندیأ! پیشنهاد میکنم در لینوکس IE رو امتحان کنید! مقاله شما غلط املایی داره...!
...
موفق باشید.
 
آخرین ویرایش:

amirepsilon

Active Member
دوستان به نظر من یک بایت ها یک بایته و برنامه نویس تا میتونه باید حواسش به بایت بایت های برنامش باشه
مگه میشه تتوی یه برنامه بود و نبود {} تاثیر نداشته باشه ؟
 

میلاد

Member
البته اون شرط بالا را به این صورت هم میتونید بنویسید که توی تست من سرعتش بیشتر از موارد ذکر شده بود.
PHP:
echo $_POST?'okay':'nokay';
 

جدیدترین ارسال ها

بالا